linux 常用shell脚本
常用:
1. linux {}符号:
(1) ${ }通常用于划定变量名的边界。如:当执行echo ”$aa“
的时候系统会打印变量$aa
的值,当执行echo "${a}a"
时打印的是${a}
和字母a
,所以使用中括号{ }来划定变量名的边界。如果不需要为变量名划分边界的话,$a
和${a}
是完全相等的。
(2) 在touch {a,b}.txt时,同时创建了a.txt,b.txt两个文件;
(3) 在linux通配符中,{n,m}表示匹配括号内包含的多个文件;(未验证)
2. << tag,将开始标记 tag 和结束标记 tag之间的内容作为输入,如:
# delimiter也可以是其它的自定义的符号,如 !等 command << delimiter document delimiter
3. $? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误);
%y 年份后两位数字 (00..99)
%Y 年
%m 月份 (01..12)
%H 小时 (00..23)
%d 日 (01..31)
%D 日期,等价于%m/%d/%y
%M 分钟 (00..59)
常用命令:%Y%m%d,如输出为 20220708
4. 日期
date: 输出系统当前日期
日期格式化:
$ date +%Y%d%m
输出:20160606
5. expect的使用
expect的使用:https://blog.51cto.com/loong576/2544712
expect的嵌套使用:https://blog.csdn.net/qq_46093534/article/details/118111777
6. <<- tag的作用
7. top 命令用于实时显示 process 的动态
top -c:显示完整的命令行而不截断;
top命令后输入大写的P:按CPU降序排序, 默认;
top命令后,输入大写的M按内存降序排序。
8. printf
更多请参考:https://www.runoob.com/linux/linux-shell-printf.html
%s: 指定输出字符串。 %d、%i: 指定输出十进制整数。 %o: 指定输出八进制数。 %x、%X: 指定输出十六进制数。 %f、%F: 指定输出浮点数。 %e、%E: 以科学计数法输出浮点数。 %c: 指定输出字符。
如:输出123的16进制表示形式:printf '%x\n' 123
9.dirname
# 在linux shell中反引号 `` 的作用和推荐使用$() 是等效的,表示该包括的内容是 shell 命令,如 now = `date` 表示将日期负值给变量 now;
# dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符, # 删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname和 basename # 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。 # 比如: $ dirname /usr/bin/sort # 输出:/usr/bin $ dirname /usr/bin # 输出:/usr # 进入当前脚本所在目录($0 的作用是返回当前值行的shell脚本的名称,即 shell 脚本本身的名字) cd `dirname $0` # 或者 cd $(dirname $0) #进入当前脚本所在的上级目录 cd `dirname $0`/.. # 脚本中获取 脚本文件所在的绝对路径 shellPath1=$(dirname $0) # 或者 shellPath1=`dirname $0` echo $shellPath1
10. $0 $1... 的作用
$0 的作用是返回当前值行的shell脚本的名称,即 shell 脚本本身的名字;
$1-$9这9个分别代表脚本执行命令第一个参数、第二个参数、第三个参数……第9个参数。
如,echo "First argument: $1"
#!/bin/bash echo "Script name: $0" echo "First argument: $1" echo "Second argument: $2" # 在运行脚本时,我们可以给它传递两个参数,比如: ./test.sh hello world # 这时候脚本会输出: Script name: test.sh First argument: hello Second argument: world
11. sh -c 命令
-c选项后面通常跟一个字符串命令,也就是用于从字符串执行命令。sh -c 的常见场景是在脚本中执行一些复杂的命令。
如:切换到目录/home/test/shell/ 下,并在该目录下执行sh start.sh 命令。脚本为 sh -c 'cd /home/test/shell/;sh start.sh'。
参考:https://www.runoob.com/linux/linux-comm-date.html
其它: