Linux Shell中的简单命令组合使用

本文通过具体实例解析Linux命令组合的运用技巧,包括管道、重定向、cat、awk、sort、uniq、head等命令的组合使用,帮助初学者深入理解Linux命令行的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令组合

  • Linux中有着众多的命令,不同于直觉化的图形化窗口,我们并不能容易的理解Linux命令,但使用这些命令能让我们更接近系统底层调用的细节
  • Linux命令较之于图形化窗口更加强大,而且在shell中我们可以组合使用Linux命令,发挥更强的作用
  • 本文将借助一份示例来介绍一些简单的Linux命令组合

我的配置

  • Linux版本:Linux Mint
  • shell版本:zsh

示例

  • 假设有文件1.txt记录着西邮Linux兴趣小组几位大佬们悲惨的成绩(图一乐)
zzw   环境编程    33
rzj   环境编程    55
lsh   网络编程    33
hzn   网络编程    55
zzy   数据结构    33
zt    计算机组成原理  55
lsh   计算机组成原理  55
zzy   计算机组成原理  55
xjj   数据结构    33
  • 解释以下命令:
  1. cat 1.txt | awk '{print $1}' | sort | uniq -c | sort -r -n | head -n 5
  2. grep "rzj" > 2.txt < 1.txt
  3. echo "the answer is 42" > 1.txt

SHOW

  • 理解上面的命令对于Linux菜鸟是一种挑战,但我们可以一步一步的剖析以上命令,然后完全掌握它
  • 首先我们通过vim命令建立一份与示例相同的文档,然后来逐步分析
    创建文档

第一条

cat 1.txt | awk '{print $1}' | sort | uniq -c | sort -r -n | head -n 5

首先,我们尝试一下执行此条命令,看看会发生什么
1
输出很奇怪,让我们来好好分析一下

管道

  • 首先,我们会注意到多个命令之间是通过 ‘|’(管道符) 来连接的,‘|’即‘管道’,要理解这个复杂的命令,我们就要首先理解什么是管道

管道示例

  • 在前后两个命令通过管道相连后,就产生了输入输出上的连接
  • 左侧命令向标准输入写入,右侧从标准输入读取,那么这两个命令就可以形成一个管道
  • 管道命令只处理前一个命令的正确输出,不处理错误输出
  • 管道也称管道重定向,与重定向(‘>’)有一些差别

每条命令仅提及所使用到的部分,不会详细讲述


cat

cat命令在man手册的定义为:

concatenate files and print on the standard output

此处仅使用了cat的基础用法

cat 1.txt

执行后效果为将1.txt的内容显示到标准输出也就是当前的shell中

awk

在这里插入图片描述

awk在man手册中名为gawk(gawk是awk的GUN实现),定义为:

pattern scanning and processing language

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具
此处对awk的用法为

awk '{print $1}'

即每行按空格或TAB分割,输出文本中的1项
需要注意的是,从这里开始管道已经发挥作用,awk接受的正是cat的 标准 正确 输出

sort

在这里插入图片描述
man手册中对sort的定义为:

sort lines of text files
  • 此处对sort的使用没有附加任何命令行参数,其作用为:
  • 以默认的方式将文本文件的第一列以 ASCII 码的次序排列,并将结果输出到标准输出(此处sort接受的输入依旧是前一个命令awk的标准正确输出,往后不再赘述)

uniq

在这里插入图片描述
mam手册中对uniq的定义为:

report or omit repeated lines

其-c(count)命令行参数定义为:

prefix lines by the number of occurrences

所以,对于uniq -c的理解并不难

sort -r -n

在这里插入图片描述
此处使用了sort的两个命令行参数
man手册对-r(reverse)的定义为:

reverse the result of comparisons

-n(numric-sort):

compare according to string numerical value
  • -r就是反转排序,不难理解
  • -n是按照数值排序,在此处也就是按照姓名前的数字大小排序,因为此处都是10以内的数字,所以并未凸显出-n的特性
  • 若a的出现次数为10次,b为3次,如果不添加-n,就会出现3比10大的现象,因为sort此时只会关注两个数字的第一位,即3>1

head

在这里插入图片描述
终于来到最后一个命令
man手册对head的定义为:

output the first part of files

-n(lines NUM) 的定义为:

print the first NUM lines instead of  the  first  10;  
with  the leading '-', 
print all but the last NUM lines of each file

由上可知

head -n 5为打印前五行
head -n -5为打印除后5行外全部内容

至此,我们已经可以理解第一条的全部内容,其重点为管道文件处理

第二条

grep "rzj" > 2.txt < 1.txt

在这里插入图片描述

重定向

第二条相比于第一条简短了很多,但还是包含着奇怪的符号

  • ‘>’ 与 ‘<’
    这两个符号是重定向符号,与管道重定向类似,依旧是操作输入与输出
    在此处该命令可视为
command > 2.txt < 1.txt

等同于

command < 1.txt > 2.txt

即使用command命令操作1.txt并将产生的副本输出到2.txt,1.txt的内容保持不变

grep

man手册对其定义为:

print lines that match patterns

关于grep的完整使用此处不做提及,针对此条定义我们已经可以理解第二条命令:
即在1.txt中寻找到包含特定字符的一行,并将获得的结果保存到2.txt

第三条

echo "the answer is 42" > 1.txt

在这里插入图片描述
man手册对echo的定义为:

display a lint of text

此处使用>输出重定向将echo的标准输出输入到了1.txt之中,覆写了1.txt的原有内容
(如果使用>>就不会覆写1.txt的内容,而是将echo的标准输出追加到1.txt的末尾)


参考:

  1. 每天学点Linux命令之grep 和 wc命令 — !管道命令!
  2. Linux Shell管道详解
  3. linux sort 命令详解
  4. Linux Shell重定向(输入输出重定向)精讲
  5. Linux命令大全
  6. man手册
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值