linux常用命令(一)

对文件和目录进行操作的命令

  • pwd
  • cd
  • ls
  • touch
  • mkdir
  • rmdir
  • cp
  • mv
  • rm
  • wc
  • du

pwd:显示工作目录路径

命令语法:pwd [选项]

选项含义
-L目录链接时,输出链接路径
-P输出物理路径

cd:更改工作目录路径

命令语法:cd[选项][目录]

选项含义
cd或cd ~回到用户主目录
cd ..变当前工作目录路径位置至当前目录的父目录。
cd -P如果是链接路径,则进入链接路径的源物理路径
cd ~li改用户工作目录路径位置至用户li的主目录。

ls:列出目录和文件信息

选项选项含义
-a显示指定目录下所有子目录的文件,包括隐藏文件
-A显示指定目录下所有子目录与文件,包括隐藏文件,但不列出“.”和“..”
-c配合-lt:根据车体么排序并显示ctime
-d如果参数是目录,只显示其名称而不显示其下的歌文件和子目录
-F显示文件类型
-i在输出的第一列显示文件的inode号
-l以长格式显示文件的详细信息
-r逆序排列
-t根据修改时间排序
-s一块数形式先生每个文件分配的尺寸
-S根据文件大小排序

例子:显示目录/var下文件的子目录的简单信息

~]# ls /var

显示/root目录下所以文件和子目录的详细信息,包括隐藏文件

~]# ls -al /root

显示/etc目录下的文件和子目录信息,用标记标出文件类型

~]# ls -F /etc

touch:创建空文件、更改文件时间

命令语法:touch [选项] [文件]

选项选项含义
-a只更改访问时间(atime)
-m更改文件的修改时间记录(mtime)
-c假如目标文件存在,则不会建立新的文件
-r<文件>使用指定文件的时间属性而非当前时间
-d<字符串>使用指定字符串表示时间而非当前时间
-t<日期时间>使用[CC]YY]MMDDhhmm[.ss]格式的时间而非当前时间

例如:在当前目录下创建文件file1、file2、file3

[root@localhost ~]# touch file1
[root@localhost ~]# touch file2 file3
[root@localhost ~]# ls -l file1 file2 file3
-rw-r--r--. 1 root root 5 Aug  3 22:12 file1
-rw-r--r--. 1 root root 6 Aug  3 22:12 file2
-rw-r--r--. 1 root root 0 Aug  3 22:12 file3

将文件file1的时间记录改为9月17日19点30分

[root@localhost ~]# ls -l /root/file1
-rw-r--r--. 1 root root 5 Aug  4  2019 /root/file1
[root@localhost ~]# touch -c -t 09171930 /root/file1
[root@localhost ~]# ls -l /root/file1
-rw-r--r--. 1 root root 5 Sep 17  2019 /root/file1

时间格式是MMDDHHmm,如果要加上2019年年份

[root@localhost ~]# touch -c -t 09171930 /root/file1

mkdir:创建目录

命令语法:mkdir [选项] [目录]

选项选项含有
-m<权限模式>对新创建的目录设置权限,在没有-m选项时,默认权限是755
-v每次创建新目录都显示信息
-p可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动创建那些尚不存在的目录,即以此可以建立多个目录

例子:创建目录newdir1 ,其默认权限为755

[root@localhost ~]# touch -c -t 09171930 /root/file1
   [root@localhost ~]# ls -ld newdir1
drwxr-xr-x. 2 root root 6 Jun 22 22:27 newdir1

创建目录newdir2,其权限为777

[root@localhost ~]# mkdir -m 777 newdir2
[root@localhost ~]# ls -ld newdir2
drwxrwxrwx. 2 root root 6 Aug  3 22:39 newdir2

rmdir:删除空目录 命令语法:rmdir [选项] [目录]

选项选项含义
-p递归删除目录,当子目录删除后其父目录为空时,也一同被删除
-v输出处理的目录详情

例子:同时删除/root/newdir2和/root/newdir2/newdir3这两个空目录

[root@localhost ~]# mkdir /root/newdir2
[root@localhost ~]# mkdir /root newdir2/newdir3
[root@localhost ~]# rmdir -pv /root/newdir2/newdir3
rmdir: removing directory, ‘/root/newdir2/newdir3’
rmdir: removing directory, ‘/root/newdir2’
rmdir: removing directory, ‘/root’
rmdir: failed to remove directory ‘/root’: Device or resource busy

cp:复制文件的和目录

命令语法:cp [选项] [源文件|目录] [目标文件|目录]

