Linux学习之认识Linux的基本指令
上一篇博客我们了解并学习了Linux的前世今生、如何安装Linux的云服务器以及利用Xshell登录Linux服务器。这篇博客我们将深入学习Linux,了解它的基础指令
作者的个人gitee:楼田莉子 (riko-lou-tian) - Gitee.com
目录
Linux系统下复制粘贴
Linux基础指令
pwd指令
whoami指令
clear指令
ls指令
mkdir指令
cd指令
touch指令
rmdir指令&&rm指令
tree指令
man指令
cp指令
mv指令
cat指令
more指令
less指令
head指令
tail指令
date指令
1. 在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记
2. 在设定时间
3. 时间戳
cal指令
find指令
which指令
whereis指令
alias 指令
grep指令
top指令
zip/unzip指令
编辑 关于rzsz
tar指令(重点!!)
案例:
bc指令
unname-r指令
如何查看你的Linux体系架构(即查看CPU架构)
关机
扩展的命令
几个重要的键位置
shell命令及其运行原理
Linux的相关基本理论
路径
文件
Linux下文件输入输出
管道
应用场景
如何确认自己的云服务器是centos还是ubuntu
Linux系统下复制粘贴
复制:CTRL+insert(部分电脑下为需要配合fn使用)
粘贴:shift+insert
在Linux系统中,CTRL+C可以终止目前正在进行的操作
Linux基础指令
pwd指令
语法:
pwd
功能:显示用户当前目录
whoami指令
语法:
whoami
作用:表示访问的用户是谁
clear指令
语法:
clear
作用:清除屏幕
输入clear后的效果
ls指令
语法:
ls [选项] [目录/文件]
功能:对于目录,该命令列出该目录下所有的子目录与文件。对于文件,将列举出文件名以及其他信息
在Linux中,我们说的目录就是通常情况下说的”文件夹“
常用选项:
-a:列举目录下所有的文件,包括以 . 开头的隐含文件
-d:将目录像文件一样显示,而不显示其下的文件。入:ls -d指定目录
-i:输出文件的i节点。如:ls -ai 指定文件
-k:以k字节形式表示文件的大小。如ls -alk 指定文件
-l:列出文件的详细信息
-n:用数字的UID、GID代替名称(介绍UID、GID)
-F:在每个文件名后附上一个字符说明该文件类型(目录类型识别)。“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套连子(sockets)
-r:对目录反向排序
-t:以时间排序
-s:在l文件名后输出该文件的大小(大小排序)
-R:列出所有子目录的文件(递归)
-1:一行只输出一个文件
mkdir指令
语法:
mkdir[选项] dirname...
功能:制作一个名为:dirname的新的目录/文件
常用选项:
-p/--parents:可以是一个路径名称。此时若路径中某些目录尚且不存在,加上此选项后系统将自动建立好那些尚不存在的目录,即一次建立多个目录
mkdir -p a/b/c/d:创建一系列路径
cd指令
语法:
cd 目录名
功能:更改当前目录。将当前工作目录改变到目标目录下。
我们可能会发现这样的事情。
接下来我们将深入理解:
图中 ~是当前的家目录
当输入cd ~和pwd后,会有两种显示形式
cd - :回退到上一次路径
cd ~ :家目录的路径
touch指令
语法:
touch [选项]... [文件]...
功能:touch命令参数可更改文档或目录的日期时间,包括时间和更改时间,或者新建一个不存在的文件
选项:
-a:只改变access时间
-c:只改变modify时间
change时间
rmdir指令&&rm指令
与mkdir相对应的命令。rmdir指令是删除命令
语法:
rmdir [-p] [dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p: 当子目录被删除后如果父目录也变空目录的话连带着父目录一起删除
rm可以同时删除文件或目录
语法:
rm [-f-i-r-v] [dirname/dir]
适用对象:所有使用者
功能:删除文件或者目录
常用选项:
-f:即改变文件属性为只读(即写保护),亦或者直接删除
-i:删除前逐一询问
-r:删除目录及其下所有文件
tree指令
以横板树状图的形式展示你的Linux系统中所有的目录及其文件
但是某些读者朋友的tree命令无法使用,是因为tree命令不是自带的,可能需要你后续去安装。
不过安装软件需要root账号,普通账号无法安装
如何安装tree呢?
如果是centos,输入
yum install -y -tree
如果是ubuntu,输入:
apt install -y -tree
tree指令可能会过多,如果不想过多的展示可以按CTRL +C停止下来
man指令
Linux命令有很多参数,我们不可能全基础,可以通过联机手册查找帮助
语法:
man [选项] 命令
常用选项:
-k:根据关键字搜索联机帮助
num:只能在num章节找
-a:将所有章节的全部显示出来。比如man printf 它缺省从第一章开始搜索,知道就停止。用a选项,按q推出,会往后面搜索,直到所有的章节都搜索完毕
man手册分为9章(不同系统可能有所差别)
章节 | 内容分类 | 查看方式示例 | 应用示例 |
---|---|---|---|
1 | 用户命令 | man 1 ls | 普通用户可执行命令,如 cp , grep , mkdir 。 |
2 | 系统调用 | man 2 open | 内核接口函数,如 fork() , read() , write() 。 |
3 | 库函数 | man 3 printf | 标准库函数,如 malloc() , strlen() , pthread_create() 。 |
4 | 设备文件与特殊文件 | man 4 tty | 设备文件说明,如 /dev/sda (硬盘)、/dev/null (空设备)。 |
5 | 文件格式与配置文件 | man 5 passwd | 配置文件格式,如 /etc/fstab , /etc/ssh/sshd_config , crontab 文件格式。 |
6 | 游戏与屏保 | man 6 bastet | 系统游戏,如俄罗斯方块 (bastet )、射击游戏 (ninvaders )。 |
7 | 杂项 | man 7 man | 协议、宏包、文件系统等,如 utf-8 编码、groff 文本格式化工具。 |
8 | 系统管理命令 | man 8 fdisk | 需 root 权限的命令,如 iptables , useradd , systemctl 。 |
9 | 内核例程 | man 9 printk | 内核开发者使用的内部 API,如 printk() (内核日志函数)。 |
man指令应用举例:
man printf
甚至可以通过man查询man是干什么的
但是Linux系统的man指令通常只用来搜索C语言相关的接口,高级语言如C++、Java是没办法用man指令在Linux上查询的。
cp指令
语法:
cp [选项] 源文件\目录 目标文件\目录
功能:复制文件或者目录
说明:
1、cp指令用于复制或者目录
2、如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中
常用选项:
-f\-force:强行复制文件或者目录,不论文件或者目录是否存在。
-i\-interactive:访问文件前先询问用户
-r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或者目录的形态不属于目录或者符号链接,则一并视为普通文件处理。
mv指令
mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move (rename) files,经常⽤来备份⽂件或者⽬录
语法:
mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
功能:
1、视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
2、当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
3、当第二个参数是已经存在的目录名称的时候,源文件或目录可以有多个,mv指令将各个参数指定的源文件均移动到目标目录中。
常用选项:
1、-f :force ,表示强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
2、-i:若没目标文件已经存在的时候,就会询问是否覆盖
测试:
cat指令
语法:
cat [选项] [⽂件]
功能:查看⽬标⽂件的内容
查看文件属性用 ls\ll指令,查看文件内容用cat指令
常用选项:
1、-b 对⾮空输出⾏编号
2、-n 对输出的所有⾏编号
3、-s 不输出多⾏空⾏
more指令
语法:
more [选项]
功能:more命令,功能类似 cat
常用选项:
-n 指定输出⾏数
q 退出more
less指令
语法:
less [参数] ⽂件
功能:less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽且less在查看之前不会加载整个⽂件。
less ⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具。同时less 的⽤法⽐起 more 更加的有弹性,在 more 的时候,我们并没有办法向前⾯翻, 只能往后⾯看。
但若使⽤了 less 时,就可以使⽤ [pageup] [pagedown] 等按键的功能来往前往后翻看⽂件,更容易⽤来查看⼀个⽂件的内容
除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜
常用选项:
-i 忽略搜索时的⼤⼩写
-N 显⽰每⾏的⾏号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前⼀个搜索(与 / 或 ? 有关)
N:反向重复前⼀个搜索(与 / 或 ? 有关)
q:quit
cat指令适合查看小文件(日常写的代码,配置文件),more指令和less指令适合查看大文件(日志文件)
head指令
head 与 tail 就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head ⽤来显⽰档案的开头⾄标准输出中,⽽ tail 想当然尔就是看档案的结尾。
语法:
head [参数]... [⽂件]...
指令:head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。
选项:-n<⾏数> 显⽰的⾏数
tail指令
语法:tail 命令从指定点开始将⽂件写到标准输出.使⽤tail命令的-f选项可以⽅便的查阅正在改变的⽇志⽂件,tail -f filename会把filename⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容
功能:⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
选项:
1、-f 循环读取
2、-n<⾏数> 显⽰⾏数
date指令
指定格式显示时间为:
date +%Y:%m:%d
用法:
date [OPTION]... [+FORMAT]
1. 在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记
列表如下:
%H :⼩时(00..23)
%M :分钟(00..59)
%S :秒(00..61)
%X : 相当于 %H:%M:%S
%d : ⽇ (01..31)
%m :⽉份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
2. 在设定时间
date -s //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对⽇期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
3. 时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@时间戳数字(用date +%s获取)
Unix时间戳(英⽂为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1⽉1⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
cal指令
cal命令可以⽤来显⽰公历(阳历)⽇历。公历是现在国际通⽤的历法,⼜称格列历,通称阳历。“阳历”⼜名“太阳历”,系以地球绕⾏太阳⼀周为⼀年,为西⽅各国所通⽤,故⼜名“西历”。
命令格式:
cal 参数 [年份]
功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份
常用选项:
-3 显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
-y 显⽰当前年份的⽇历
-j 显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
find指令
语法:
find pathname -options
功能:⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。
即使系统中含有⽹络⽂件系统( NFS),find命令在该⽂件系统中同样有效,只你具有相应的权限。
在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)
其中
find ~/
会去目录树查找
我们将来学习的大部分指令都是Linux系统下固定目录下可执行文件!
常用选项:
-name 按照⽂件名查找⽂件
其他选项需要在查,这个命令其实⽐较复杂
which指令
功能:搜索系统指定的命令
举例:
其中usr是用户目录,bin是二进制目录、
whereis指令
功能:⽤于找到程序的源、⼆进制⽂件或⼿册
举例:
alias 指令
功能:设置命令的别名
执行命令优先搜索别名,不存在在/usr/bin/xx搜索
如图所示,加上 --color=auto后,目录会显示为彩色,普通文件不显示彩色(如文本文件,二进制文件)
grep指令
语法:
grep [选项] 搜寻字符串 ⽂件
功能:在⽂件中搜索字符串,将找到的⾏打印出来
常⽤选项:
-i :忽略⼤⼩写的不同,所以⼤⼩写视为相同
-n :顺便输出⾏号
-v :反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏
top指令
功能:查看目前运行的任务
常用选项:
-d:刷新的时间间隔
-n:刷新的次数
-q:退出
zip/unzip指令
语法:
zip 压缩⽂件.zip ⽬录或⽂件
功能:将⽬录或⽂件压缩成zip格式
实际上打包压缩是为了网络传输
常用选项:
-r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理
可能你的Linux系统默认没有安装zip和unzip。我们可以通过这种方式验证:输入zip当出现以下内容表明你已经安装了zip和unzip

关于rzsz
这个⼯具⽤于 windows 机器和远端的 Linux 机器通过 XShell 传输⽂件. 安装完毕之后可以通过拖拽的⽅式将⽂件上传过去.
sudo yum/apt install -y lrzlz
现场演⽰windows和Linux如何互传⽂件
压缩方法:
应用举例:
压缩:
tar指令(重点!!)
打包/解包,不打开它,直接看内容
语法:
tar [-cxtzjvf] ⽂件与⽬录 ....
参数:
-c :建⽴⼀个压缩⽂件的参数指令(create 的意思);
-x :解开⼀个压缩⽂件的参数指令!
-t :查看 tarfile ⾥⾯的⽂件!
-z :是否同时具有 gzip 的属性?亦即是否需要⽤ gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要⽤ bzip2 压缩?
-v :压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!
-f :使⽤档名,请留意,在 f 之后要⽴即接档名喔!不要再加参数!
-C : 解压到指定⽬录
压缩:
tar czf target.tgz XXX
tar xzf target.tgz
案例:
一、将整个 /etc ⽬录下的⽂件全部打包成为 `/tmp/etc.tar`
root@linux ~]$ tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]$ tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]$ tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
特别注意,在参数 f 之后的⽂件档名是⾃⼰取的,我们习惯上都⽤ .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file 〜
如果加 j 参数,则以 .tar.bz2 来作为附档名啊〜
上述指令在执⾏的时候,会显⽰⼀个警告讯息:『`tar: Removing leading `/" from member names`』那是关于绝对路径的特殊设定。
二、查阅上述 /tmp/etc.tar.gz ⽂件内有哪些⽂件?
[root@linux ~]$ tar -ztvf /tmp/etc.tar.gz
由于我们使⽤ gzip 压缩,所以要查阅该 tar file 内的⽂件时,就得要加上 z 这个参数了!这很重要的!
三、将 /tmp/etc.tar.gz ⽂件解压缩在 /usr/local/src 底下
[root@linux ~]$ cd /usr/local/src
[root@linux src]$ tar -zxvf /tmp/etc.tar.gz
在预设的情况下,我们可以将压缩档在任何地⽅解开的!以这个范例来说,我先将⼯作⽬录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,则解开的⽬录会在 /usr/local/src/etc 呢!另外,如果您进⼊ /usr/local/src/etc,则会发现,该⽬录下的⽂件属性与 /etc/ 可能会有所不同
四、在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开⽽已
[root@linux ~]$ cd /tmp
[root@linux tmp]$ tar -zxvf /tmp/etc.tar.gz etc/passwd
我可以透过 tar -ztvf 来查阅 tarfile 内的⽂件名称,如果单只要⼀个⽂件,就可以透过这个⽅式来下达!注意到! etc.tar.gz 内的根⽬录 / 是被拿掉了!
五、将 /etc/ 内的所有⽂件备份下来,并且保存其权限!
[root@linux ~]$ tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本⽂件的属性时!
六、在 /home 当中,⽐ 2005/06/01 新的⽂件才备份
[root@linux ~]$ tar -N "2005/06/01" -zcvf home.tar.gz /home
七、我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]$ tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
八、将 /etc/ 打包后直接解开在 /tmp 底下,⽽不产⽣⽂件!
[root@linux ~]$ cd /tmp
[root@linux tmp]$ tar -cvf - /etc | tar -xvf -
这个动作有点像是 cp -r /etc /tmp 啦〜依旧是有其有⽤途的!
要注意的地⽅在於输出档变成 - ⽽输⼊档也变成 - ,⼜有⼀个 | 存在〜 这分别代表 standard output, standard input 与管线命令啦
bc指令
bc命令可以很⽅便的进⾏浮点运算
支持管道操作的Linux内置计算器
unname-r指令
语法:
uname [选项]
功能:uname⽤来获取电脑和操作系统的相关信息。
说明:
-a或‒all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
lsb_release -a:查看操作系统版本
cat /ect/os-release:查看操作系统版本
如何查看你的Linux体系架构(即查看CPU架构)
unname -a
关机
关机不建议在云服务器上使用,尤其是项目,会造成很多损失和麻烦
shutdown[选项]
-h:将系统的服务停掉后,⽴即关机。
-r:在将系统的服务停掉之后就重新启动
-t sec:-t 后⾯加秒数,亦即『过⼏秒后关机』的意思
扩展的命令
几个重要的键位置
[Tab] 具有"命令补全"和"档案补⻬"的功能
[ctrl] -c 让当前的程序"停掉"
[ctrl] -d 通常代表着:『键盘输⼊结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以⽤来取代exit
shell命令及其运行原理
广义操作系统:操作系统内核、外壳程序(shell命令行,图形化界面)、必要的应用软件
Linux严格意义上说的是⼀个操作系统,我们称之为“核⼼(kernel)“ ,但我们⼀般⽤⼾,不能直接使⽤kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使⽤kernel?
从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:
1、将使⽤者的命令翻译给核⼼(kernel)处理
2、同时,将核⼼的处理结果翻译给使⽤者
对⽐windows GUI,我们操作windows 不是直接操作windows内核,⽽是通过图形接⼝,点击,从⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)。
shell 对于Linux,有相同的作⽤,主要是对我们的指令进⾏解析,解析指令给Linux内核。反馈结果在
帮助理解:如果说你是⼀个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你⼼动的MM⼩花。你看上了⼩花,但是有不好意思直接表⽩,那就让你你家⼈找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给⼩花,⽽我们找到媒婆
姓王,所以我们叫它王婆,它对应我们常使⽤的bash。
通过内核运⾏出结果,通过shell解析给⽤⼾。
Linux的相关基本理论
路径
Linux系统中磁盘文件和目录组成一科目路数,每个节点都是目录或者文件。普通文件一定是目录树的叶子结点;目录可能是叶子(空目录)也可能是路上节点
路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定文件,而定位文件就需要具有唯一性的方案来定位文件。其中任何一个节点都只有一个父节点。所以从根目录开始定位指定文件,路径具有唯一性。
绝对路径:一般从/开始,不依赖其他目录的定位文件的方式
相对方式:相对于当前用户所处的目录,定位文件的路径方式
绝对路径一般不会随着用户路径变化丧失唯一性,一般在特定服务配置文件被使用;相对路径因为它便捷,一般在命令行使用较多。
相对路径可能会失效,但是对于一个确定的相对路径相对路径能否保证唯一性?是唯一的
文件
文件有两个重要的组成部分:文件的内容和文件的属性
Linux往往存在隐藏文件,以.开头,
Linux系统中.通常表示当前路径,..通常表示上一级路径
.的意义是什么呢?当前路径
Linux的文件类型不由后缀决定,那么它们由什么决定呢?
在上图的图片中,在ls -l下,-r就是它们的文件类型
尽管Linux系统可能不关心文件后缀,但是后续我们要学习的开发工具还是对文件类型右所要求的
Linux下文件输入输出
Linux下一切皆“文件”。
向显示器打印:向显示器文件写入
从键盘输入数据:从键盘文件中读取数据
测试:
扩充知识:”echo“指令类似于printf,将内容输出
echo也可以将内容输入到文件中,
这段文件的结构是这样的。
叫做输出重定向
可以通过cat指令查看
但是再多次输入的时候会将原始数据清空再写入
也可以这样被清空文件
当echo+”内容“>>这么写的时候,可以再文件内进行多次输入
这叫做追加重定向
终端本来就是文件,在:/dev/pts/*
管道
管道 是一种强大的进程间通信(IPC)机制,它允许将一个命令/进程的输出直接作为另一个命令/进程的输入。管道体现了 Unix/Linux 哲学中的 "组合小工具完成复杂任务" 理念。
符号表示
1符号表示:命令行中使用竖线符号 |
表示管道
command1 | command2
command1
的输出 → 成为 command2
的输入
2、工作原理:
(1)创建临时内存缓冲区(通常 4KB-64KB)
(2)写进程(command1
)向管道写入数据
(3)读进程(command2
)从管道读取数据
(4)数据流动是单向的(从左到右)
3、关键特性:
实时流处理:数据边产生边消费,无需等待前序命令完全结束
内存高效:避免创建临时文件
并行执行:连接的命令同时运行
管道也是内存级的文件,不存在于磁盘但是却真实存在。
应用:
1、基础用法:统计目录中文件数量
ls /etc | wc -l
-
ls
列出文件 → 管道 →wc -l
计数行数
2、多级管道:查找特定进程并终止
ps aux | grep "nginx" | awk '{print $2}' | xargs kill -9
-
进程列表 → 过滤 nginx → 提取 PID → 终止进程
3、 数据处理:分析日志中的错误
cat /var/log/syslog | grep "ERROR" | sort | uniq -c | sort -nr
-
读日志 → 过滤错误 → 排序 → 去重计数 → 按频率排序
应用场景
-
日志分析:
journalctl | grep "fail"
-
数据转换:
df -h | awk '{print $5}' | sed 's/%//'
-
性能监控:
top -b -n 1 | head -n 20
-
文件处理:
cat data.csv | cut -d',' -f1,3 | sort
如何确认自己的云服务器是centos还是ubuntu
这里只列举几个情况,其他情况可以自行查找
cat /etc/r
本片内容就到这里了,喜欢请点个赞谢谢
封面图自取: