Redian新闻
>
一些 Shell 脚本的基本概念 | Linux 中国

一些 Shell 脚本的基本概念 | Linux 中国

科技
 
导读:如果你希望自动执行常规任务并使你的生活更轻松,那么使用 Shell 脚本是一个很好的选择。本文将向你介绍一些基本概念,这些概念将帮助你编写高效的 Shell 脚本。
本文字数:3488,阅读时长大约:4分钟

Shell 脚本是一种被设计用来运行命令行解释器 UNIX Shell 的计算机程序。Shell 脚本的各类变种被视作脚本语言。Shell 脚本执行的典型操作包括文件操作、程序执行和文本打印。设置环境、运行程序并执行任何必要的清理或日志记录的脚本称为封装。

识别 Shell 命令提示符

你可以通过查看终端窗口中的提示符符号来识别 Linux 系统的计算机上的 Shell 命令提示符的用户是普通用户还是超级用户。# 符号用于超级用户,$ 符号用于具有标准权限的用户。

基本命令

脚本附带了很多可以在终端窗口上执行的、用以管理您的计算机的命令。每个命令的详细信息可以在该命令附带的使用手册中找到。你可以使用如下命令来查看手册:

  1. man <command>

一些常用的命令有:

  1. date # 显示当前日期和时间
  2. cal # 显示当前月份日历
  3. df # 显示磁盘使用情况
  4. free # 显示内存使用情况
  5. ls # 列出文件和目录
  6. mkdir # 创建目录

每个命令都附带了几个可以一起使用的选项。你可以参考使用手册以了解更多的细节。man date 的输出如图 1 所示。

Figure 1: Manual of date command

重定向操作符

当你希望捕获文件中的命令输出或重定向到文件时,可以使用重定向操作符。

< 如显示不全,请左右滑动 >
命令描述
ls -l /usr/bin >file默认标准输出到文件
ls -l /usr/bin 2>file重定向标准错误到文件
ls -l /usr/bin > ls-output 2>&1重定向标准错误和标准输出到文件
ls -l /usr/bin &> ls-output重定向标准错误和标准输出到文件
ls -l /usr/bin 2> /dev/null写入 /dev/null,丢弃输出

大括号扩展

大括号扩展是 UNIX 提供的强大选项之一。它有助于在一行指令中使用最少的命令完成大量操作。例如:

  1. $echo Front-{A,B,C}-Back
  2. Front-A-Back, Front-B-Back, Front-C-Back
  1. $echo {Z..A}
  2. Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
  1. $mkdir {2009..2011}-0{1..9} {2009..2011}-{10..12}

这条命令会为 2009 到 2011 年里的每个月建立一个目录。

环境变量

环境变量是一个动态命名的值,它可以影响计算机上运行的进程的行为方式。此变量是进程运行环境的一部分。

< 如显示不全,请左右滑动 >
命令描述
printenv打印出所有环境变量的值。
set设置 Shell 选项
export导出环境到随后执行的程序
alias为命令创建别名

网络命令

网络命令对于排查网络问题和检查连接到客户机的特定端口非常有用。

< 如显示不全,请左右滑动 >
命令描述
ping发送 ICMP(网际网路控制讯息协定)数据包
traceroute打印数据包在网络中的路径
netstat打印网络连接信息、路由表、接口数据
ftp/lftp互联网文件传输程序
wget非交互式网络下载器
sshOpenSSH SSH 客户端 (远程登录程序)
scp安全拷贝
sftp安全文件传输程序

grep 命令

grep 命令用于查找系统和日志中的错误。它是 Shell 拥有的强大工具之一。

< 如显示不全,请左右滑动 >
命令描述
grep -h '.zip' file.list. 表示任意字符
grep -h '^zip' file.list以 zip 开头
grep -h 'zip$' file.list以 zip 结尾
grep -h '^zip$' file.list只含有 zip
grep -h '[^bz]zip' file.list不含 b 和 z
grep -h '^[A-Za-z0-9]' file.list所有文件名有效的文件

量词

下面是一些量词的例子:

< 如显示不全,请左右滑动 >
命令描述
?匹配出现 0 次或 1 次的元素
*匹配出现 0 次或多次的元素
+匹配出现 1 次或多次的元素
{}匹配出现特定次数的元素

文本处理

文本处理是当今 IT 世界中的另一项重要任务。程序员和管理员可以使用这些命令来切片、剪切和处理文本。