选项选项含义
-a在复制目录时保留链接、文件属性、并递归地复制目录,等同于-dpr选项
-d复制时保留链接
-f在覆盖目标文件之前不给出提示信息要求用户确认
-i和-f选项相反看,在覆盖目标文件之前给出提示信息,要求用户确认
-p出复制源文件的内容外,还把其修改时间和访问权限也复制到新文件中
-l不做复制,只是链接文件
-r如果给出的源文件是一个目录文件,将递归复制该目录下所有的子目录和文件。此时目标必须为一个目录名

例子:将/etc/grub2.cfg文件复制到/root目录下,并改名为grub

[root@localhost ~]# cp /etc/grub2.cfg /root/grub
cp: overwrite ‘/root/grub’? y
[root@localhost ~]# ls
anaconda-ks.cfg  grub  newdir1

将/etc/grub2.cfg文件复制到/root目录下

[root@localhost ~]# cp /etc/grub2.cfg /root
[root@localhost ~]# ls
anaconda-ks.cfg  grub  grub2.cfg  newdir1
[root@localhost ~]# 

将/boot目录以及该目录中的所有文件和子目录都复制到/root目录中

[root@localhost ~]# cp -r /boot /root
[root@localhost ~]# ls -l /root
total 24
-rw-------. 1 root root 1260 Jun  9 14:21 anaconda-ks.cfg
dr-xr-xr-x. 5 root root 4096 Jun 22 23:21 boot
-rw-r--r--. 1 root root 4287 Jun 22 23:15 grub
-rw-r--r--. 1 root root 4287 Jun 22 23:18 grub2.cfg
drwxr-xr-x. 2 root root    6 Jun 22 22:27 newdir1

mv:文件和目录改名、移动文件和目录路径

命令语法:mv [选项] [源文件|目录] [目标文件|目录]

选项选项含义
-i覆盖前询问
-f覆盖前不询问
-n不覆盖已存在的文件
-u只有在源文件文件比目标文件新,或目标文件不存在时才进行移动
-T将目标文件视作普通文件处理

例子:将/root/pic目录下所以的后缀名为“.png”的文件移动到/usr/local/share/pic目录下

[root@localhost ~]# mv -f /root/pic/*.png /usr/local/share/pic

把/root/pic/kpic.png文件改名为/root/pic/life.png

[root@localhost ~]# mv /root/pic/kpic.png /root/pic/life.png
[root@localhost ~]# ls /root/pic
{kpic.png  life.png

把/root/pic目录名称更改为/root/mypic

root@localhost ~]# mv /root/pic /root/mypic
[root@localhost ~]# ls /root
123.png}  anaconda-ks.cfg  boot  grub  grub2.cfg  mypic  newdir1

rm:删除文件或目录

命令语法:rm [选项] [文件|目录]

选项选项含义
-f强制删除。忽略不存在的文件,不给出提示信息
-r递归删除目录及其内容
-i在删除前需要确认

例子:删除当前目录下的file4文件

root@localhost ~]# rm file4
rm: remove regular empty file ‘file4’? y
[root@localhost ~]# ls
123.png}  anaconda-ks.cfg  boot  grub  grub2.cfg  mypic  newdir1

连同/root/ab/a文件和/root/ab目录一起删除

[root@localhost ~]# mkdir /root/ab
[root@localhost ~]# touch /root/ab/a
[root@localhost ~]# ls -l /root/ab/a
-rw-r--r--. 1 root root 0 Jun 22 23:51 /root/ab/a
[root@localhost ~]# rm -rf /root/ab
[root@localhost ~]# ls /root
123.png}  anaconda-ks.cfg  boot  grub  grub2.cfg  mypic  newdir1

wc:统计文件行数、单词数、字节数和字符数

命令语法:wc [选项] [文件]

选项选项含义
-l统计行数
-w统计单词数
-c统计字节数
-m统计字符数
-L统计文件中最长行的长度

例子:统计/root/aa文件的行数、单词数和字节数

[root@localhost ~]# wc -l /root/aa/ce.log
3 /root/aa/ce.log

统计/root目录下有多少子目录和文件

[root@localhost ~]# ls /root|wc -l
8

du:计算机文件或目录的容量

命令语法:du [选项]...[文件或目录]...

选项选项含义
-h人性化显示容量信息
-a查看所有目录以及文件的容量信息
-s仅显示总容量
-c显示总计信息
-l如果是硬连接,就多次计算其尺寸
-x跳过处于不同文件系统之上的目录
-S不包括子目录的占用量
-L找出任何符号链接指示的真正目的地

查看/root目录及子目录的容量信息

[root@localhost ~]# du /root
[root@localhost ~]# du -a /root

查看/root所占磁盘空间总和

[root@localhost ~]# du -sh /root
100M	/root

以MB为单位显示/root目录磁盘占用量

[root@localhost ~]# du -sh /root
100M	/root
选项选项含义
-h人性化显示容量信息
-a查看所有目录以及文件的容量信息
-s仅显示总容量
-c显示总计信息
-l如果是硬连接,就多次计算其尺寸
-x跳过处于不同文件系统之上的目录
-S不包括子目录的占用量
-L找出任何符号链接指示的真正目的地

查看/root目录及子目录的容量信息

[root@localhost ~]# du /root
[root@localhost ~]# du -a /root

查看/root所占磁盘空间总和

[root@localhost ~]# du -sh /root
100M	/root

以MB为单位显示/root目录磁盘占用量

[root@localhost ~]# du -sh /root
100M	/root

对文本进行显示的相关命令

  • cat
  • more
  • less
  • head
  • tail
  • echo

cat:显示文本文件

命令语法:cat [选项] [文件]

选项选项含义
-n对输出的所有行编号
-b对非空输出行编号
-s当遇到有连续两行以上的空白行时,就将其替换为一行的空白行
-E在每行结束出显示$

例子:显示/etc/inittab文件的内容

[root@localhost ~]# cat /etc/inittab

把文cs.log的文件内容加上行号后输入到cs1.log文件中

[root@localhost ~]# cat -n cs.log > cs1.log
[root@localhost ~]# cat cs1.log
     1	wewe
     2	wewe
     3	uoij
     4	124

使用cat命令创建mm.txt文件

[root@localhost ~]# cat >mm.txt<<EOF
> hello   * 此次输入小写是错的,必须区分大小写
> linux   * 此次输入小写是错的,严格区分大小写
> eof     * 此次输入小写是错的,严格区分大小写,正确的格式见下面代码
> Hello
> Linux
> EOF

more:分页显示文本文件

命令语法:more [选项] [文件名]

选项选项含义
-f计算行数时,使用实际的行数,而不是自动换行过后的行数
-p不以卷动的方式显示每一页,而是先清除屏幕后再显示内容
-c跟-p选项相似,不同的是先显示内容再清除其他旧资料
-s当遇到有连续两行以上的空白行时,就将其替换为一行的空白行
-u不显示下引号(根据环境变量TERM指定的终端而有所不同)
+n从第n行开始显示文件内容,n代表数字
-n一次显示的行数,n代表数字

例子:分页显示/etc/services文件的内容

[root@localhost ~]# more /etc/services

从第3行开始显示/root/cs.log

[root@localhost ~]# more +3 /root/cs.log
uoij
124

一次两行显示/etc/passwd

[root@localhost ~]# more -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
--More--(7%)

less[1]:回卷显示文本文件

命令语法:less [选项] [文件名]

选项选项含义
-N显示每行的行号
-S行过长时间将超出部分舍弃
-e当文件显示结束后,自动离开
-g只表示最后搜索到的关键词
-i忽略搜索时的大小写
-m显示类似more命令的百分百
-f强迫打开特殊文件,比如外围设备代号、目录和二进制文件
-s显示连续空行为一行
-o <文件名>将less输出的内容保存到指定文件中
-x <数字>将tab键显示为规定的数字空格

例子:回卷显示/etc/services文件的内容

[root@localhost ~]# less /etc/services

head:显示指定文件前若干行

命令语法:head [选项] [文件]

选项选项含义
-n <K>显示每个文件的前K行内容;如果附加“-”参数,则除了每个文件的最后K行外显示剩余全部内容,这里K是数字
-c <K>显示每个文件的前K字节内容;如果附加“-”参数,则除了每个文件的最后K字节数据外显示数全部内容,这里K是数字
-v总是显示保护给定文件名的文件头

例子:查看/etc/passwd文件的前100个字节数据内容

[root@localhost ~]# head -c 100 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nol[root@localhost ~]# 200

tail:查看文件末尾数据

命令语法:tail [选项] [文件名]

选项选项含义
-n <K>输出最后K行,这里K是数字,使用-n +K则从每个文件的第K行输出
-c <K>输出最后K个字节,这里K是数字,使用-c +K则从每个文件的第K字节输出
-f即时输出文件变化后追加的数据

例子:查看/etc/passwd文件末尾3行的数据内容

[root@localhost ~]# tail -n 3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
li:x:1000:1000::/home/li:/bin/bash

echo:显示一行指定的字符串

命令语法:echo [选项] [字符串]

选项选项含义
-n不输出换行,默认echo输出内容后会换行
-e支持反斜线开始的转义字符,屏蔽反斜线后面字符的原本含义

例子:直接输出指定字串

[root@localhost ~]# echo "hi"
hi

  1. “less is more than more”说明"less"功能比“more”要更加全面。 ↩

  2. 摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著

linux系统显示的命令

  • uname
  • hostname
  • free
  • du

uname:显示计算机及操作系统相关信息

命令语法:uname [选项]

选项选项含义
-a显示全部的信息
-m显示计算机硬件架构名称
-n显示在网络上的主机名称
-r显示操作系统的内核发行号
-s显示操作系统名称

例子:显示操作系统的内核发行号

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

显示操作系统的全部信息

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

hostname:显示或修改计算机主机名

命令语法:

  • hostname [选项] [主机名|-F <文件>]

  • hostname [选项]

选项选项含义
-s显示短主机名
-i显示IP地址
-f显示长主机名
-d显示DNS

例子:显示当前计算机主机名

[root@localhost ~]# hostname
localhost.localdomain

设置当前计算机的主机名为linux[1]

[root@localhost ~]# hostname linux
[root@localhost ~]# hostname
linux

free:查看内存信息

命令语法:free [选项]

选项选项含义
-c <次数>显示指定次数结果数据
-t显示内存加上swap总的容量
-b以字节为单位显示内存使用情况
-k以KB为单位显示内存使用情况
-m以MB为单位显示内存使用情况
-g以GB为单位显示内存使用情况

例子:查看系统物理内存和swap使用情况

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:         995896      148252      403780        7828      443864      621672
Swap:       2097148           0     2097148

显示系统的物理内存加上swap总的容量

[root@localhost ~]# free -t
              total        used        free      shared  buff/cache   available
Mem:         995896      147960      404052        7828      443884      621964
Swap:       2097148           0     2097148
Total:      3093044      147960     2501200

 

cal:显示日历信息

命令语音:cal [选项] [[[日]月]年]

选项选项含义
-j显示出给定月中的每一天是一年总的第几天(从1月1日算起)
-y显示出整年的日历
-m以星期一为每周第一天的方式显示
-s以默认的格式显示星期天为一个星期的第一天
-l只显示当前月份的日历(默认)
-3显示系统前一个月、当前月和下一个月的日历

例子:显示本月的日历

[root@linux ~]# cal
      June 2019     
Su Mo Tu We Th Fr Sa
                   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

显示公元2019年的日历

[root@linux ~]# cal 2019
                               2019                               

       January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                   1  2                   1  2
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    3  4  5  6  7  8  9
13 14 15 16 17 18 19   10 11 12 13 14 15 16   10 11 12 13 14 15 16
20 21 22 23 24 25 26   17 18 19 20 21 22 23   17 18 19 20 21 22 23
27 28 29 30 31         24 25 26 27 28         24 25 26 27 28 29 30
                                              31
        April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6             1  2  3  4                      1
 7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
                                              30
        July                  August                September     
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6                1  2  3    1  2  3  4  5  6  7
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    8  9 10 11 12 13 14
14 15 16 17 18 19 20   11 12 13 14 15 16 17   15 16 17 18 19 20 21
21 22 23 24 25 26 27   18 19 20 21 22 23 24   22 23 24 25 26 27 28
28 29 30 31            25 26 27 28 29 30 31   29 30

       October               November               December      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                   1  2    1  2  3  4  5  6  7
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    8  9 10 11 12 13 14
13 14 15 16 17 18 19   10 11 12 13 14 15 16   15 16 17 18 19 20 21
20 21 22 23 24 25 26   17 18 19 20 21 22 23   22 23 24 25 26 27 28
27 28 29 30 31         24 25 26 27 28 29 30   29 30 31

以1月1日起的天数显示今年的日历

[root@linux ~]# cal -jy
                           2019                          

          January                       February         
Sun Mon Tue Wed Thu Fri Sat   Sun Mon Tue Wed Thu Fri Sat
          1   2   3   4   5                        32  33
  6   7   8   9  10  11  12    34  35  36  37  38  39  40
 13  14  15  16  17  18  19    41  42  43  44  45  46  47
 20  21  22  23  24  25  26    48  49  50  51  52  53  54
 27  28  29  30  31            55  56  57  58  59

           March                         April           
Sun Mon Tue Wed Thu Fri Sat   Sun Mon Tue Wed Thu Fri Sat
                     60  61        91  92  93  94  95  96
 62  63  64  65  66  67  68    97  98  99 100 101 102 103
 69  70  71  72  73  74  75   104 105 106 107 108 109 110
 76  77  78  79  80  81  82   111 112 113 114 115 116 117
 83  84  85  86  87  88  89   118 119 120
 90
            May                           June           
Sun Mon Tue Wed Thu Fri Sat   Sun Mon Tue Wed Thu Fri Sat
            121 122 123 124                           152
125 126 127 128 129 130 131   153 154 155 156 157 158 159
132 133 134 135 136 137 138   160 161 162 163 164 165 166
139 140 141 142 143 144 145   167 168 169 170 171 172 173
146 147 148 149 150 151       174 175 176 177 178 179 180
                              181
            July                         August          
Sun Mon Tue Wed Thu Fri Sat   Sun Mon Tue Wed Thu Fri Sat
    182 183 184 185 186 187                   213 214 215
188 189 190 191 192 193 194   216 217 218 219 220 221 222
195 196 197 198 199 200 201   223 224 225 226 227 228 229
202 203 204 205 206 207 208   230 231 232 233 234 235 236
209 210 211 212               237 238 239 240 241 242 243

         September                      October          
Sun Mon Tue Wed Thu Fri Sat   Sun Mon Tue Wed Thu Fri Sat
244 245 246 247 248 249 250           274 275 276 277 278
251 252 253 254 255 256 257   279 280 281 282 283 284 285
258 259 260 261 262 263 264   286 287 288 289 290 291 292
265 266 267 268 269 270 271   293 294 295 296 297 298 299
272 273                       300 301 302 303 304

          November                      December         
Sun Mon Tue Wed Thu Fri Sat   Sun Mon Tue Wed Thu Fri Sat
                    305 306   335 336 337 338 339 340 341
307 308 309 310 311 312 313   342 343 344 345 346 347 348
314 315 316 317 318 319 320   349 350 351 352 353 354 355
321 322 323 324 325 326 327   356 357 358 359 360 361 362
328 329 330 331 332 333 334   363 364 365

date:显示和设置系统日期和时间

命令语法:date [选项] [显示日期格式] (以+开头,后面接格式)

选项选项含义
-d <字符串>显示指定字符串所描述的时间,而非当前的时间
-s <字符串>设置指定字符串来分开时间
-r <文件>显示文件指定文件的最后修改时间
-u输出或者设置协调的通用时间
-f<日期时间>从日期文件中按行读入时间描述

在显示日期时间时,可以使用时间域[1]

例子:设置计算机日期和时间为2028年2月2日19点14分[2]

[root@linux ~]# date 020219142028
Wed Feb  2 19:14:00 EST 2028
[root@linux ~]# date
Wed Feb  2 19:14:07 EST 2028
[root@linux ~]# date 0202191428
Wed Feb  2 19:14:00 EST 2028

设置计算机时间为上午9点16分

[root@linux ~]# date -s 09:16:00
Wed Feb  2 09:16:00 EST 2028

hwclock:查看和设置硬件时钟

命令语法:hwclock [选项]

选项选项含义
-s把系统时间设置成和硬件时钟一致。由于这个动作将会造成系统全面更新文件的存取时间,所以最好在系统启动是就执行它
-r读取并显示硬件时钟
-w使用当前系统时间设置硬件时钟
--test仅做测试,并不真的将时间写入硬件时钟或系统时间
-u把硬件时钟设置成UTC
-c定期比较系统时钟与CMOS时钟

例子:以系统时间更新硬件时间

[root@linux ~]# date
Wed Feb  2 09:22:45 EST 2028
[root@linux ~]# hwclock -w
[root@linux ~]# hwclock
Wed 02 Feb 2028 09:23:19 AM EST  -0.250224 seconds

以硬件时间更新系统时间

root@linux ~]# hwclock -s

 

sort:对文件中数据进行排序,并将结果显示在标准输出上

命令语法:sort [选项] [文件]

选项选项含义
-m如果给定文件已排好序,那么合并文件
-u对排序后认为相同的行只留其中一行
-d按字典顺序排序,比较时仅字母、数字、空格和制表符有意义
-f将小写字母与大写字母同等对待
-r按逆序输出排序结果
-c检查给定文件是否已经排好序,如果他们没有排好序,则打印一个出错信息,并以状态值1退出

例子:将文件cs.log数据排序,并显示在屏幕上

[root@localhost ~]# sort cs.log

读取文件cs.log内容,以倒序排序该文件并显示在屏幕上

[root@localhost ~]# sort -r cs.log

