1. sort
cat /etc/passwd | sort -t ":" -k 1 -n
-t: 分隔符
-k : key 选取分割后的哪一栏
-n数字排序
2. cut
cat /etc/passwd | cut -d ":" -f 1
-d 分隔符
-f 选取分隔后的哪一栏
3. 将指令运行结果存入相应变量的办法
cd /lib/modules/'uname -r'/kernel
cd /lib/modules/$(uname -r)/kernel
var=`uname -r`
var=$(uname -r)
Example:
cd /lib/modules/'uname -r'/kernel
67 cd /lib/modules/$(uname -r)/kernel
4. && 与||在script中的运用
cmd1&&cmd2 cmd1成功,则运行cmd2
cmd1|| cmd2 cmd1失败,则运行cmd2
Example:
ls /tmp/abc && echo "folder exist!" || echo "folder does not exist"
5. sed 用法
stream editor, 用于对某文件中特定行数进行编号,熟练应用后效率较VI还要高, 其后的指令必须用单引号引起来
nl /etc/passwd | sed '2,5d'、
删除2至5行
nl /etc/passwd | sed '2a drink tea'
在2至5行的内容后加drink tea
nl /etc/passwd | sed '2i drink tea'
在2至5行的内容前加drink tea
nl /etc/passwd | sed '2,5c No 2-5 number'
将2至5行内容换成No 2-5 number
nl /etc/passwd | sed -n '5,7p'
只显示5到7行内容
sed -i '$a # This is a test' ~/.bashrc
直接编辑文件,在文件末尾加入一行。
6. 特殊变量
$# 传送给命令Shell的参数序号
$- 在Shell启动或使用set命令时提供选项
$? 上一条命令执行后返回的值
$$ 当前shell的进程号
$! 上一个子进程的进程号
$@ 所有的参数,每个都用双括号括起
$* 所有参数,用双括号括起
$n 位置参数值,n表示位置
$0 当前shell名
$* 所有的命令行参数
$@ 同上
"$*" 把所有命令行参数当作一个来处理
"$@" 获取整个参数列表,并将它分隔成不同的参数
7. 对特殊文件的操作(以横线开头)
在查看 rm 的 man 手册时有这么一行提示:
rm ./-foo
同样此方法对于其它命令都是通用的
vi -- -c 将生成一个 -c 文件
ls -l -- -c 将显示 -c 文件