< 如显示不全,请左右滑动 >
命令描述
cat -A $FILE显示 $FILE 文件的所有内容
sort file1.txt file2.txt file3.txt > final_sorted_list.txt一次性将所有文件排序
ls - l | sort -nr -k 5按指定的第 5 列进行排序
sort --key=1,1 --key=2n distor.txt对第 1 列进行排序(默认按字母表顺序),对第 2 列进行数值排序
sort foo.txt | uniq -c查找重复的行并显示该行重复的次数
cut -f 3 distro.txt剪切第 3 列
cut -c 7-10剪切 7 - 10 字符
cut -d ':' -f 1 /etc/password分隔符 :
sort -k 3.7nbr -k 3.1nbr -k 3.4nbr distro.txt按第 3 列第 7 个字符、第 3 列第 1 个字符和第 3 列第 4 个字符排序
paste file1.txt file2.txt > newfile.txt合并两个文件
join file1.txt file2.txt按公共字段连接两个文件

窍门和技巧

在 Linux 中,我们可以通过使用简单的命令或控制选项返回到命令的历史记录。

< 如显示不全,请左右滑动 >
命令描述
clear清空屏幕
history查看保存命令的历史记录
script filename捕获文件中的所有命令执行

一些历史命令的技巧:

◈ CTRL + R:搜索命令历史
◈ !!number:执行编号为 number 的命令
◈ !! :执行上一条命令
◈ !?string : 执行包含 string 的上一条命令
◈ !string:执行以 string 开始的上一条命令
◈ export HISTCONTROL=ignoredups:忽略重复条目
◈ export HISTSIZE=10000:设置存储的历史行数

随着你对 Linux 命令逐渐熟悉,你将能够编写封装脚本。所有手动任务,如定期备份、清理文件、监控系统使用情况等,都可以使用脚本自动完成。在学习高级概念之前,本文将帮助您开始编写脚本。


via: https://www.opensourceforu.com/2022/05/the-basic-concepts-of-shell-scripting/

作者:Sathyanarayanan Thangavelu 选题:lkxed 译者:FYJNEVERFOLLOWS 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


LCTT 译者 :FYJNEVERFOLLOWS
🌟🌟
翻译: 4.0 篇
|
贡献: 124 天
2022-05-07
2022-09-07
https://linux.cn/lctt/FYJNEVERFOLLOWS
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
在 Linux 上学习 C 语言的五种方式 | Linux 中国将你的 Python 脚本转换为命令行程序 | Linux 中国是时候抛弃 32 位的 Linux,改用 64 位的了 | Linux 中国Pop!_OS 22.04 Linux 发行版现在支持树莓派 4 了 | Linux 中国你应该知道的 22 个基本的 Linux 网络命令 | Linux 中国用 ranger 在 Linux 终端管理你的文件 | Linux 中国She Traveled Solo to Escape Abuse. Now She Wants a Divorce.一个人的成熟,从三次放下开始魅影祖魂(一)没有人活在历史中在 Linux 上使用 Rhythbox 听音乐 | Linux 中国几个必不可少的 Linux 运维脚本!设置路径在 Powershell 中使用开源命令 | Linux 中国用 nftwatch 监控你的 Linux 防火墙 | Linux 中国修复 Ubuntu Linux 中 “Command ‘python’ not found” 的错误 | Linux 中国如何从 Windows 上用 SSH 连接到 Linux | Linux 中国如何在 Ubuntu/Linux 和 Windows 之间共享文件夹 | Linux 中国检查 Linux 磁盘使用情况 | Linux 中国升学顾问和买房中介差不多湖岛上度假:一波三折终于成行如何编写 C 程序在 Linux 上创建音乐播放列表 | Linux 中国如何在 Manjaro 和其他 Arch Linux 衍生品上安装 Discord 客户端 | Linux 中国Tuxedo 已对所有用户开放基于 Ubuntu 的 TUXEDO OS | Linux 中国故地重游上高楼 - One World ObservatoryLinux 上静态链接库工作原理 | Linux 中国在 Linux 中使用 Etcher 创建可启动 USB – 下载和使用指南 | Linux 中国如何在 Arch Linux 中安装深度桌面(DDE) | Linux 中国Rosalía 登意大利版《VOGUE》封面!诺基亚勒令一个开源 Linux 手机项目 “NOTKIA” 改名字 | Linux 中国初级:如何在 Arch Linux 中安装 Yay AUR 助手 | Linux 中国屏蔽非自由软件的大型 JavaScript 脚本的浏览器扩展 | Linux 中国在 VirtualBox 安装 Arch Linux 的新手操作指南 | Linux 中国如何在最小安装的 CentOS、RHEL、Rocky Linux 中设置互联网 | Linux 中国解决 Linux 中的 “Bash: Command Not Found” 报错 | Linux 中国关于 Linux 和 Git 的创造者 Linus Torvalds 的 20 件趣事 | Linux 中国Linux 下的 Docker 入门教程 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。