uniq:将重复行从输出文件中删除

命令语法:uniq [选项] [文件]

选项选项含义
-c显示输出中在每行行首加上本行在文件中出现的次数
-d只输出重复的行
-D显示所有重复的行
-u只显示文件不重复的行
-s k比较时跳过钱K个字符,K是数字
-w K对每行第K个字符以后的内容不做对照,K是数字
-f K比较时跳过前K列,K是数字
-i在比较的时候不区分大小写

例子:查看文件cs.log中不重复行数据的内容

[root@localhost ~]# cat cs.log
wewe
wewe
uoij
124
[root@localhost ~]# uniq -u cs.log
uoij
124

cut:从文件每行中显示出选定的字节、字符或字段(域)

命令语法:cut [选项] [文件]

选项选项含义
-b<列表>只选中指定的这些字节
-c<列表>只选中指定的这些字符
-d<分界符>使用指定分解符代替制表符昨晚区域分界
-f<列表>指定文件中设想被定界符(缺省情况下为制表符)隔开的字段的列表
-n取消分割多字节字符。仅和-b选项一起使用。如果字符的最后一个字节落在有-b选项的列表参数指示的范围之内,该字符将被写出;否则改字符将被排除
-s不打印没有包含分界符的行

例子:显示文件/etc/passwd中的用户登录名和用户全称字段,这是第1个和第5个字段,由冒号隔开。

[root@localhost ~]# cut -f 1,5 -d: /etc/passwd
root:root
bin:bin
daemon:daemon
adm:adm
lp:lp
sync:sync
shutdown:shutdown
halt:halt
mail:mail
operator:operator
games:games
ftp:FTP User
nobody:Nobody
systemd-network:systemd Network Management
dbus:System message bus
polkitd:User for polkitd
sshd:Privilege-separated SSH
postfix:
chrony:
li:

comm:逐行比较两个已排过序的文件

命令语法:comm [选项] [文件1] [文件2]

选项选项含义
-1不输出文件1特有的行
-2不输出文件2特有的行
-3不输出文件3特有的行

例子:比较文件file1和file2的文件内容

[root@localhost ~]# cat file1
a
aa
[root@localhost ~]# cat file2
a
bb

[root@localhost ~]# comm file1 file2
		a
aa
	bb
comm: file 2 is not in sorted order

比较文件file1和file2,只显示文件file1和file2中相同行的数据内容

[root@localhost ~]# comm -12 file1 file2
a
comm: file 2 is not in sorted order

diff:逐个比较两个文本文件,列出其不同之处

命令语法:diff [选项] [文件1] [文件2]

选项选项含义
-b忽略行尾的空格,二字符串中的一个或多个空格符都视为相等
-c使用上下文输出格式
-r当比较目录时,递归比较任何找到的子目录
-y以两列并排格式输出
-W<n>在并列格式输出时,使用指定的列宽,n代表数字
-u使用通用的输出格式
-i文件内容中忽略大小写差异
-w忽略所有的空白
-a所有的文件都视为文本文件来逐行比较
-B忽略插入删除空行引起的变化
-q只比较简短的输出文件是否不同
-s当两个文件相同时报告
-t在输出时扩展tab为空格,保护输入文件的tab对齐方式
-x<模式>排除匹配模式的文件
-X<文件>比较目录的时候,忽略和目录中与任何包含在指定文件的样式相配的文件和目录

例子:比较file1和file2文件,列出其不同之处

[root@localhost ~]# cat file1
a
aa
[root@localhost ~]# cat file2
a
bb

[root@localhost ~]# diff file1 file2
2c2,3
< aa
---
> bb
> 

摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
  1. 使用hostname命令修改主机名的方法在系统重启之后将失效,主机名还是原来的,如果需要永久设置,需要修改/etc/hostname文件,将主机名添加进去。 ↩

  2. 摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
  3. 用于查看日期和时间的相关命令

  4. cal
  5. date
  6. hwclock
  7. 时间域概念后面将详细说明 ↩

  8. 0202181428=020219142028 ↩

  9. 摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
  10. 用于文本内容处理的相关命令

  11. sort
  12. uniq
  13. cut
  14. comm
  15. diff

用于查找系统文件的相关命令

  • grep
  • find
  • locate

grep:查找文件中符号条件的字符串(关键词)

命令语法:grep [选项] 查找模式 [文件名]

