Linux 命令执行顺序控制与管道 顺序执行 管道 grep 查找 wc 计数工具 sort 排序 uniq 去重

顺序执行、选择执行、管道、cut 命令、grep 命令、wc 命令、sort 命令等,高效率使用 Linux 的技巧

只需要在命令间加;

sudo apt-get update;sudo apt-get install some-tool

选择执行

另一种是要修上一条执行成功才执行下一条,那么就用&&

|| 就与它相反,是当上一条不成功执行下一条

管道

管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。管道又分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。

我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中我们已经多次使用到了。具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道。

|

ls -al /etc

ls -al /etc | less

由于内容太多,所以通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看。

cut 过滤

打印/etc/passwd文件中以:为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录

cut /etc/passwd -d ':' -f 1,6

# 前五个(包含第五个)
cut /etc/passwd -c -5
# 前五个之后的(包含第五个)
cut /etc/passwd -c 5-
# 第五个
cut /etc/passwd -c 5
# 2到5之间的(包含第五个)
cut /etc/passwd -c 2-5

grep 查找

grep [命令选项]... 用于匹配的表达式 [文件]...

查找目录下所有包含abc的文本文件

grep -rnI "abc" ~

-r 表示递归搜索子目录文件

-n 表示打印匹配项行号

-I 表示忽略二进制文件

查看环境变量中以abc结尾的字符串

export | grep ".*abc$"

$ 代表一行的末尾
.* 代表任意字符

wc 计数工具

wc 命令用于统计并输出一个文件中行、单词和字节的数目

# 行数
wc -l /etc/passwd
# 单词数
wc -w /etc/passwd
# 字节数
wc -c /etc/passwd
# 字符数
wc -m /etc/passwd
# 最长行字节数
wc -L /etc/passwd

结合管道来操作一下,下面统计 /etc 下面所有目录数

ls -dl /etc/*/ | wc -l

sort 排序

cat /etc/passwd | sort

cat /etc/passwd | sort -r

cat /etc/passwd | sort -t':' -k 3

cat /etc/passwd | sort -t':' -k 3 -n

-t参数用于指定字段的分隔符,这里是以":"作为分隔符;-k 字段号用于指定对哪一个字段进行排序。这里/etc/passwd文件的第三个字段为数字,默认情况下是以字典序排序的,如果要按照数字排序就要加上-n参数

uniq 去重

过滤重复行

查看最近执行过的命令,去除重复

history | uniq