命令的执行顺序
linux命令的执行一般是,在终端中输入一行命令,执行完成,再继续输入下一命令。
顺序执行多条命令
简单顺序命令加 ; 完成
# some-tool代指安装的软件
$ sudo apt-get update;sudo apt-get install some-tool;some-tool
选择性的命令
顺序执行的命令有个问题,就是说多个顺序执行的命令可能存在依赖性,后一个命令需要前一个命令的结果,或者说是前一个命令正确无误的执行之后,后一个命令才能执行。
$ which cowsay>/var/null && cowsay -f head-in ohch~
&& 简单进行选择性的执行命令,如果前面命令的结果返回0就执行后边的命令否则不执行
上一个命令的状态码可以用$?进行查看
||与&&起着相反的效果
$ which cowsay>/dev/null && echo "exist" || echo "not exist
or
$ which cowsay>/dev/null || echo "exist" && echo "not exist"
第二种会出现一个问题,就是 || 会执行后边的echo "exist",这步没有问题。但是往下执行的话会出现 $?=0和$?!=0都可以的两种情况,因为&&既可以认为上边的命令返回的是$?=0,也可以认为返回的是$?!=0,有这种歧义会出现。
管道
管道通常指的是进程间的管道通信,前一个进程的输出直接作为下一个进程的输入。管道分为匿名管道和具名管道,匿名管道在命令行中用 | 表示,管道没有名称。
# 查看/etc目录有哪些文件和目录
$ ls -al /etc
# 屏幕不能显示完全,这时候可以用滚动条或快捷键滚动窗口来查看
# 使用管道ls的输出作为下一个命令(less)的输入,一行一行的看
$ ls -al /etc | less
cut命令
打印每一行的某个字段
# 打印目录下的以":"为分隔符的第一个字段和第六个字段
$ cut /etc/passwd -d ':' -f 1,6
# 前5个
$ cut /etc/passwd -c -5
# 前5个之后的(包含第5个)
$ cut /etc/passwd -c 5-
# 第5个
$ cut /etc/passwd -c 5
# 2~5包含第5个
$ cut /etc/passwd -c 2-5
grep命令
grep [命令选项]... 匹配的表达式 [文件]...
grep -rnI "shiyanlou" ~
# -r 递归搜索子目录的文件,-n表示打印匹配项行号,-I表示忽略二进制文件
# 查看环境变量中以"yanlou"结尾的字符串
$ export | grep ".*shiyanlou$"
wc命令
# 输出文件统计信息
$ wc /etc/passwd
# 行数
$ wc -l /etc/passwd
# 单词数
$ wc -w /etc/passwd
# 字节数
$ wc -c /etc/passwd
# 字符数
$ wc -m /etc/passwd
# 最长行字节数
$ wc -L /etc/passws
sort排序命令
# 默认字典排序
$ cat /etc/passwd | sort
# 反转排序
$ cat /etc/passwd | sort -r
# 按特定字段排序
$ cat /etc/passws | sort -t ':' -k 3