选项选项含义
-E模式是一个可扩展的正则表达式
-F模式是一组有断行符分隔的定长字符串
-P模式是一个Perl正则表达式
-b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量
-c只显示匹配行的数量
-i比较时不区分大小写
-h抑制输出的文件名前缀
-l只显示匹配的文件名
-L只显示不匹配的文件名
-n在输出前加上匹配字符串所在行的行号(文件首行行号为1)
-v只显示不包含匹配字符的行
-x强制模式仅完全匹配一行
-w强制模式仅完全匹配字词
-e<模式>用模式来进行匹配操作
-f<文件>从文件取得模式
-r递归读取每个目录下的所有文件
-q禁止一切注册输出
-I强制认为该二进制文件没有包含任何搜索样式
-s取消错误消息
--color显示颜色

例子:在/etc/passwd文件中过滤出包含sy的行

[root@localhost ~]# grep sy /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

对匹配的关键词显示颜色

[root@localhost ~]# grep --color sy /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

显示所有以d开头的文件中包含“test“的行数据内容

[root@localhost ~]# cat d1
1
test1
[root@localhost ~]# cat d2
2
test2
[root@localhost ~]# grep "test" d*
d1:test1
d2:test2

在/root/aa文件中找出以b开头的行内容

[root@localhost ~]# cat aa
bbb
111
[root@localhost ~]# grep ^b /root/aa
bbb

在/root/kkk文件种蔬菜以le结尾的行内容

[root@localhost ~]# cat kkk
test file
test file1
123
abc
[root@localhost ~]# grep le$ /root/kkk
test file

查找sshd进程信息

[root@localhost ~]# ps -ef|grep sshd
root       7078      1  0 18:50 ?        00:00:00 /usr/sbin/sshd -D
root       7642   7078  0 20:38 ?        00:00:00 sshd: root@pts/1
root       7958   7646  0 22:04 pts/1    00:00:00 grep --color=auto sshd

find:搜索文件系统内符号条件的文件和目录

命令语法:find [命令选项] [路径] [表达式选项]

选项选项含义
-name<文件名>按文档名称查找文件
-perm<权限>按照文件的权限来查找文件
-user<用户名>按照文件德语所有者来查找文件
-group<组名>按照文件的组群所有者来查找文件
-atime n在过去n天内被访问过(atime)的文件,n代表数字
-amin n在过去n分钟内被访问过(atime)的文件,n代表数字
-ctime n在过去n天内被更改过(ctime)的文件,n代表数字
-cmin n在过去n分钟内被更改过(ctime)的文件,n代表数字
-mtime n在过去n天内被修改过(mtime)的文件,n代表数字
-mmin n在过去n分钟内被修改过(mtime)的文件,n代表数字
-size n[ckMG]查找大写为n的文件,n代表数字,c代表字节,k代表KB,M代表MB,G代表GB
-empty查找空文件,可以是普通的文件或目录
-type<文件类型>按文档类型查找,文件(f)、目录(d)、设备(b,c)、链接(l)等
-fstype<文件系统类型>按照指定文件系统类型来查找文件
-nogroup没有组群的文件
-nouser没有用户的文件
-uid<用户UID>按照文件的用户所有者的UID来查找文件
-gid<组群GID>按照文件的组群所有者的GID来查找文件
-inum n按照文件的inode号码来查找文件
-readable匹配只读文件
-samefile<文件名>查找和指定文件相同inode文件
-writable匹配可写文件
-links n按照文件链接数来查找文件,n代表数字

在查找文件时可以定义不同的文件类型

字符含义
b块设备文件
d目录
c字符设备文件
p管道文件
l符号链接文件
f普通文件
ssocket文件

例子:查找/boot目录下的启动菜单配置文件grub.cfg

[root@localhost ~]# find /boot name grub.cfg

查找“/"目录下所有以".conf"为扩展名的文件

[root@localhost ~]# find / -name "*.conf"

列出当前目录及其子目录下所有最近20天内更改过的文件

[root@localhost ~]# find . -ctime -20

查找/root目录中为空的文件或子目录

[root@localhost ~]# find /root -empty

查找/boot目录中查找文件类型为目录的文件

[root@localhost ~]# find /boot -type d

查找/home目录下用户所有者UID为1000的文件

[root@localhost ~]# find /home -uid 1000

查找inode号码是33582158的文件,(使用"start [文件]"命令可以查看文件inode号码)

[root@localhost ~]# find /root -inum 33582158
/root/anaconda-ks.cfg

不区分大小写查找文档jacob

root@localhost ~]# find -iname "cs.log"
./cs.log

查找计算机中2天前的当天被修改过的文档

root@localhost ~]# find / -mtime 2

查找当前目录下大于10MB的文档

