vim:
光标回到首行:gg
全选:ggvG
把一条Linux命令的输出结果保存到一个文件中:
写入:> 追加:>> 实例: 把pwd命令的帮助文档写入到man_pwd文件中。 man pwd > man_pwd
cat:
把a中的内容加上行号后写入到b中: cat -n a > b 把a中的内容加上行号后追加到b中: cat -b a >> b 清空 a: cat /dev/null > a
cksum:
用于检查文件的CRC是否正确。确保文件从一个系统传输到另一个系统的过程中不被损坏。 使用指令"cksum"计算文件"testfile1"的完整性,输入如下命令: cksum a 以上命令执行后,将输出校验码等相关的信息: >>> 2179226573 47 a //"2179226573"表示校验码,"47"表示字节数。 注意:如果文件中有任何字符被修改,都将改变校验码的值。
cmp:
用于比较两个文件是否有差异。 当相互比较的两个文件完全一样时,则该指令不会显示任何信息。 若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。
diff:
diff以逐行的方式,比较文本文件的异同处。 如果要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。 比较文件: ubuntu@ubuntu:~$ diff aa/c bb/c 5c5 < sdf --- > sdff 比较目录: ubuntu@ubuntu:~$ diff aa bb Only in aa: a Only in bb: b diff aa/c bb/c 5c5 < sdf --- > sdff
file:
ubuntu@ubuntu:~$ file a a: ASCII text ubuntu@ubuntu:~$ file aa aa: directory
find:
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。 ubuntu@ubuntu:~$ find aa aa aa/a aa/c amin、atime、cmin、ctime: a是access,c是change: '-'是以内,'+'是以前,比如20分钟以内,20分钟以前: ubuntu@ubuntu:~/aa$ find -atime +20 ubuntu@ubuntu:~/aa$ find -atime 20 ubuntu@ubuntu:~/aa$ find -atime -20 . ./bbb ./a ./c
cut:
用于显示每行从开头算起 num1 到 num2 的文字。
ubuntu@ubuntu:~/aa$ cat a
yangxiaoling hebei china
aositree lie
sd
sdfsdfsf
ubuntu@ubuntu:~/aa$ cut -c 3,5 a //第三列和第五列,'-c'是按字符,'-b'是按字节。
nx
st
fd
ubuntu@ubuntu:~/aa$ cut -c 3-5 a //第三列到第五列
ngx
sit
fsd
grep:
字符串查找 实例: 找出包含特定字符串的行数据。print lines matching a pattern. ubuntu@ubuntu:~$ grep 'to' man_pwd matching lines are merged to the first occurrence. writing to OUTPUT (or standard output). matching lines are merged to the first occurrence. Mandatory arguments to long options are mandatory for short options too. 忽略大小写。Ignore case distinctions in both the PATTERN and the input files. ubuntu@ubuntu:~$ grep -i 'To' man_pwd //--ignore-case matching lines are merged to the first occurrence. writing to OUTPUT (or standard output). matching lines are merged to the first occurrence. Mandatory arguments to long options are mandatory for short options too. 不包含'to'的行数据。Invert the sense of matching, to select non-matching lines. ubuntu@ubuntu:~$ grep -v 'to' man_pwd //--invert-match djacent matching lines from INPUT (or standard input), With no options, 匹配的只能是整个单词。Select only those lines containing matches that form whole words. ubuntu@ubuntu:~$ grep -w 'to' man_pwd //--word-regexp matching lines are merged to the first occurrence. writing to OUTPUT (or standard output). matching lines are merged to the first occurrence. Mandatory arguments to long options are mandatory 整行只包含特定字符串。Select only those lines containing matches that form whole words. ubuntu@ubuntu:~$ cat man_pwd //有两行只有'to',而且是以'to'开头。 djacent matching lines from INPUT (or standard input), matching lines are merged to the first occurrence. writing to OUTPUT (or standard output). to With no options, to matching lines are merged to the first occurrence. Mandatory arguments to long options are mandatory for short options too. ubuntu@ubuntu:~$ grep -x 'to' man_pwd //--word-regexp to to 找出包含特定字符串的行数。print a count of matching lines for each input file. ubuntu@ubuntu:~$ grep -c 'to' man_pwd //--count 5 只打印匹配到的部分,每一部分占一行。Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. ubuntu@ubuntu:~$ grep -o 'to' man_pwd //--only-matching to to to to to to to
ln:
'-s':软链接: ubuntu@ubuntu:~/bb$ ln -s ~/aa/a //链接名默认为原文件名 ubuntu@ubuntu:~/bb$ ln -s ~/aa/a yang //链接名
mc:
用于提供一个菜单式的文件管理程序。 F10,退出
mv:
mv 文件名 文件名 将源文件名改为目标文件名。 mv 文件名 目录名 将文件移动到目标目录。 mv 目录名 目录名 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名。
od:
用于读取文件的内容,并将其内容以八进制呈现出来。
paste:
ubuntu@ubuntu:~$ cat -n a 1 yangxiaoling hebei china 2 3 aositree lie 4 5 6 sdfsdfsf ubuntu@ubuntu:~$ cat -n b 1 dandan xini 2 3 4 5 aositree lie 6 houhahouha ubuntu@ubuntu:~$ cat -n c 1 YANGxiaoling hebei china 2 3 abcedsfls 4 5 sdf 以列合并同一行的内容: ubuntu@ubuntu:~$ paste a b c yangxiaoling hebei china dandan xini YANGxiaoling hebei aositree lie abcedsfls aositree lie sdf sdfsdfsf houhahouha '-s':往下排,不以列合并同一行。 ubuntu@ubuntu:~$ cat -s a b c yangxiaoling hebei china aositree lie sdfsdfsf dandan xini aositree lie houhahouha YANGxiaoling hebei china abcedsfls sdf 单个文件: ubuntu@ubuntu:~$ paste -s a yangxiaoling hebei china aositree lie sdfsdfsf
sort:
把文件以行为单位,从首字符开始,按照ASCII码进行排序。 好像行首的空格被忽略,而且不区分大小写。 实例: ubuntu@ubuntu:~$ cat man_pwd yangxl xiaoling Xingta hebei haiya nggu guog ubuntu@ubuntu:~$ cat man_pwd | sort haiya nggu guog hebei xiaoling Xingta yangxl 按照每行的第三个单词/关键字排序 ubuntu@ubuntu:~$ cat man_pwd | sort -k3 matching lines are merged to the first occurrence. matching lines are merged to the first occurrence. (or standard input), djacent matching lines from INPUT With no options, for short options too. writing to OUTPUT (or standard output). Mandatory arguments to long options are mandatory 按照每行的第四个单词/关键字排序 ubuntu@ubuntu:~$ cat man_pwd | sort -k4 (or standard input), With no options, djacent matching lines from INPUT Mandatory arguments to long options are mandatory matching lines are merged to the first occurrence. matching lines are merged to the first occurrence. writing to OUTPUT (or standard output). for short options too.
split:
用于将一个文件分割成数个,在默认情况下将按照每1000行切割成一个小文件。 -<行数>:指定每多少行切成一个小文件。 -b:指定每多少字节切成一个小文件。 将文件"README"每6行切割成一个文件,输入如下命令: $ split -6 README 以上命令执行后,指令"split"会将原来的大文件"README"切割成多个以"x"开头的小文件。而在这些小文件中,每个文件都只有6行内容。 使用指令"ls"查看当前目录结构,如下所示: README xaa xad xag xab xae xah xac xaf xai
tee:
Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。 -a或--append 附加到既有文件的后面,而非覆盖它。 将用户输入的数据同时保存到文件"file1"和"file2"中: $ tee file1 file2 以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示: My Linux #提示用户输入数据 My Linux #输出数据,进行输出反馈 强制退出:Ctrl+C
touch:
用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 -a 改变档案的读取时间记录。 -m 改变档案的修改时间记录。 -c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。 $ touch testfile #修改文件的时间属性或创建新文件。
uniq:
ubuntu@ubuntu:~$ cat man_pwd djacent matching lines from INPUT (or standard input), matching lines are merged to the first occurrence. writing to OUTPUT (or standard output). With no options, matching lines are merged to the first occurrence. Mandatory arguments to long options are mandatory for short options too. (注)man_pwd的最后一行也是空行。 标出连续出现的行数(未排序时) ubuntu@ubuntu:~$ cat man_pwd | uniq -c 1 djacent matching lines from INPUT 1 (or standard input), 1 matching lines are merged to the first occurrence. 1 writing to OUTPUT (or standard output). 2 1 With no options, 1 matching lines are merged to the first occurrence. 1 Mandatory arguments to long options are mandatory 1 1 for short options too. 1 标出每行在文件中出现的次数(已排序) ubuntu@ubuntu:~$ cat man_pwd | sort | uniq -c 4 1 djacent matching lines from INPUT 1 for short options too. 1 Mandatory arguments to long options are mandatory 2 matching lines are merged to the first occurrence. 1 (or standard input), 1 With no options, 1 writing to OUTPUT (or standard output).
awk:因内容太多,自成一篇。
col:
用于过滤控制字符。 在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。 语法 col [-bfx][-l<缓冲区列数>] 参数: -b 过滤掉所有的控制字符,包括RLF和HRLF。 -f 滤除RLF字符,但允许将HRLF字符呈现出来。 -x 以多个空格字符来表示跳格字符。 -l<缓冲区列数> 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。 实例 下面以 man 命令帮助文档为例,讲解col 命令的使用。 将man命令的帮助文档保存为man_help,使用-b 参数过滤所有控制字符。在终端中使用如下命令: man man | col -b > man_help
colrm:
用于滤掉指定的行。 colrm指令从标准输入设备读取,输出到标准输出设备。如果不加任何参数,则该指令不会过滤任何一行。 语法 colrm [开始行数编号<结束行数编号>] 参数说明: 开始行数编号: 指定要删除的列的起始编号。 结束行数编号: 指定要删除的列的结束编号,有时候这个参数可以省略。 实例: 按回车键后,光标将在第一行闪烁,等待标准输入,此时输入字符,如"Hello Linux!",再按回车键后第二行将出现与第一行相同内容,此时按Ctrl+C组合键可以退出。终端中显示的内容如下所示: cmd@hdd-desktop:~$ colrm Hello Linux! #输入Hello Linux!字符串 Hello Linux! #输出刚才输入的字符串Hello Linux! 如想要删除第4列之后的所有内容,可以使用如下命令: cmd@hdd-desktop:~$ colrm 4 类似于上例,此时标准输入等待输入,用户输入字符串按回车键后,将输出如下结果: Hello Linux! #输入Hello Linux!字符串 Hel #输出删除了第4列以后所有内容的字符串 删除指定列的内容。如删除第4列到第6列的内容,可使用如下命令: colrm 4 6 输出的结果如下: cmd@hdd-desktop:~$ colrm 4 6 Hello Linux! #输入Hello Linux!字符串 HelLinux! #输出删除了从第4列到第6列字符的字符串
comm:
用于比较两个已排过序的文件。 这项指令会一行行地比较两个已排序文件的差异,并将其结果显示出来,如果没有指定任何参数,则会把结果分成3列显示:第1列仅是在第1个文件中出现过的,第2列是仅在第2个文件中出现过的,第3列则是在第1与第2个文件里都出现过的。若给予的文件名称为"-",则comm指令会从标准输入设备读取数据。 语法 comm [-123][--help][--version][第1个文件][第2个文件] 参数: -1 不显示只在第1个文件里出现过的列。 -2 不显示只在第2个文件里出现过的列。 -3 不显示只在第1和第2个文件里出现过的列。 --help 在线帮助。 --version 显示版本信息。 实例 aaa.txt 与 bbb.txt 的文件内容如下: [root@localhost text]# cat aaa.txt aaa bbb ccc ddd eee 111 222 [root@localhost text]# cat bbb.txt bbb ccc aaa hhh ttt jjj 执行comm命令输出结果如下: [root@localhost text]# comm aaa.txt bbb.txt aaa bbb ccc aaa ddd eee 111 222 hhh ttt jjj 第一列 第二列 第三列 输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列是以制表符( )作为定界符。
csplit:
用于分割文件。 将文件依照指定的范本样式予以切割后,分别保存成名称为xx00,xx01,xx02...的文件。若给予的文件名称为"-",则csplit指令会从标准输入设备读取数据。 语法 csplit [-kqsz][-b<输出格式>][-f<输出字首字符串>] [-n<输出文件名位数>][--help][--version][文件][范本样式...] 参数: -b<输出格式>或--suffix-format=<输出格式> 预设的输出格式其文件名称为xx00,xx01...等,您可以通过改变<输出格式>来改变输出的文件名。 -f<输出字首字符串>或--prefix=<输出字首字符串> 预设的输出字首字符串其文件名为xx00,xx01...等,如果你指定输出字首字符串为"hello",则输出的文件名称会变成hello00,hello01...等。 -k或--keep-files 保留文件,就算发生错误或中断执行,也不能删除已经输出保存的文件。 -n<输出文件名位数>或--digits=<输出文件名位数> 预设的输出文件名位数其文件名称为xx00,xx01...等,如果你指定输出文件名位数为"3",则输出的文件名称会变成xx000,xx001...等。 -q或-s或--quiet或--silent 不显示指令执行过程。 -z或--elide-empty-files 删除长度为0 Byte文件。 --help 在线帮助。 --version 显示版本信息。 实例 testfile文件中的内容如下: $ cat testfile #查看testfile 文件内容 hello Linux! Linux is a free Unix-type operating system. This is a Linux testfile! Linux 将文本文件testfile以第 3 行为分界点切割成两份,使用如下命令: $ csplit testfile 3 61 #xx00文件字符个数 35 #xx01文件字符个数 其中第1行是第一个文件xx00的字符个数,同样,第2行为第二个文件xx01的字符个数。同时,在testfile 的同目录下将生成两个文件,文件名分别为xx00、xx01,xx00 中的内容为: $ cat xx00 #查看分割后的xx00文件内容 hello Linux! #testfile文件第1行的内容 Linux is a free Unix-type operating system. xx01 中的内容为: $ cat xx01 #查看分割后的xx01文件内容 This is a Linux testfile! #testfile文件第3行以后的内容 Linux
ed:
文本编辑器。 ed是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。 ed命令并不是一个常用的命令,一般使用比较多的是vi指令。但ed文本编辑器对于编辑大文件或对于在shell脚本程序中进行文本编辑很有用。 语法 ed [-][-Gs][-p<字符串>][--help][--version][文件] 参数: -G或--traditional 提供回兼容的功能。 -p<字符串> 指定ed在command mode的提示字符。 -s,-,--quiet或--silent 不执行开启文件时的检查功能。 --help 显示帮助。 --version 显示版本信息。 实例 以下是一个 Linux ed 完整实例解析: $ ed <- 激活 ed 命令 a <- 告诉 ed 我要编辑新文件 My name is Titan. <- 输入第一行内容 And I love Perl very much. <- 输入第二行内容 . <- 返回 ed 的命令行状态 i <- 告诉 ed 我要在最后一行之前插入内容 I am 24. <- 将“I am 24.”插入“My name is Titan.”和“And I love Perl very much.”之间 . <- 返回 ed 的命令行状态 c <- 告诉 ed 我要替换最后一行输入内容 I am 24 years old. <- 将“I am 24.”替换成“I am 24 years old.”(注意:这里替换的是最后输的内容) . <- 返回 ed 的命令行状态 w readme.text <- 将文件命名为“readme.text”并保存(注意:如果是编辑已经存在的文件,只需要敲入 w 即可) q <- 完全退出 ed 编辑器 这是文件的内容是: $ cat readme.text My name is Titan. I am 24 years old. And I love Perl vrey much.
egrep:
用于在文件内查找指定的字符串。 egrep执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。 egrep是用extended regular expression语法来解读的,而grep则用basic regular expression语法解读,extended regular expression比basic regular expression的表达更规范。 语法 egrep [范本模式] [文件或目录] 参数说明: [范本模式] :查找的字符串规则。 [文件或目录] :查找的目标文件或目录。 实例 显示文件中符合条件的字符。例如,查找当前目录下所有文件中包含字符串"Linux"的文件,可以使用如下命令: egrep Linux * 结果如下所示: $ egrep Linux * #查找当前目录下包含字符串“Linux”的文件 testfile:hello Linux! #以下五行为testfile中包含Linux字符的行 testfile:Linux is a free Unix-type operating system. testfile:This is a Linux testfile! testfile:Linux xx00:hello Linux! #xx00包含Linux字符的行 xx01:Linux is a free Unix-type operating system. #以下三行为xx01包含Linux字符的行 xx01:This is a Linux testfile! xx01:Linux
ex:
用于在Ex模式下启动vim文本编辑器。 ex执行效果如同vi -E,使用语法及参数可参照vi指令,如要从Ex模式回到普通模式,则在vim中输入":vi"或":visual"指令即可。 语法 ex [选项][参数] 参数说明: +数字:从文件指定的数字行开始显示 -b:使用二进制模式编辑文件 -c 指令:编辑完第一个文件后执行指定的指令 -d :编辑多个文件时,显示差异部分 -m :不允许修改文件 -n :不使用缓存 -oN:其中 N 为数字 -r :列出缓存,并显示恢复信息 -R :以只读的方式打开文件 -s :不显示任何错误信息 -V :显示指令的详细执行过程 --help :显示帮助信息 --version :显示版本信息 实例 在ex 指令后输入文件名按回车键后,即可进入ex 编辑模式,如编辑testfile文件,使用的命令格式如下: ex testfile 输出的信息如下: "testfile" 5L, 95C "testfile"表示文件名,5L表示5 行,95 表示字节数 进入ex 模式。输入"visual"回到正常模式 它的操作与vim中是一样的,此时如果在":"后输入"visual"后按回车键,将进入到vi指令全屏界面;如果输入"q",则退出编辑器。
fmt:
用于编排文本文件。 fmt指令会从指定的文件里读取内容,将其依照指定格式重新编排后,输出到标准输出设备。若指定的文件名为"-",则fmt指令会从标准输入设备读取数据。 语法 fmt [-cstu][-p<列起始字符串>][-w<每列字符数>][--help][--version][文件...] 参数说明: -c或--crown-margin 每段前两列缩排。 -p<列起始字符串>或-prefix=<列起始字符串> 仅合并含有指定字符串的列,通常运用在程序语言的注解方面。 -s或--split-only 只拆开字数超出每列字符数的列,但不合并字数不足每列字符数的列。 -t或--tagged-paragraph 每列前两列缩排,但第1列和第2列的缩排格式不同。 -u或--uniform-spacing 每个字符之间都以一个空格字符间隔,每个句子之间则两个空格字符分隔。 -w<每列字符数>或--width=<每列字符数>或-<每列字符数> 设置每列的最大字符数。 --help 在线帮助。 --version 显示版本信息。 实例 如文件testfile共5行文字, $ cat testfile #查看testfile 文件的内容 hello Linux! Linux is a free Unix-type operating system. This is a Linux testfile! Linux Linux 可以通过对该文件格式进行重排,其命令为: $ fmt testfile #重排testfile文件 输出结果如下: hello Linux! Linux is a free Unix-type operating system. This is a Linux testfile! Linux Linux 将文件testfile重新排成85个字符一行,并在标准输出设备上输出,其命令应该为: $ fmt -w 85 testfile #指定重排宽度为85个字符 输出结果如下: hello Linux! Linux is a free Unix-type operating system. This is a Linux testfile! #还有换行符 Linux Linux
fold:
用于限制文件列宽。 fold指令会从指定的文件里读取内容,将超过限定列宽的列加入增列字符后,输出到标准输出设备。若不指定任何文件名称,或是所给予的文件名为"-",则fold指令会从标准输入设备读取数据。 语法 fold [-bs][-w<每列行数>][--help][--version][文件...] 参数: -b或--bytes 以Byte为单位计算列宽,而非采用行数编号为单位。 -s或--spaces 以空格字符作为换列点。 -w<每列行数>或--width<每列行数> 设置每列的最大行数。 --help 在线帮助。 --version 显示版本信息。 实例 将一个名为testfile的文件的行折叠成宽度为30,可使用如下命令: fold -w 30 testfile 为了对比,先将testfile文件输出如下: $ cat testfile #查看testfile 中的内容 Linux networks are becoming more and more common, but security is often an overlooked issue. Unfortunately, in today’s environment all networks are potential hacker targets, from top-secret military research networks to small home LANs. Linux Network Security focuses on securing Linux in a networked environment, where the security of the entire network needs to be considered rather than just isolated machines. It uses a mix of theory and practical techniques to teach administrators how to install and use security applications, as well as how the applications work and why they are necessary. 然后使用fold命令折叠显示: $ fold -w 30 testfile #行折叠成宽度为30,显示testfile 文件 Linux networks are becoming mo re and more common, but securi ty is often an overlooked issu e. Unfortunately, in today’s environment all networks are potential hacker targets, from top-secret military research networks to small home LANs. Linux Network Security focuses on securing Linux in a networ ked environment, where the sec urity of the entire network ne eds to be considered rather th an just isolated machines. It uses a mix of theory and pract ical techniques to teach admin istrators how to install and u se security applications, as w ell as how the applications wo rk and why they are necessary
head和tail:
head用于查看文件的开头几行,默认查看10行。 tail用于查看文件的最后几行,默认查看10行。 实例: 查看文件结尾20行 tail -20 file_name 还可以使用 tail 来观察日志文件被更新的过程。使用 -f 选项,tail 会自动实时地把打开文件中的新消息显示到屏幕上。例如,要即时观察 /var/log/messages的变化,以根用户身份在 shell 提示下键入以下命令:tail -f /var/log/messages
df:
用于显示目前在Linux系统上的文件系统的磁盘使用情况。
dir:
用于显示当前目录下的文件及文件夹。
du:
用于显示目录或文件的大小。
stat:
用于显示inode内容。 实例: ubuntu@ubuntu:~$ cat testfile hello Linux! Linux is a free Unix-type operating system. This is a Linux testfile! Linux yangxl ubuntu@ubuntu:~$ stat testfile File: 'testfile' Size: 105 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 919209 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu) Access: 2017-06-04 15:41:32.318667430 +0800 Modify: 2017-06-04 15:41:30.334480066 +0800 Change: 2017-06-04 15:41:30.394485732 +0800 Birth: -
tree:
用于以树状图列出目录的内容。
telnet:
用于登录远程主机。 # telnet 192.168.0.5 //登录IP为 192.168.0.5 的远程主机
ping:
用于检测主机。 执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 语法 ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址] 参数说明: -d 使用Socket的SO_DEBUG功能。 -c<完成次数> 设置完成要求回应的次数。 -f 极限检测。 -i<间隔秒数> 指定收发信息的间隔时间。 -I<网络界面> 使用指定的网络界面送出数据包。 -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。 -n 只输出数值。 -p<范本样式> 设置填满数据包的范本样式。 -q 不显示指令执行过程,开头和结尾的相关信息除外。 -r 忽略普通的Routing Table,直接将数据包送到远端主机上。 -R 记录路由过程。 -s<数据包大小> 设置数据包的大小。 -t<存活数值> 设置存活数值TTL的大小。 -v 详细显示指令的执行过程。 实例: 检测是否与主机连通 ubuntu@ubuntu:~$ ping www.baidu.com PING www.a.shifen.com (119.75.218.70) 56(84) bytes of data. 64 bytes from 119.75.218.70: icmp_seq=1 ttl=128 time=10.3 ms 64 bytes from 119.75.218.70: icmp_seq=2 ttl=128 time=4.42 ms 64 bytes from 119.75.218.70: icmp_seq=3 ttl=128 time=5.61 ms 64 bytes from 119.75.218.70: icmp_seq=4 ttl=128 time=4.67 ms 64 bytes from 119.75.218.70: icmp_seq=5 ttl=128 time=5.00 ms 64 bytes from 119.75.218.70: icmp_seq=6 ttl=128 time=5.19 ms ^C //需要手动终止Ctrl+C --- www.a.shifen.com ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5012ms rtt min/avg/max/mdev = 4.423/5.880/10.374/2.044 ms 指定接收包的次数 ubuntu@ubuntu:~$ ping -c 3 www.baidu.com //收到3次包后,自动退出 PING www.a.shifen.com (119.75.218.70) 56(84) bytes of data. 64 bytes from 119.75.218.70: icmp_seq=1 ttl=128 time=7.70 ms 64 bytes from 119.75.218.70: icmp_seq=2 ttl=128 time=5.58 ms 64 bytes from 119.75.218.70: icmp_seq=3 ttl=128 time=5.57 ms --- www.a.shifen.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 5.570/6.287/7.704/1.005 ms ubuntu@ubuntu:~$ 多参数使用 ubuntu@ubuntu:~$ ping -i 3 -s 1024 -t 255 www.baidu.com //-i 3 发送周期为 3秒 -s 设置发送包的大小 -t 设置TTL值为 255 PING www.a.shifen.com (119.75.218.70) 1024(1052) bytes of data. 1032 bytes from 119.75.218.70: icmp_seq=1 ttl=128 time=12.8 ms 1032 bytes from 119.75.218.70: icmp_seq=2 ttl=128 time=5.33 ms 1032 bytes from 119.75.218.70: icmp_seq=3 ttl=128 time=5.82 ms 1032 bytes from 119.75.218.70: icmp_seq=4 ttl=128 time=5.90 ms ^C --- www.a.shifen.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 9012ms rtt min/avg/max/mdev = 5.330/7.479/12.858/3.113 ms
tty:
用于显示终端机连接标准输入设备的文件名称。 在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。 实例: ubuntu@ubuntu:~$ tty /dev/pts/2
useradd:
用于新增使用者帐号或更新预设的使用者资料。 adduser 与 useradd 指令为同一指令(经由符号连结 symbolic link)。 使用权限:系统管理员。 adduser是增加使用者。相对的,也有删除使用者的指令,userdel。语法:userdel [login ID]
chfn:
更改个人信息,用于 finger and mail username 使用权限:所有使用者。 实例: ubuntu@ubuntu:/home$ sudo chfn kkkk //默认改变自己的信息。 Changing the user information for kkkk Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []:
date:
用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下: 时间方面: % : 印出 % %n : 下一行 %t : 跳格 %H : 小时(00..23) %I : 小时(01..12) %k : 小时(0..23) %l : 小时(1..12) %M : 分钟(00..59) %p : 显示本地 AM 或 PM %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61) %T : 直接显示时间 (24 小时制) %X : 相当于 %H:%M:%S %Z : 显示时区 日期方面: %a : 星期几 (Sun..Sat) %A : 星期几 (Sunday..Saturday) %b : 月份 (Jan..Dec) %B : 月份 (January..December) %c : 直接显示日期与时间 %d : 日 (01..31) %D : 直接显示日期 (mm/dd/yy) %h : 同 %b %j : 一年中的第几天 (001..366) %m : 月份 (01..12) %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形) %w : 一周中的第几天 (0..6) %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形) %x : 直接显示日期 (mm/dd/yy) %y : 年份的最后两位数字 (00.99) %Y : 完整年份 (0000..9999) 若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。 使用权限:所有使用者。 当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的0给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说root)才能设定系统时间。 当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。 语法 date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 参数说明: -d datestr : 显示 datestr 中所设定的时间 (非系统时间) --help : 显示辅助讯息 -s datestr : 将系统时间设为 datestr 中所设定的时间 -u : 显示目前的格林威治时间 --version : 显示版本编号 实例 显示当前时间 # date 三 5月 12 14:08:12 CST 2010 # date '+%c' 2010年05月12日 星期三 14时09分02秒 # date '+%D' //显示完整的时间 05/12/10 # date '+%x' //显示数字日期,年份两位数表示 2010年05月12日 # date '+%T' //显示日期,年份用四位数表示 14:09:31 # date '+%X' //显示24小时的格式 14时09分39秒 按自己的格式输出 # date '+usr_time: $1:%M %P -hey' usr_time: $1:16 下午 -hey 显示时间后跳行,再显示目前日期 date '+%T%n%D' 显示月份与日数 date '+%B %d' 显示日期与设定时间(12:34:56) date --date '12:34:56'
exit:
用于退出目前的shell。 实例: ubuntu@ubuntu:/home$ exit logout Connection closed by foreign host. Disconnected from remote host(ubuntu-2) at 18:56:46. Type `help' to learn how to use Xshell prompt. [d:~]$
sleep:
用于将目前动作延迟一段时间后再执行。 使用权限:所有使用者。 语法 sleep [--help] [--version] number[smhd] 参数说明: --help : 显示辅助讯息 --version : 显示版本编号 number : 时间长度,后面可接 s、m、h 或 d 其中 s 为秒,m 为 分钟,h 为小时,d 为日数 ubuntu@ubuntu:~$ sleep 5s; date Sun Jun 4 19:08:17 CST 2015
suspend:
用于暂停执行shell。 suspend为shell内建指令,可暂停目前正在执行的shell。若要恢复,则必须使用SIGCONT信息。 语法 suspend [-f] 参数说明: -f 若目前执行的shell为登入的shell,则suspend预设无法暂停此shell。若要强迫暂停登入的shell,则必须使用-f参数。 实例: 暂停shell # suspend -bash: suspend: 无法挂起一个登录的shell # suspend -f
halt:
若系统的runlevel为0或6,则Linux halt命令关闭系统,否则以shutdown指令(加上 -h 参数)来取代。 使用权限:系统管理者。 语法 halt [-n] [-w] [-d] [-f] [-i] [-p] 参数说明: -n : 在关机前不做将记忆体资料写回硬盘的动作 -w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里 -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令 -i : 在关机之前先把所有网络相关的装置先停止 -p : 当关机的时候,顺便做关闭电源(poweroff)的动作 实例 关闭系统 # halt 关闭系统并关闭电源 # halt -p 关闭系统,但不留下纪录 # halt -d
skill:
用于删除执行中的程序或工作。 kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。 语法 kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>] 参数说明: -l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。 -s <信息名称或编号> 指定要送出的信息。 [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。 实例 杀死进程 # kill 12345 强制杀死进程 # kill -KILL 123456 发送SIGHUP信号,可以使用一下信号 # kill -HUP pid 彻底杀死进程 # kill -9 123456 显示信号 # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX 杀死指定用户所有进程 #kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程 #kill -u hnlinux //方法二
last:
用于显示系统开机以来或是从每月初登入者的讯息。 使用权限:所有使用者。 语法 shell>> last [options] 参数说明: -R 省略 hostname 的栏位 -num 展示前 num 个 username 展示 username 的登入讯息 tty 限制登入讯息包含终端机代号 实例 ubuntu@ubuntu:~$ last -R -2 ubuntu pts/19 Sun Jun 4 19:31 still logged in ubuntu tty7 Sun Jun 4 19:30 gone - no logout wtmp begins Fri Jun 2 12:38:45 2017 ubuntu@ubuntu:~$ last -4 ubuntu ubuntu pts/19 192.168.62.1 Sun Jun 4 19:31 still logged in ubuntu tty7 :0 Sun Jun 4 19:30 gone - no logout ubuntu pts/4 192.168.62.1 Sun Jun 4 19:13 - 19:29 (00:15) ubuntu pts/2 192.168.62.1 Sun Jun 4 18:58 - 19:14 (00:15) wtmp begins Fri Jun 2 12:38:45 2017 一般显示方法 # last
lastb:
用于列出登入系统失败的用户相关信息。 单独执行lastb指令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容 记录的登入失败的用户名单,全部显示出来。 语法 lastb [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...] 参数说明: -a 把从何处登入系统的主机名称或IP地址显示在最后一行。 -d 将IP地址转换成主机名称。 -f<记录文件> 指定记录文件。 -n<显示列数>或-<显示列数> 设置列出名单的显示列数。 -R 不显示登入系统的主机名称或IP地址。 -x 显示系统关机,重新开机,以及执行等级的改变等信息。 实例 显示登录失败的用户 # lastb root tty7 :1 Thu May 13 11:26 - 11:26 (00:00) btmp begins Thu May 13 11:26:39 2014
logname:
用于显示用户名称。 执行logname指令,它会显示目前用户的名称。 实例: 显示登录账号的信息: # logname root
logout:
Linux logout命令用于退出系统。 logout指令让用户退出系统,其功能和login指令相互对应。 实例: ubuntu@ubuntu:~$ logout Connection closed by foreign host. Disconnected from remote host(ubuntu-2) at 20:08:24. Type `help' to learn how to use Xshell prompt. [d:~]$
ps:
用于显示当前进程(process)的状态。 语法 ps [options] [--help] 参数: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的行程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程 au(x) 输出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER: 行程拥有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的记忆体使用率 VSZ: 占用的虚拟记忆体大小 RSS: 占用的记忆体大小 TTY: 终端的次要装置号码 (minor device number of tty) STAT: 该行程的状态: D: 不可中断的静止 (通悸□□缜b进行 I/O 动作) R: 正在执行中 S: 静止状态 T: 暂停执行 Z: 不存在但暂时无法消除 W: 没有足够的记忆体分页可分配 <: 高优先序的行程 N: 低优先序的行程 L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O) START: 行程开始时间 TIME: 执行的时间 COMMAND:所执行的指令 实例 # ps -A 显示进程信息 PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 ……省略部分结果 30749 pts/0 00:00:15 gedit 30886 ? 00:01:10 qtcreator.bin 30894 ? 00:00:00 qtcreator.bin 31160 ? 00:00:00 dhclient 显示指定用户信息 # ps -u root //显示root进程用户信息 PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 ……省略部分结果 30487 ? 00:00:06 gnome-terminal 30488 ? 00:00:00 gnome-pty-helpe 显示所有进程信息,连同命令行 # ps -ef //显示所有命令,连带命令行 UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:22 ? 00:00:02 /sbin/init root 2 0 0 10:22 ? 00:00:00 [kthreadd] root 3 2 0 10:22 ? 00:00:00 [migration/0] ……省略部分结果 root 31302 2095 0 17:42 ? 00:00:00 sshd: root@pts/2
uptime:
ubuntu@ubuntu:~$ uptime 11:06:45 up 11 min, 1 user, load average: 0.25, 0.44, 0.48 当前时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
cat /proc/loadavg:
ubuntu@ubuntu:~$ cat /proc/loadavg 0.04 0.10 0.27 1/354 2429 1、5、15分钟内的平均负载;后面两个,一个的分子是正在运行的进程数,分母是进程总数;另一个是最近运行的进程ID号。
w:
ubuntu@ubuntu:~$ w 11:21:33 up 26 min, 1 user, load average: 0.01, 0.04, 0.18 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ubuntu pts/8 192.168.62.1 11:06 0.00s 0.39s 0.04s w
系统负载:
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中: 它没有在等待I/O操作的结果 它没有主动进入等待状态(也就是没有调用'wait') 没有被停止(例如:等待终止) 一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
nice:
用于调整程序优先级。
procinfo:
Linux procinfo命令用于显示系统状态,比如内存,磁盘空间,IRP和DMA等信息。 procinfo(process information)指令从/proc目录里读取相关数据,将数据妥善整理过后输出到标准输出设备。
top:
实时显示process的动态。 ubuntu@ubuntu:~$ top top - 11:49:55 up 54 min, 1 user, load average: 0.09, 0.12, 0.08 Tasks: 200 total, 1 running, 199 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1023392 total, 85652 free, 192728 used, 745012 buff/cache KiB Swap: 1045500 total, 1045500 free, 0 used. 657780 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1463 rabbitmq 20 0 96236 44496 4532 S 0.7 4.3 0:34.08 beam.smp 2958 ubuntu 20 0 8088 3520 2992 R 0.7 0.3 0:00.19 top 7 root 20 0 0 0 0 S 0.3 0.0 0:13.45 rcu_sched 877 root 20 0 23212 9284 7552 S 0.3 0.9 0:09.54 vmtoolsd 1301 redis 20 0 30364 8020 1720 S 0.3 0.8 0:08.87 redis-server 2275 ubuntu 20 0 13352 3948 3180 S 0.3 0.4 0:05.48 sshd ...
pstree:
以树状图形式显示所有进程。
reboot:
若系统的 runlevel 为 0 或 6 ,则重启机器,否则以 shutdown 指令(加上 -r 参数)来取代。
rlogin:
远端登入。 rlogin 192.168.1.88
rsh:
用于远端登入Shell。 rsh(remote shell)提供用户环境,也就是Shell,以便能够在指定的远端主机上执行。
shutdown:
可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。 使用权限:系统管理者。 语法 shutdown [-t seconds] [-rkhncfF] time [message] 参数说明: -t seconds : 设定在几秒钟之后进行关机程序 -k : 并不会真的关机,只是将警告讯息传送给所有只用者 -r : 关机后重新开机 -h : 关机后停机 -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机 -c : 取消目前已经进行中的关机动作 -f : 关机时,不做 fcsk 动作(检查 Linux 档系统) -F : 关机时,强迫进行 fsck 动作 time : 设定关机的时间 message : 传送给所有使用者的警告讯息 实例: 立即关机 # shutdown -h now 指定5分钟后关机 # shutdown +5 “System will shutdown after 5 minutes” //5分钟够关机并显示警告信息
rwho:
用于查看系统用户。 rwho指令的效果类似who指令,但它会显示局域网里所有主机的用户。主机必须提供rwhod常驻服务的功能,方可使用rwho指令。 ubuntu@ubuntu:~$ rwho ubuntu ubuntu:pts/8 Jun 6 12:38
sudo:
Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。 使用权限:在 /etc/sudoers 中有出现的使用者。 -l 显示出自己(执行 sudo 的使用者)的权限 -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码 -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟) -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称 -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码) -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root ) command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令 实例: ubuntu@ubuntu:~$ sudo -kp 'hello %u,告诉我密码' pwd hello ubuntu,告诉我密码 /home/ubuntu
tload:
动态显示系统负载。
chmod:
r、w、x:4、2、1 ubuntu@ubuntu:/var/log$ ll log_file -rw-r--r-- 1 root root 0 Jun 6 15:01 log_file ubuntu@ubuntu:/var/log$ sudo chmod 744 log_file ubuntu@ubuntu:/var/log$ ll log_file -rwxr--r-- 1 root root 0 Jun 6 15:01 log_file*
head:
logrotate:
用于管理日志文件。 参考:https://linux.cn/article-4126-1.html
uname:
用于显示计算机及操作系统的信息。 参数: -a或--all 显示全部的信息。 -m或--machine 显示电脑类型。 -n或-nodename 显示在网络上的主机名称。 -r或--release 显示操作系统的发行编号。 -s或--sysname 显示操作系统名称。 -v 显示操作系统的版本。 ubuntu@ubuntu:~$ uname -a Linux ubuntu 4.4.0-78-generic #99-Ubuntu SMP Thu Apr 27 15:28:22 UTC 2017 i686 i686 i686 GNU/Linux 操作系统名字、计算机名字、操作系统发行编号、系统时间、计算机类型。
vlock:
用于锁住虚拟终端。 ubuntu@ubuntu:~$ vlock -e This TTY is now locked. Please press [ENTER] to unlock. ubuntu's Password: ubuntu@ubuntu:~$
who:
用于显示系统中有哪些使用者正在上面 ubuntu@ubuntu:~$ who ubuntu pts/9 2017-06-06 14:29 (192.168.62.1) ubuntu pts/10 2017-06-06 16:59 (192.168.62.1) ubuntu tty7 2017-06-06 16:59 (:0)
whoami:
用于显示自身用户名称。 ubuntu@ubuntu:~$ whoami ubuntu
su:
用于切换账户。
w:
用于显示目前登入系统的用户信息。
id:
用于显示用户的ID,以及所属群组的ID。 ubuntu@ubuntu:~$ id uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
free:
用于显示内存信息。 ubuntu@ubuntu:~$ free total used free shared buff/cache available Mem: 1023392 493380 186480 5208 343532 361592 Swap: 1045500 25412 1020088
alias:
用于设置指令的别名。 用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 实例: alias la='ls -A'
crontab:
用于设置定时任务。