RHCE9学习指南 第3章 了解Linux分区和常见命令
在Windows下每个分区都要有盘符才能够正常使用,如果一个分区的盘符被删除了,则就没法使用这个分区,如下图所示。
但是用于表示盘符的字母是有限的,如果最后一个字母Z也被占用完,那么多余的分区就没有盘符可用了。
假设将D盘、E盘、F盘这几分区的盘符全部去掉,那么如何使用这些分区呢?可以在C盘下面创建一些文件夹,然后把这些分区装在这些文件夹中,如下图所示。
例如,在C盘中创建一个文件夹“Ddisk”,把第二个分区(原D盘)装在C:\Ddisk文件夹中,那么以后访问C:\Ddisk其实访问的就是第二个分区了。以此类推,我们创建C:\Edisk、C:\Fdisk,然后把第三个分区装在C:\Edisk文件夹中,把第四个分区装在C:\Fdisk文件夹中。
把某个分区装在某个文件夹中,我们把这个过程叫作挂载,这个装了其他分区的文件夹,叫作挂载点。
当打开“我的电脑”之后,我们只能看到C盘,看不到其他的分区。但是访问C盘下面对应的目录,就能访问到对应的分区,如下图所示。
这里C盘这个分区必须要一个盘符作为突破口,不然无法访问第一个分区,更不能在C盘中创建目录装载其他的分区了。
在Linux中分区的管理也是类似于刚刚描述的情况。Windows需要一个C盘,这里“C”作为盘符。Linux中也需要一个“C盘”,这里使用“/”作为盘符,如下图所示。
然后访问/时,访问的就是第一个分区sda1。然后在/下创建几个文件夹/xx、/yy、/zz,分别把sda2挂载到/xx,把sda3挂载到/yy,把sda4挂载到/zz。以后访问/xx时访问的就是sda2,如下图所示。
凡是在/xx下创建的目录或文件,都是在sda2中创建的。所以,就可以访问目录来访问到不同分区中的数据。要先访问/,然后才能访问到/xx,然后才能访问到/xx/aa。
从目录层面来看,整个结构就是一棵倒立的树,如下图所示。
3.1 路径
要访问某个文件或目录,需要知道这个文件或目录位于哪里,也就是要知道这个文件或目录的路径。路径分成两种表示,一种是绝对路径一种是相对路径。
绝对路径是从/开始算,一个完整的路径,例如,/home/tom,再如,/xx/aa。
相对路径有两个符号。
(1).表示当前路径。
(2)..表示上一层路径。
假设现在处在/home/lduan目录下,如下图所示。
.表示当前目录,即/home/lduan。
..表示上一层目录,即/home。
如果现在处在/xx/aa目录中,如下图所示。
.表示当前目录,即/xx/aa。
..表示上一层目录,即/xx。
.和..表示的路径会依据当前所在目录的不同而不同。
3.2 创建和删除目录
创建目录(文件夹)的命令是mkdir,语法如下。
mkdir dir
或者
mkdir -p dir1/dir2
这里的意思是在dir1下创建dir2,-p的意思是,如果dir1不存在,则会连同把dir1也创建出来。
用lduan用户登录,在当前目录下创建目录xx的命令如下。
[lduan@server ~]$ mkdir xx
[lduan@server ~]$
在当前目录下的目录11中创建22目录。
[lduan@server ~]$ mkdir 11/22
mkdir: 无法创建目录 “11/22”: 没有那个文件或目录
[lduan@server ~]$
因为11目录不存在,所以又想在11下创建目录22,自然是创建不出来的,这里加上-p就可以了。
[lduan@server ~]$ mkdir -p 11/22
[lduan@server ~]$
可以看到,目录11不存在,也会把11创建出来,然后再在11中创建22。
删除目录的命令是rmdir,语法如下。
rmdir dir
删除目录xx的命令如下。
[lduan@server ~]$ rmdir xx
[lduan@server ~]$
如果11目录中还有一个目录2,执行命令删除目录11。
[lduan@server ~]$ rmdir 11
rmdir: 删除 '11' 失败: 目录非空
[lduan@server ~]$
因为11目录中还有一个目录22,所以rmdir没法直接删除目录11。需要把11中的内容全部清除才能删除目录11。这里可以利用后面要讲的命令rm -rf来删除。
[lduan@server ~]$ rm -rf 11
[lduan@server ~]$
这里选项r的意思是递归,如同剥洋葱,一层一层的剥,f选项是强制的意思。
3.3 cd的用法
cd的主要作用是切换到其他目录,cd的用法如下。
cd 路径
这里的路径可以是相对路径也可以是绝对路径,如果没有明确的指明路径,则是当前路径,如cd test,test就表示当前路径下的一个目录,这种写法等同于cd ./test。
[lduan@server ~]$ mkdir -p aa/bb/cc/dd/ee/ff/{11,22}
[lduan@server ~]$
可以查看这个目录的结构。
[lduan@server ~]$ tree aa
aa
└── bb
└── cc
└── dd
└── ee
└── ff
├── 11
└── 22
7 directories, 0 files
[lduan@server ~]$
进入11目录的命令如下。
[lduan@server ~]$ cd aa/bb/cc/dd/ee/ff/11/
[lduan@server 11]$ pwd
/home/lduan/aa/bb/cc/dd/ee/ff/11
[lduan@server 11]$
这里cd后面直接跟aa,表示当前目录下的aa。
如果想切换到22目录,绝对路径的写法如下。
[lduan@server 11]$ cd /home/lduan/aa/bb/cc/dd/ee/ff/22/
[lduan@server 22]$ pwd
/home/lduan/aa/bb/cc/dd/ee/ff/22
[lduan@server 22]$
现在是在22目录中,22目录上一层目录是ff。如果想切换到11目录,使用相对路径的写法如下。
[lduan@server 22]$ cd ../11
[lduan@server 11]$ pwd
/home/lduan/aa/bb/cc/dd/ee/ff/11
[lduan@server 11]$
不管在哪个目录下,只要输入cd,就可以切换到家目录中。
[lduan@server 11]$ pwd
/home/lduan/aa/bb/cc/dd/ee/ff/11
[lduan@server 11]$ cd
[lduan@server ~]$ pwd
/home/lduan
[lduan@server ~]$
直接输入cd命令,等同于输入命令cd ~,这里~是一个变量,表示当前用户的家目录。
也可以用 ~user 表示user用户的家目录。
3.4 拷贝和剪切
如果需要拷贝文件或目录,可以用到cp命令,cp的语法如下。
cp 选项 /path1/xx /path2/yy
如果/path2/yy是一个目录,上面的命令会把/path1/xx拷贝到/path2/yy中。如果/path2/yy不存在或是一个文件,意思是把/path1/xx拷贝到/path2中,命名为yy。
下面的操作都是用root用户做的,把/etc/hosts拷贝到/opt目录下。
[root@server ~]# cp /etc/hosts /opt/
[root@server ~]#
这里/opt是一个目录,那么这句话就是把/etc/hosts拷贝到/opt目录下,看下/opt的内容。
[root@server ~]# ls /opt/
hosts
[root@server ~]#
把/etc/hosts拷贝到/opt中,命名为xx。
[root@server ~]# cp /etc/hosts /opt/xx
[root@server ~]# ls /opt/
hosts xx
[root@server ~]#
原来并不存在/opt/xx,上面的操作是把/etc/hosts拷贝到/opt中,命名为xx。
看下面的例子。
[root@server ~]# mkdir /opt/11
[root@server ~]# cp /etc/hosts /opt/11
[root@server ~]#
先创建目录/opt/11,因为/opt/11是个目录,所以这里是把/etc/hosts拷贝到/opt/11这个目录中。而不是把/etc/hosts拷贝到/opt之后命名为11。
[root@server ~]# cp /etc/hosts /opt/xx
cp:是否覆盖'/opt/xx'? y
[root@server ~]#
因为/opt/xx不是一个目录,所以这句话是把/etc/hosts拷贝到/opt中并命名为xx。因为/opt/xx已经存在了,所以会问是否要覆盖,如果此时直接按【Enter】键,则是n的意思,即不覆盖。如果要覆盖必须要输入y,按【Enter】键。
拷贝一个文件,相当于新创建了一个文件。除文件的内容相同外,文件的时间显示的也是创建这个文件的时间。
[root@server ~]# ls -l /etc/hosts /opt/xx
-rw-r--r--. 1 root root 158 9月 10 2018 /etc/hosts
-rw-r--r--. 1 root root 158 11月 19 22:44 /opt/xx
[root@server ~]#
这里可以看到,时间不一样。
拷贝一个文件时,如果想把文件的属性一起拷贝过去,就需要加上-p选项。
[root@server ~]# ls -l /etc/hosts /opt/xx
-rw-r--r--. 1 root root 158 9月 10 2018 /etc/hosts
-rw-r--r--. 1 root root 158 9月 10 2018 /opt/xx
[root@server ~]#
这样看起来,时间也都一致了。
下面用cp拷贝目录,把/etc拷贝到当前目录。
[root@server ~]# cp /etc/ .
cp: 未指定 -r;略过目录'/etc/'
[root@server ~]#
此处没有拷贝成功,因为/etc/是一个目录,cp需要加上-r选项才行,-r表示递归的意思。
[root@server ~]# cp -r /etc/ .
[root@server ~]#
删除这个etc目录。
[root@server ~]# rm -rf etc/
[root@server ~]#
记住不要写成了 rm -rf /etc/。
如果拷贝目录,同时想保持目录属性不变,可以用-rp选项,或者-a选项。-a选项中包括一系列其他选项如-r、-p等的功能。
[root@server ~]# cp -a /etc/ .
[root@server ~]#
剪切所用的命令是mv,mv的语法如下。
mv 选项 /path1/xx /path2/yy
如果/path2/yy是一个目录,意思是把/path1/xx剪切到/path2/yy中。
如果/path2/yy不存在或是一个文件,意思是把/path1/xx剪切到/path2中,并命名为yy。
把/opt/hosts剪切到当前目录中的命令如下。
[root@server ~]# mv /opt/hosts .
[root@server ~]# ls /opt/
11 xx
[root@server ~]#
mv也用于重命名的操作,如把/opt/下的xx命名为yy。
[root@server ~]# mv /opt/xx /opt/yy
[root@server ~]# ls /opt
11 yy
[root@server ~]#
3.5常见命令归纳
在Windows中可以通过某文件的图标或文件的后缀,来判断是什么该文件是一个什么类型的文件,如是可执行文件,还是一个文本文件。但在Linux中,很多文件类型往往和后缀没关系,所以我们要判断一个文件是什么类型的文件可以用file来判断。file的用法如下。
file /path/file
例如,判断/etc/hosts是什么类型的文件,命令如下。
[root@server ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@server ~]#
这里显示/etc/hosts是一个文本文件。
判断/boot/initramfs-4.18.0-305.el8.x86_64.img的文件类型。
[root@server ~]# file /boot/initramfs-5.14.0-70.13.1.el9_0.x86_64.img
/boot/initramfs-5.14.0-70.13.1.el9_0.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
[root@server ~]#
这里显示/boot/initramfs-5.14.0-70.13.1.el9_0.x86_64.img是一个cpio归档文件。
注意:这里/boot/initramfs-5.14.0-70.13.1.el9_0.x86_64.img中的版本,请通过ls /boot来确定。
wc用于统计文件的行数、单词数、字符数,先查看/etc/hosts的内容。
[root@server ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@server ~]#
然后用wc统计/etc/hosts的信息。
[root@server ~]# wc /etc/hosts
2 10 158 /etc/hosts
[root@server ~]#
这里第一个数字2是指的是/etc/hosts有2行,第二个数字10表示/etc/hosts有10个单词,这里单词指的是以空格、
以上这几个信息也可以单独查看,wc -l可以查看文件的行数。
[root@server ~]# wc -l /etc/hosts
2 /etc/hosts
[root@server ~]#
wc -w 可以查看文件的单词数。
[root@server ~]# wc -w /etc/hosts
10 /etc/hosts
[root@server ~]#
wc -c可以查看文件的字符数。
[root@server ~]# wc -c /etc/hosts
158 /etc/hosts
[root@server ~]#
touch用于创建文件或更新一个文件的时间,用法如下。
touch /path/file
如果/path/file不存在,则会把这个文件创建出来,如果存在则是用于更新这个文件的时间。
先查看/opt目录中的内容。
[root@server ~]# ls /opt/
11 yy
[root@server ~]#
这里并不存在aa1.txt文件。
[root@server ~]# touch /opt/aa1.txt
[root@server ~]# ls /opt/
11 aa1.txt yy
[root@server ~]#
这样就把aa1.txt创建出来了。
我们知道/etc/hosts是存在的,先查看这个文件的信息。
[root@server ~]# ls -l /etc/hosts
-rw-r--r--. 1 root root 158 9月 10 2018 /etc/hosts
[root@server ~]#
然后对这个文件touch操作。
[root@server ~]# touch /etc/hosts
[root@server ~]# ls -l /etc/hosts
-rw-r--r--. 1 root root 158 11月 19 23:45 /etc/hosts
[root@server ~]#
可以看到,这个文件的时间更新了,这里并不会覆盖这个文件的内容,仅仅是更新了时间而已。
rm用于删除一个文件和目录。
[root@server ~]# rm /opt/aa1.txt
rm:是否删除普通空文件 '/opt/aa1.txt'?y
[root@server ~]#
这里必须要输入y,如果什么都不输入直接回车,等同于输入n,并按【Enter】键,即不删除的意思。
[root@server ~]# rm /opt/11/
rm: 无法删除'/opt/11/': 是一个目录
[root@server ~]#
因为/opt/11是一个目录,所以可以在rm后加上-rf选项,-r是递归-f是强制的意思。
[root@server ~]# rm -rf /opt/11/
[root@server ~]# ls /opt/
yy
[root@server ~]#
ln是做软连接的,所谓软连接就是Windows下说的快捷方式,ln的用法如下。
ln -s 源文件 快捷方式
例如,给/opt/yy创建一个快捷方式/opt/zz,命令如下。
[root@server ~]# ln -s /opt/yy /opt/zz
[root@server ~]# ls -l /opt/zz
lrwxrwxrwx. 1 root root 7 11月 19 23:58 /opt/zz -> /opt/yy
[root@server ~]#
查看/opt/zz的属性,可以看到/opt/zz是指向/opt/yy的,删除/opt/zz。
[root@server ~]# rm -rf /opt/zz
[root@server ~]#
alias是用于做别名的,对于一个复杂的命令,我们可以创建一个别名,以后执行别名即可。alias的用法如下。
alias 别名='命令'
下面做一个练习,用命令ifconfig ens160创建一个别名xx,注意系统中是没有xx命令的。
[root@server ~]# xx
bash: xx: 未找到命令...
[root@server ~]#
下面为ifconfig ens160设置一个别名xx。
[root@server ~]# alias xx='ifconfig ens160'
[root@server ~]# xx
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.26.130 netmask 255.255.255.0 broadcast 192.168.26.255
inet6 fe80::20c:29ff:fec4:5b02 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:c4:5b:02 txqueuelen 1000 (Ethernet)
RX packets 169 bytes 33613 (32.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 179 bytes 23241 (22.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@server ~]#
可以看到,当执行xx命令时,实际上执行的是ifconfig ens160。
取消别名的语法如下。
unalias 别名。
取消xx这个别名的命令如下。
[root@server ~]# unalias xx
[root@server ~]#
cat命令用于查看比较小的(文本)文件,用法如下。
cat /path/file
例如,查看/etc/hosts中的内容,命令如下。
[root@server ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@server ~]#
但是对于比较大的文件cat就不太合适了,因为cat命令会很快地将文件的内容像翻书一样很快"翻"过去,直接到最后,我们可以用less或more命令。
more的用法如下。
more /path/file
此时显示出来的只是按终端大小来显示,如图3-10所示。
此时左下角显示有“更多”,说明还有更多的内容,此时按【Enter】键会一行一行地往下显示,按空格键会一页一页地显示(这里终端的大小就是一页的大小),按q退出。
比more更灵活的命令是less,用法是less /path/file,和more类似,按【Enter】键会一行一行地往下显示,按空格键会一页一页地显示。不过less支持按PgUp和PgDn往前和往后翻页,也支持按【Home】键跳到开头和按【End】键跳到结束。
head默认查看文件的前10行,如果想查看文件前几行,命令如下。
head -n N /path/file 或者 head -N /path/file
例如,查看/etc/passwd前2行,命令如下。
[root@server ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@server ~]#
或者
[root@server ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@server ~]#
tail默认查看文件的后10行,如果想查看文件后几行,有两种方法,分别如下。
tail -n N /path/file
或者
tail -N /path/file
例如,查看/etc/passwd最后2行,命令如下。
[root@server ~]# tail -n 2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
lduan:x:1000:1000:lduan:/home/lduan:/bin/bash
[root@server ~]#
或者
[root@server ~]# tail -2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
lduan:x:1000:1000:lduan:/home/lduan:/bin/bash
[root@server ~]#
3.6 重定向
执行一条命令时,命令的结果总是输出在屏幕上的。如果希望把这个命令的结果保存在某个文件中而不是输出的屏幕上,此时就要用到重定向了。重定向就是重新定位输出的方向,能用到的符号包括“>” “>>” “2>” “2>>” “&>” “&>>”,这里的“>”不要把它当做是小于号,而是把它当做是“箭头”就很容易理解了。
下面分别看下这些重定向的使用。
命令 > /path/file
如果/path/file不存在,则会自动创建出来,如果存在则先清空此文件的内容,然后把命令的结果写入此文件中,这种写法叫作“覆盖”写。
下面练习一下“>”重定向。
[root@server ~]# uname
Linux
[root@server ~]# ls aa.txt
ls: 无法访问'aa.txt': 没有那个文件或目录
[root@server ~]#
这里没有重定向,uname的结果直接输出在屏幕上了,当前目录中aa.txt也是不存在的。
[root@server ~]# uname > aa.txt
[root@server ~]#
这里用了重定向,uname的结果并没有输出在屏幕上,而是写入当前目录的aa.txt中了,如果aa不存在,则aa.txt会被创建,下面查看aa.txt的内容。
[root@server ~]# cat aa.txt
Linux
[root@server ~]#
可以看到,aa.txt中的内容就是uname命令的结果。下面再输入一个命令重定向到aa.txt中。
[root@server ~]# cal > aa.txt
[root@server ~]#
cal的结果并没有任何输出,因为通过重定向写入aa.txt中了。
[root@server ~]# cat aa.txt
十一月 2021
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
[root@server ~]#
可以看到,aa.txt中原来的内容“Linux”已经没有了,因为“>”是覆盖写,要先清空aa.txt的内容,然后再把cal命令的结果写进去。
命令 >> /path/file
如果/path/file不存在,则会自动创建出来,如果存在,命令的结果会在/path/file原有内容的后面接着写,并不清空此文件的内容,这种写法叫作“追加”写。
下面我们执行两次uname,通过“>>”写进aa.txt中。
[root@server ~]# uname >> aa.txt
[root@server ~]# uname >> aa.txt
[root@server ~]# cat aa.txt
十一月 2021
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Linux
Linux
[root@server ~]#
这里可以看到,aa.txt中原有的内容仍然是存在的,uname的结果是在后面接着写的。
不管是“>”还是“>>”都只能重定向正确的结果,不能重定向错误的结果。
[root@server ~]# unamexx > aa.txt
bash: unamexx: 未找到命令...
[root@server ~]# cat aa.txt
[root@server ~]#
因为“>”会先清空aa.txt的内容,命令unamexx是不存在的、结果报错了,所以没有重定向成功aa.txt的内容被清空了。
如果要重定向错误的结果,需要用到“2>”和“2>>”。这两个符号跟“>”和“>>”一样,“2>”表示覆盖写,“2>>”是追加写,下面看个例子。
[root@server ~]# unamexx 2> aa.txt
[root@server ~]# cat aa.txt
bash: unamexx: 未找到命令...
[root@server ~]#
这里unamexx是个错误的命令,报错信息并没有输出到屏幕上而是写入aa.txt中了。
[root@server ~]# xxxx 2> aa.txt
[root@server ~]# cat aa.txt
bash: xxxx: 未找到命令...
[root@server ~]#
这里再次执行了一个错误命令xxxx,结果也没有输出到屏幕上,而是覆盖的写入aa.txt中了,所以aa.txt里面没有原来的unamexx的报错信息。
再次执行两次unamexx命令,通过“2>>”进行重定向。
[root@server ~]# unamexx 2>> aa.txt
[root@server ~]# unamexx 2>> aa.txt
[root@server ~]#
[root@server ~]# cat aa.txt
bash: xxxx: 未找到命令...
bash: unamexx: 未找到命令...
bash: unamexx: 未找到命令...
[root@server ~]#
因为“2>>”是追加写,所以报错信息是追加着写到aa.txt中了,并没有清空原来xxxx的报错信息。
如果想不管是正确的还是错误的结果都能重定向,可以用“&>”和“&>>”,“&>”是追加写,“&>>”是覆盖写,凡是带“>”的都是覆盖写,凡是带“>>”的都是追加写,下面练习一下。
[root@server ~]# uname &> aa.txt
[root@server ~]# xxxx &>> aa.txt
[root@server ~]# cat aa.txt
Linux
bash: xxxx: 未找到命令...
[root@server ~]#
这里可以看到,不管是正确的命令还是错误的命令都重定向到aa.txt中了。
3.7 管道
在Windows的cmd中执行netstat -an,会获取大量的内容显示了当前系统的端口状态及建立的连接。如果想查看端口445的状态,可以用如下命令。
C:\Users\lduan>netstat -an | find "445"
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP [::]:445 [::]:0 LISTENING
C:\Users\lduan>
这里find "445"是在哪里查询445呢?是从前面命令netstat -an的结果中来查询。这当中的竖杠'|'就是管道的意思,管道的用法如下。
命令1 | 命令2
管道可以把多个命令连接起来,管道前面命令的结果作为管道后面命令的参数。
例如,要查看/etc/passwd的第6行到第10行的内容。
[root@server ~]# head /etc/passwd | tail -5
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@server ~]#
先用head 获取/etc/passwd的前10行,然后通过管道传递给tail获取 /etc/passwd前10行的后5行,那么就是从第6行到第10行了。
如果要获取网卡ens160含有IP的那行内容。
[root@server ~]# ifconfig ens160 | grep 'inet '
inet 192.168.26.130 netmask 255.255.255.0 broadcast 192.168.26.255
[root@server ~]#
先通过ifconfig ens160获取ens160的IP,然后通过grep从这个结果中过滤到含有'inet '的行。grep的意思是从指定的文件或内容中获取含有某个关键字的行。
注意:上面命令inet后面有个空格。
这里使用了管道之后最后只显示了最终的结果,管道前面命令的结果并没有保留。如果想把管道前面命令的结果保留下来可以用tee命令,例如,下面的命令。
[root@server ~]# ifconfig ens160 | tee bb.txt
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.26.101 netmask 255.255.255.0 broadcast 192.168.26.255
inet6 fe80::20c:29ff:fec4:5b02 prefixlen 64 scopeid 0x20<link>
...输出...
[root@server ~]#
这里ifconfig ens160先把结果通过管道传递给tee命令,保存在bb.txt中,然后结果正常输出到屏幕上。这样ifconfig ens160的结果既保存在bb.txt中,也输出到屏幕上了。
再看下面的例子。
[root@server ~]# ifconfig ens160 | tee bb.txt | grep 'inet '
inet 192.168.26.101 netmask 255.255.255.0 broadcast 192.168.26.255
[root@server ~]#
这里ifconfig ens160先把结果传递给tee命令,保存在bb.txt中。然后结果本应继续输出到屏幕上的,但是又遇到了管道,把结果传递到grep过滤含有关键字的行,这样最终看到的是含有'inet ' 的那行。
下面查看bb.txt的内容。
[root@server ~]# cat bb.txt
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.26.101 netmask 255.255.255.0 broadcast 192.168.26.255
inet6 fe80::20c:29ff:fec4:5b02 prefixlen 64 scopeid 0x20<link>
...输出...
[root@server ~]#
作业
-
下面哪个命令能把文件myfile重命名为mynewfile?
a. mv myfile mynewfile
b. rm myfile mynewfile
c. rn myfile mynewfile
d. ren myfile mynewfile -
如下哪个命令可以创建/home的软连接到/tmp/xx ?
a. ln /tmp/xx /home
b. ln /home /tmp/xx
c. ln -s /home /tmp/xx
d. ln -s /tmp/xx /home -
如下哪个命令可以查看文件的前10行?
a. head
b. top
c. first
d. cat -
如下哪个命令可以查看一个文本文件的行数?
a. count
b. list
c. ls -l
d. wc -
你在使用less常看文档时,按哪个键能退出当前的文本文件?
a. End
b. PageDown
c. q
d. G -
ls的结果非常多,你想借助less查看ls的输出结果,下面哪个命令正确?
a. ls > less
b. ls >> less
c. ls >| less
d. ls | less -
如果要查看/etc/passwd的第5行到第10行的内容,应该使用如下哪个命令?
a. head –n 5-10 /etc/passwd
b. head /etc/passwd | tail -5
c. top –n 5-10 /etc/passwd
d. head /etc/passwd | tail -6 -
某脚本aa.sh运行时,不管是对还是错,希望把输出重定向到aa.txt中的写法是?
a. ./aa.sh > aa.txt
b. ./aa.sh 2> aa.txt
c. ./aa 1> aa.txt
d. ./aa.sh &> aa.txt -
如果想把/etc/service 拷贝到/opt下同时保留属性不变,请问下面哪个命令可以?
a. cp /etc/service /opt
b. cp –r /etc/service /opt
c. cp –a /etc/service /opt
d. cp –p /etc/service /opt -
执行date命令,想把命令的结果显示在屏幕,同时保存在aa.txt中,哪条命令能实现?
a. date | tee aa.txt
b. date > aa.txt
c. date &> aa.txt
d. date 2> aa.txt