[root@localhost ~]# find ./ -size +10M
./boot/initramfs-0-rescue-7ad525c9157940e3847220b1bdb8be06.img
./boot/initramfs-3.10.0-957.el7.x86_64.img

查找当前目录下所有普通文件

[root@localhost ~]# find ./ -type f

查找计算机中tom所拥有的所有文档

[root@localhost ~]# find ./ -user tom

查找大于1MB的文件后列出文件的详细信息

[root@localhost ~]# find ./ -size +1M -exec ls -l {} \;

查找计算机中所有大于1MB的文件

[root@localhost ~]# find / -size +1M -a -type f

locate:在数据库中查找文件

使用locate命令可以通过数据库(var/lib/mlocate/mlocate.db文件)来查找文件,这个数据库每天由cron程序来建立。当创建好这个数据库后,就可以方便地搜索所需文件了,它比find命令搜索速度还要快。 命令语法:locate [选项] [范本样式]

选项选项含义
-q安静模式,不会显示任何错误信息
-r使用正则表达式作为搜索的条件
-i匹配模式是忽略区分大小写
-c显示找到的条目数
-w匹配完整路径名

例子:查找httpd.conf文件

[root@localhost ~]# locate
-bash: locate: command not found
[root@localhost ~]# yum -y install mlocate
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
base                                                                                | 3.6 kB  00:00:00     
extras                                                                              | 3.4 kB  00:00:00     
updates                                                                             | 3.4 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                       | 166 kB  00:00:02     
(2/4): extras/7/x86_64/primary_db                                                   | 205 kB  00:00:02     
(3/4): base/7/x86_64/primary_db                                                     | 6.0 MB  00:00:04     
(4/4): updates/7/x86_64/primary_db                                                  | 6.4 MB  00:00:04     
Resolving Dependencies
--> Running transaction check
---> Package mlocate.x86_64 0:0.26-8.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================
 Package                  Arch                    Version                      Repository             Size
===========================================================================================================
Installing:
 mlocate                  x86_64                  0.26-8.el7                   base                  113 k

Transaction Summary
===========================================================================================================
Install  1 Package

Total download size: 113 k
Installed size: 379 k
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/mlocate-0.26-8.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for mlocate-0.26-8.el7.x86_64.rpm is not installed
mlocate-0.26-8.el7.x86_64.rpm                                                       | 113 kB  00:00:02     
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : mlocate-0.26-8.el7.x86_64                                                               1/1 
  Verifying  : mlocate-0.26-8.el7.x86_64                                                               1/1 

Installed:
  mlocate.x86_64 0:0.26-8.el7                                                                              

Complete!
[root@localhost ~]# updatedb
[root@localhost ~]# locate httpd.conf
/root/httpd.conf

摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著

 

 

 

用于系统内信息交流的相关命令

  • echo
  • mesg
  • wall
  • write

echo:在显示器上显示文字

命令语法:echo[选项] [字符串]

选项选项含义
-n表示输出文字后不换行

例子:将文本“hello linux”添加到新文件/root/notes中

[root@localhost ~]# echo hello linux > /root/notes
[root@localhost ~]# cat /root/notes
hello linux

显示$HOME变量的值

[root@localhost ~]# echo $HOME
/root

mesg:允许或拒绝写消息

用户使用mesg命令可以控制系中的其他用户是否能够用write命令或talk命令向自己发送消息。不带选项的情况下,mesg命令显示当前主机消息许可设置 命令语法:mesg [选项]

选项选项含义
y允许本地网络上的所有主机发送消息到自己的主机
n只允许root用户发送消息到自己的主机

例子:显示当前的消息许可设置

[root@localhost ~]# mesg
is y

只允许root用户发送消息到自己的主机

[root@localhost ~]# mesg n
[root@localhost ~]# mesg
is n

wall:对全部已登录用户发送消息

命令语法:wall [消息]

例子:向所有用户发出“Shut down the computer after work”的消息

[root@localhost ~]# wall Shut down the computer after work
[root@localhost ~]# 
Broadcast message from root@localhost.localdomain (pts/0) (Sat Jun 29 21:49:54 2019):

Shut down the computer after work

write:向用户发送消息

命令语法:write [用户] [终端名称]

例子:在tty2终端上向tty3终端上的root用户发送信息

[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# write root /dev/pts/2
hello i am /dev/pts/0
^C[root@localhost ~]# 

在tty2终端上显示的是

[root@localhost ~]# 
Message from root@localhost.localdomain on pts/0 at 22:02 ...
hello i am /dev/pts/0
EOF

摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著

分类: linux

 

 

Logo

更多推荐