Ctrl + F搜索

shell 的作业控制

命令作用
jobs列出作业
&在后台运行作业
Ctrl+Z挂起当前(前台)作业
suspend挂起 shell 的执行
fg [%jobnumber]撤销作业的挂起操作,让它在前台运行
bg [%jobnumber]让挂起的作业在后台运行

文件基本操作

命令作用
ls列出目录中的文件
cp复制文件
mv重命名(“移动”)文件
rm删除(“移除”)文件
ln创建文件链接(替代名称)

ls

格式:ls [option] [files]

作用:列出文件和目录的属性

常用选项:

-a 列出所有的文件,包括文件名以句点开头的文件

-l 长列表,包括文件属性。添加-h 选项后,输出文件大小时,将以千字节、兆字节和千兆字节为单位,而不是以字节为单位

-G 在长列表中,不输出文件的组所有权

-F 用意义明确的符号修饰文件名称,从而指示文件的类型。通常,文件名后面附加“/”表示“可执行文件”,附加“@”表示符号链接,附加“|”表示命名管道,附加“=”表示套接字。这些只是对人类有提示作用的视觉标识,而不是文件名的一部分。

-S 按大小对文件排序

-t 按照最近修改时间对文件进行排序

-r 反序

-R 显示目录时,递归显示其内容

-d 显示目录时,不显示其内容,仅显示目录本身的信息


cp

格式:cp [options] files (file | directory)

作用:复制文件

常用选项:

-p 不仅复制文件内容,同时复制文件权限、时间戳,同时如果你具有足够的权限的话,还可以复制其属主和用户组(通常,这些副本将归你所有,以当下时间作为时间戳,相应的权限则是通过将 umask 应用于原始权限来设置的)

-a 递归复制目录的层次结构,保留所有的文件属性和链接

-r 递归复制目录的层次结构。该选项不保留文件的属性,如权限和时间戳,但是会保留符号链接

-i 交互模式。在覆盖目标文件之前会进行询问

-f 强制复制。如果目标文件存在的话,则无条件覆盖


mv

格式:mv [options] source target

作用:对文件进行重命名,或将文件或目录移动到目标目录中

常用选项:

-i 交互模式。在覆盖目标文件之前进行询问

-f 强制移动。如果目标文件存在的话,则无条件覆盖


rm

格式:rm [options] files | directories

作用:删除文件或递归删除目录

常用选项:

-i 交互模式。在删除每个文件之前都会进行询问

-f 强制删除,忽略任何错误或警告

-r 递归删除目录及其内容。该选项请谨慎使用,特别是与-f 选项结合使用时尤其如此,因为这会删除所有的文件


ln

格式:ln [options] source target

作用:创建链接

常用选项:

-s 创建一个符号链接而非硬链接

-i 交互模式。在覆盖目标文件之前进行询问

-f 强制链接。如果目标文件存在的话,则无条件覆盖

-d 创建指向目录的硬链接(仅限于超级用户)

注:readlink linkname命令用于查找符号链接指向的位置,而当符号链接指向其他符号链接时,要想找出整个链接最终指向的位置,请使用readlink -f命令


目录操作

命令作用
cd更改当前目录
pwd打印当前目录的名称
basename打印文件路径的最后部分
dirname打印文件路径,其中不包括最后部分
mkdir创建目录
rmdir删除空目录
rm -r删除非空目录及其内容

cd

格式:cd [directory]

作用:设置当前的工作目录

注:如果不提供具体目录的话,默认切换到主目录


pwd

格式:pwd

作用:输出当前工作目录的绝对路径


basename

格式:basename path [extension]

作用:输出文件路径中的最后面部分

注:如果提供了可选的扩展名,那么结果中的扩展名也同时删除


dirname

格式:dirname path

作用:输出文件路径(同时删除其最后面的部分)

注:dirname 命令不会改变当前的工作目录。它只是处理并输出一个字符串,与 basename 类似


mkdir

格式:mkdir [options] directories

作用:创建一个或多个目录

常用选项:

-p 给定目录路径(而非简单的目录名),自动创建必需的父目录

-m 创建具有给定权限的目录,如:mkdir -m 0755 publicdir,默认情况下,赋予的权限是由 shell 的 umask 来控制的


rmdir

格式:rmdir [options] directories

作用:删除一个或多个空目录

常用选项:

-p 如果提供了目录路径(而非简单的目录名称),那么不但可以自动删除指定的目录,还可以自动删除指定的父目录

注:要删除非空目录及其内容,请谨慎使用 rm -r 目录。如果使用 rm -ri 命令的话,可以进行交互式删除,如果使用 rm -rf 命令的话,则会直接删除而不提供任何错误信息,同时也不要求进行确认


查看文件

命令作用
cat查看完整的文件
less逐页查看文本文件
nl利用行编号查看文本文件
head查看文本文件的第一行
tail查看文本文件的最后一行
strings显示嵌入二进制文件的文本
od以八进制(或其他格式)格式查看数据

cat

格式:cat [options] [files]

作用:将文件输出至标准输出,或将一组文件发送到 shell 管道

常用选项:

-T 将制表符输出为 I

-E 将换行符输出为$

-v 以人类可读的格式打印其他非打印字符

-n 为每行添加行号

-b 为非空白行添加行号

-s 将连续的空白压缩为一个空白行


less

格式:less [options] [files]

作用:以每次一页的方式查看文本

常用选项:

-c 在显示下一页之前清除屏幕。这样可以避免滚屏,并且看起来更加舒适

-m 输出更详细的提示,并给出显示进度

-N 显示行号

-r 按照字面形式显示控制字符;通常 less 会将控制字符转换为人类可读的格式

-s 将多个相邻的空白行压缩成单个空白行

-S 当某行内容很长时,截短为与屏幕等宽


nl

格式:nl [options] [files]

作用:将文件复制到标准输出,并添加行号

常用选项:

-b [a|t|n|p R] 在所有行(a)、非空白行(t)或包含正则表达式 R 的行前面添加行号。而 n 表示不给任何一行编号(默认值=a)

-v N 从整数 N 开始编号(默认值=1)

-i N 每一行递增 N,例如,你可以仅使用奇数(-i 2)或偶数(-v 2 -i 2)(默认值=1)

-n [ln|rn|rz] 将编号格式化为左对齐(ln)、右对齐(rn)或带前导零(rz)的右对齐(默认值=ln)

-w N 将数字的宽度强制为 N 列(缺省值=6)

-s S 在行号和文本之间插入字符串 S(默认值=Tab)


格式:head [options] [files]

作用:输出文件前 10 行,或预览命令管道输出的前几行内容

常用选项:

-n N 打印前 N 行,而不是前 10 行

-N 作用与-n N 相同

-c N 输出文件的前 N 个字节

-q 安静模式,当处理一个以上的文件时,不在每一个文件之上打印一个横幅。通常,head 命令会输出包含文件名的横幅


tail

格式:tail [options] [files]

作用:输出文件的最后 10 行,并执行其他操作

常用选项:

-n N 输出最后 N 行,而不是最后 10 行

-N 作用与-n N 相同

-n +N 输出除了第 N 行之外的所有行

-c N 输出文件的最后 N 个字节

-f 打开文件,每当文件附加新的行时,输出它们。这个功能是非常有用的。如果文件不存在,但你想等到它出现的话,可以添加–retry 选项

-q 安静模式,当处理的文件多于一个的时候,不给每个文件都输出一个横幅。通常情况下,tail 都会输出一个包含文件名的横幅


strings

格式:strings [options] [files]

作用:提取二进制文件中的可读文本,并将其显示在标准输出中

常用选项:

-n length 仅显示长度大于 length(默认值为 4)的字符串


od

格式:od [options] [files]

作用:查看二进制文件

常用选项:

-N B 仅显示每个文件的前 B 字节,可以用十进制、十六进制(通过前缀 0x 或 0X)、512 字节块(通过附加 b)、千字节(通过附加 k)或兆字节(通过附加 m)来指定(默认情况下会显示整个文件)

-j B 从每个文件的第 B+1 字节处开始输出,可接受的格式与-N 选项相同(缺省值=0)

-w [B] 每行显示 B 字节,可接受的格式与-N 选项相同。如果只是使用-w 本身的话,就等同于-w 32(默认值=16)

-s [B] 将每行字节分为 B 字节为单位的序列,由空格分隔;可接受的格式与-N 选项相同。如果只是使用-s 本身的话,就等同于-s 3(默认值=2)

-A(d|o|x|n) 显示最左列,可以以十进制(d)、八进制(o)、十六进制(x)或全部(n)为单位(默认值=o)

-ta|c 以字符格式显示输出,非字母数字字符输出为转义序列(c)或名称(a)

-td|o|u|x 以整数格式显示输出,可以使用八进制(o)、有符号十进制(d)、无符号十进制(u)、十六进制(x)

注:将 z 附加到-t 选项的话,会在输出的右侧输出一个新列,用来显示每行中的可打印字符


文件属性

命令说明
stat显示文件和目录的属性
wc统计字节数、字数和行数
du显示文件和目录的磁盘使用情况
file识别(猜测)文件的类型
touch更改文件和目录的时间戳
chown更改文件和目录的属主
chgrp更改文件和目录所属的用户组
chmod更改文件和目录的保护模式
umask为新的文件和目录设置默认模式
chattr更改文件和目录的扩展属性
lsattr列出文件或目录的扩展属性

stat

格式:stat [options] files

作用:显示文件(默认情况下)或文件系统(-f 选项)的重要属性

常用选项:

-L 跟踪符号链接,并报告它们指向的文件

-f 显示文件所在文件系统的信息,而不是文件本身的信息

-t 简洁模式,单行输出所有信息


wc

格式:wc [options] [files]

作用:输出文本文件中的字节数、字数和行数

常用选项:

-l 仅输出行数

-w 仅输出字数

-c 仅输出字节数

-L 找出每个文件中最长的行,并以字节为单位输出该行的长度


du

格式:du [options] [files | directories]

作用:输出文件或目录所占用的磁盘空间(以块为单位)

常用选项:

-b 输出以字节为单位的大小

-k 输出以千字节为单位的大小

-m 输出以兆字节为单位的大小

-B N 根据所定义块为单位来显示大小,其中 1 个块=N 字节(默认值=1024)

-h -H 以人类可读的单位进行输出。-h 选项使用 1024 的幂,而-H 则使用 1000 的幂

-c 在最后一行输出总数。这是输出目录大小时的默认设置,但是用于特定文件的时候,如果需要统计总大小的话,请使用-c 选项

-L 跟踪符号链接并显示它指向的文件的大小

-s 仅输出总大小

-a 递归显示


file

格式:file [options] files

作用:输出文件的类型

常用选项:

-b 输出时忽略左边部分的文件名

-i 输出文件的 MIME 类型,而不是常规的文件信息

-f name_file 从给定的 name_file 文件中读取文件名,逐行读取,每行一个文件名,并报告其类型。之后,以常规命令行的方式处理文件名

-L 跟踪符号链接,然后报告目标文件的类型,而不是显示链接的类型

-z 如果文件被压缩,则检查未压缩的内容以确定文件类型,而非显示“压缩数据”


touch

格式:touch [options] files

作用:修改文件的两个时间戳(修改时间、访问时间);创建空文件

常用选项:

-a 仅修改访问时间

-m 仅更改修改时间

-c 如果文件不存在,不要创建它

-d timestamp 设置文件的时间戳

-t timestamp 一种设置时间戳的高级方式,格式为[[CC]YY] MMDDhhmm [.ss]


chown

格式:chown [options] user_spec files

作用:设置文件和目录的所有权

user_spec参数可以是:

  • 现有用户名(或任何数字形式的用户 ID),以便设置属主
  • 现有用户名(或任何数字形式的用户 ID),作为可选项可以跟冒号和现有用户组名(或任何数字形式的用户组 ID),以便设置属主和用户组
  • 现有的用户名(或任何数字形式的用户 ID)后面跟冒号,来设置属主,并将用户组设置为调用用户的登录组
  • 位于冒号之后的现有用户组名(或任何数字形式的组 ID),仅设置用户组
  • –reference=file,将属主和用户组设置为给定的另一个文件的属主和用户组

常用选项:

–dereference 跟踪符号链接并对其指向的文件进行操作

-R 递归更改目录层次结构中的相应权限


chgrp

格式:chgrp [options] group_spec files

作用:设置文件和目录的属组

group_spec参数可以是以下任何一种:

  • 用户组名或数字形式的用户组 ID
  • –reference=file,将属组设置为另一给定文件的属组

常用选项:

–dereference 跟踪符号链接,并对其指向的文件进行操作

-R 递归更改目录层次结构中的所有权


chmod

格式:chmod [options] permissions files

作用:设置文件和目录的访问权限

permissions参数可以采用三种不同的形式:

  • –reference=file,设置与其他给定文件相同的权限
  • 最多四位数字的八进制数,用于指定文件的绝对权限
  • 一个或多个字符串,指定绝对权限或相对权限(即相对于该文件的现有权限)

常用选项:

-R 递归更改目录层次结构中的所有权


umask

格式:umask [options] [mask]

作用:设置或显示创建文件和目录时的默认模式,赋予自己、用户组和所有人相应的读、写和/或执行权限

常用选项:

-S 以更直观的形式显示默认模式


chattr

格式:chattr [options] [+ - =] attributes [files]

作用:设置或更改扩展属性(仅限 ext 文件系统)

属性含义
a只能进行追加:只能向文件中添加数据,而不能编辑数据,只有 root 才能设定这个属性
A不访问时间戳:对这个文件进行访问时不会更新其访问时间戳(atime)
c压缩:数据在写入时自动压缩,在读取时自动解压缩
d不转储:在进行备份时,告诉转储程序忽略此项
i不可变:不允许对该文件进行更改或删除(仅限 root 使用该属性)
j文件在写入时会先被记录在 journal 中(仅限 ext3 系统)
s安全删除:删除时,用零覆盖文件中的所有数据
S同步更新:更改将立即写入磁盘
u不可删除:该文件不允许执行删除操作

常用选项:

-R 递归处理目录


lsattr

格式:lsattr [options] files

作用:显示扩展属性

注:如果没有指定文件的话,lsattr 会输出当前目录中所有文件的属性

常用选项:

-R 递归处理目录

-a 列出所有的文件,包括以点号开头的文件

-d 如果显示目录的话,不显示其内容,仅显示目录本身


文件的定位

命令作用
find在目录层次结构中查找文件
xargs处理找到的文件列表(以及其他功能)
locate创建一个文件索引,然后通过索引搜索字符串
which在搜索路径中查找可执行文件(命令)
type查找搜索路径中的可执行文件(bash 内置命令)
whereis查找可执行文件、文档和源文件

find

格式:find [directories] [expression]

作用:在一个或多个目录(及其递归子目录)中搜索符合特定条件的文件

常用选项:

-name|-path|-lname pattern 查找对象的文件名称(-name)、路径名(-path)或符号链接目标文件(-lname)必须匹配这里给出的 shell 模式,其中可以含有 shell 通配符*,?和[](必须对通配符进行转义处理,以便让 shell 忽略这些通配符本身,而按照通配符所指代的内容进行查找)。注意,这里的路径是相对于正在搜索的目录树的相对路径

-iname|-ipath|-ilname pattern 分别对应于前面三个,不区分大小写

-regex regexp 路径(相对于正在搜索的目录树)必须与给定的正则表达式相匹配

-type t 仅查找类型为 t 的文件。这些类型包括普通文件(f)、目录(d)、符号链接(l)、块设备(b)、字符设备(c)、命名管道(p)和套接字(s)

-atime|-ctime|-mtime N 以 N*24 小时为参考,最后一次访问(-atime)、最后一次修改(-mtime)或发生状态变化(-ctime)的文件。此外,+N 表示“大于 N”,而-N 表示“小于 N”

-amin|-cmin|-mmin N 以 N 分钟为参考,最后一次访问(-amin)、最后一次修改(-mmin)或发生状态变化(-cmin)的文件。此外,+N 表示“大于 N”,而-N 表示“小于 N”

-anewer|-cnewer|-newer other_file 访问时间(-anewer)、修改时间(-newer)或者状态变化时间(-cnewer)晚于 other_file 的相应时间的那些文件

-maxdepth|-mindepth N 在正在搜索的目录树中查找文件时,最少(-mindepth)或最多(-maxdepth)搜索 N 层

-follow 如果遇到符号链接,就跟踪链接所指的文件

-depth 继续使用深度优先搜索:在对目录本身进行操作之前,首先通过递归方式彻底搜索目录中的内容

-xdev 将搜索范围限制为单个文件系统(即不允许跨越设备边界)

-size N[bckw] 查找大小为 N 的文件,其单位可以是块(b),单字节字符(c),千字节(k)或双字节的字(w)。+N 表示“大于 N”,-N 表示“小于 N”

-empty 查找大小为零的普通文件或目录

-user name 查找属主为给定用户的文件

-group name 查找属组为给定用户组的文件

-perm mode 查找权限与给定模式相同的文件。可以使用-mode 来检查所有给定的位是否被设置,或者使用+mode 来检查给定的位是否被设置

此外,可以使用运算符对表达式的组成部分进行分组和求反:

expression1 -a expression2:与运算,该选项为默认值

expression1 -o expression2:或运算

! expression 或-not expression:对表达式的值进行求反

(expression):优先级标记

expression1,expression2:计算两个表达式的值,然后返回第二个表达式的值

指定搜索条件后,就可以让 find 命令在符合条件的文件上执行以下操作。

常用选项:

-print 只需输出相对于搜索目录的相对路径

-printf string 输出给定的字符串,可以用 C 库函数 printf()的方式对其进行替换

-printO 类似于-print,区别在于不是使用换行符分隔每行输出,而使用 null(ASCII 0)字符。通常在将搜索结果以管道方式传递给另一个程序,并且文件名列表可能含有空格时使用。当然,这要求接收程序必须能够读取并解析这些以 null 字符分隔的行

-exec cmd; 调用给定的 shell 命令 cmd。需要注意的是,一定要对 shell 元字符转义处理,包括最后面的分号,因此它们不会在命令行中立即进行计算。此外,符号“{}”(务必加上引号或进行转义处理)代表所找的文件的路径,如:find . -exec ls '{}' \;

-ok cmd 与-exec 选项的作用类似,区别是将在调用每个命令之前提示用户

-ls 对文件执行 ls -dils 命令


xargs

格式:xargs [options] [command]

作用:从标准输出读取文本行,将其转换为命令,并执行

常用选项:

-n K 对于每个命令来说,只使用输入中的 K 行内容。而-n 1 的作用是确保每个命令只处理一行输入。否则,xargs 可以将多行输入传递给单个命令

-O 将输入的行尾字符设置为 ASCII 的零字符,而非空格符,并且按照字面含义来处理所有字符。当输入来自 find -printO 时,可以使用该选项


locate

格式:locate [options]

作用:在一个不太发生变化的目录层次结构中搜索文件

注:将 locate 命令与 updatedb 命令搭配使用的话,可以创建一个搜索速度极快的文件位置的索引(数据库)

updatedb 命令的索引选项:

-u 从根目录向下创建索引

-U directory 从 directory 向下创建索引

-l(0|1) 安全功能开关,0 表示关闭,1 表示打开。默认值为 1

-e directories 从索引中排除一个或多个目录,这里使用的路径分隔符为逗号

-o outfile 将索引写入 outfile 文件中

locate 命令的搜索选项:

-d index 指出要使用的索引

-i 搜索时不区分大小写

-r regexp 搜索与给定正则表达式匹配的文件


which

格式:which file

作用:在 shell 的搜索路径中查找可执行文件

注:如果搜索路径中有重名的程序,只会显示首先找到的那个程序


type

格式:type [options] commands

作用:在 shell 的搜索路径中查找可执行文件

注:type 是内置在 bash shell 中的,而 which 则是位于硬盘上的外部程序。作为一个内置的 shell 命令,在速度方面 type 要比 which 更快一些,但它的不足之处在于只能在某些 shell(如 bash)中使用


whereis

格式:whereis [options] files

作用:通过搜索硬编码的目录列表来查找给定的文件,可以查找可执行文件、文档和源代码

常用选项:

-b|-m|-s 仅列出可执行文件(-b)、联机帮助页(-m)或源代码文件(-s)

-B|-M|-S dirs… -f 仅在给定的目录中搜索可执行文件(-B)、联机帮助页(-M)或源代码文件(-S)。在列出所查找的文件之前,你必须使用-f 选项来跟踪目录列表


文件的正文处理

命令作用
grep在文件中查找与正则表达式匹配的行
cut从文件中提取列
paste附加列
tr将字符转换为其他字符
expand/unexpand在制表符和空格符之间进行转换
sort按各种标准对文本行进行排序
uniq在文件中查找相同的行
tee复制文件,同时将其输出到标准输出上

grep

格式:grep [options] pattern [files]

作用:给定一个或多个文件,输出其中与特定正则表达式模式匹配的所有行

注:grep 命令可以使用两种不同类型的正则表达式,它们分别称之为基本类型和扩展类型

常用选项:

-v 只输出与正则表达式不匹配的行

-l 仅输出包含匹配行的文件的名称,而不是输出匹配的行

-L 仅输出不包含匹配行的文件的名称

-c 仅输出匹配的行数

-n 在输出匹配结果的时候,每行的前面给出其原始行号

-b 在输出匹配结果的时候,每行的前面给出其在文件中的偏移字节

-i 匹配时不区分大小写

-w 只匹配完整的单词(即匹配整个正则表达式的单词)

-x 仅匹配完整的行(即与整个正则表达式匹配的行),优先级高于-w 选项

-A N 输出匹配行,以及位于匹配行之后的 N 行

-B N 输出匹配行,以及位于匹配行之前的 N 行

-C N 输出匹配行,以及原文件中位于匹配行前后的 N 行内容

–color=always 突出显示匹配文本的颜色,以提高可读性

-r 递归搜索目录及其子目录中的所有文件

-E 使用扩展正则表达式。见 egrep 命令

-F 使用固定的字符串列表,而不是正则表达式。见 fgrep 命令


egrep

格式:egrep [options] pattern [files]

作用:类似与 grep,只不过在正则表达式方面,它使用了一种不同的(“扩展性”)语言。它等价于 grep -E


基本类型扩展类型含义
.任何单个字符
[…]匹配该列表中的任何单个字符
[^…]匹配不属于该列表的任何单个字符
(…)分组
||或操作符
^行首
$行尾
\词首
\>结束一个字
[: alnum: ]任何字母数字字符
[: alpha: ]任何字母字符
[: cntrl: ]任何控制字符
[: digit: ]任意数字
[: graph: ]任何图形字符
[: lower: ]任何小写字母
[: print: ]任何可打印字符
[: punct: ]任何标点符号
[: space: ]任何空格字符
[: upper: ]任何大写字母
[: xdigit: ]任何十六进制数字
*正则表达式出现零次或多次
\ ++正则表达式出现一次或多次
\ ??正则表达式出现零次或一次
\{n \}{n}正则表达式恰好出现 n 次
\{n,\}{n,}正则表达式恰好出现 n 次或 n 次以上
\{n,m\}{n,m}正则表达式出现次数介于 n 和 m(含 m)之间,n<m
\c取文字 c 的字面意义,即使 c 是一个特殊的正则表达式字符

fgrep

格式:fgrep [options] [fixed_strings] [files]

作用:类似于 grep,但是它无法接收正则表达式,只能支持用换行符分隔的固定字符串的列表。该命令等价于 grep -F。通常,可以使用小写形式的-f 选项让 fgrep 命令从一个文件中读取固定的字符串。此外,还可以使用引号从命令行中读取固定的字符串。搜索非数字字符如*和{时,fgrep 命令用起来会非常方便,因为它们是按照字母的字面意义来对待的,而不是作为正则表达式字符来对待


cut

格式:cut -(b|c|f)range [options] [files]

作用:从文件中提取文本列,这里的“列”是由字符偏移(c)或字节偏移(b)或分隔字段(f)来定义的

常用选项:

-d C 使用字符 C 作为-f 选项的字段之间的输入分隔符。默认使用制表符

–output-delimiter=C 使用字符 C 作为-f 选项的字段之间的输出分隔符。默认使用制表符

-s 排除(不输出)不包含分隔符的行


paste

格式:paste [options] [files]

作用:将多个文件视为垂直列,并将它们合并到标准输出上

常用选项:

-d delimiters 使用给定分隔符来分隔各列;默认使用制表符。可以提供一个单个字符(如-d:)并自始至终使用该字符,或提供一个字符列表(如-dxyz)将其依次用于各行

-s 将输出的行和列进行转置


tr

格式:tr [options] charset1 [charset2]

作用:将一组字符转换为另一组字符

字符集 charset 可以采用以下格式:

格式含义
ABDG由字符 A、B、D、G 组成的序列
A-Z从 A-Z 之间的字符
[x*y]字符 x 重复 y 次
[ :class: ]见 grep 命令支持的字符类

常用选项:

-d 从输入中删除包含在 charset1 中的字符

-s 从输入中删除(位于 charset1 中的)那些连续重复字符

-c 只对 charset1 之外的字符进行操作

-t 如果 charset1 长于 charset2,则通过截断 charset1 使其长度相同。如果没有提供-t 的话,则不断复制 charset2 的最后一个字符,直到 charset2 与 charset1 的长度相同为止


expand / unexpand

格式:expand [options] [files]unexpand [options] [files]

作用:expand 命令用来将制表符转换为特定数量的空白字符,使其看起来长度不变,而 unexpand 命令的作用则刚好相反。默认情况下,每八个空格“兑换”一个制表符。

常用选项:

-t N 规定用 N 个空格替换一个制表符


sort

格式:sort [options] [files]

作用:以字母顺序输出文本行,或按照你指定的其他规则来进行排序。该命令首先会将提供的所有文件连接起来,然后对结果排序输出

常用选项:

-f 排序时区分大小写

-n 按照字母顺序进行排序,而不是按照字母顺序

-g 另一种具有不同算法的数字排序方法,该算法能够识别不同的计数法

-u 排序时忽略重复行(当通过-c 检查排序文件的时候,如果任意的连续两行相同的话,则返回失败)

-c 不进行排序,只检查输入是否已经过排序处理。如果是的话,不输出任何内容;否则,输出错误信息

-b 忽略各行的前导空格

-r 对输出进行反转:按照从最大到最小的顺序来排序

-t X 使用 X 作为-k 选项的字段分隔符

-k key 选择用于排序的键(组合-t 选项后,可以指定各个键之间的分隔符)


uniq

格式:uniq [options] [files]

作用:处理文本中连续的重复行

常用选项:

-c 计算相邻的重复行的数量

-i 操作时不区分大小写

-u 仅输出唯一的行

-d 仅输出重复行

-s N 检测重复行时,忽略每行中前面 N 个字符

-f N 当检测重复行时,忽略每行中前面 N 个由空白符分隔的第一个字段

-w N 当检测重复行时,仅考察每行的前 N 个字符。当与-s 或-f 选项结合使用的时候,sort 将忽略每行前面指定数量的字符或字段,然后考察接下来的 N 个字符


tee

格式:tee [options] files

作用:将标准输入原封不动地复制到标准输出,同时将相同的标准输入复制到一个或多个文件中

注:tee 命令最常用于命名管道中,它不仅可以把中间数据写入文件,同时还将其传递给管道中的下一个命令

常用选项:

-a 附加至文件末尾,而非覆盖文件

-i 忽略中断信号


文件的压缩与打包

命令作用
tar将多个文件打包成单个文件
gzip使用 GNU Zip 压缩文件
gunzip使用 GNU Zip 解压缩
bzip2以 BZIP 格式压缩文件
bunzip2解压 BZip 文件
bzcat通过标准输入/输出压缩/解压 BZip 文件
compress使用 UNIX 传统的压缩命令来压缩文件
uncompress使用 UNIX 传统的解压命令来解压文件
zcat通过标准输入/输出来压缩/解压缩文件(gzip 或 compress)
zip用 Windows Zip 格式压缩文件
unzip解压 Windows Zip 文件
munpack将 MIME 数据提取到文件中
mpack将一个文件转换成 MIME 格式

tar

格式:tar [options] [files]

作用:将多个文件和目录打包为单个文件,以便于传输,同时还可以进行压缩处理,该压缩功能是可选的

常用选项:

-c 创建归档。必须在命令行中列出输入文件和目录

-r 将文件附加到现有归档

-u 将新建的/修改的文件附加至现有归档

-A 将一个归档附加到另一个归档,该选项不适用于压缩归档

-t 列出(测试)归档

-x 从归档中提取文件

-f file 从给定的文件中读取归档,或将归档写入给定的文件中。该选项通常用于磁盘上的 tar 文件,但也可以用于磁带驱动器

-d 对归档与文件系统进行比较

-z 使用 gzip 压缩

-j 使用 bzip2 压缩

-Z 使用 UNIX 压缩

-v 冗长模式:输出详细信息

-h 跟踪符号链接,而不仅仅是复制它们

-p 提取文件时,恢复原来的权限和所有权


gzip

格式:gzip|gunzip|zcat [options] [files]

作用:gzip 命令和 gunzip 命令可利用 GNU Zip 格式来压缩和解压文件。在某些情况下,原始文件可能会被删除。使用这些命令的时候,压缩文件的扩展名为.gz

示例命令:

gzip file 压缩文件,生成 file.gz。同时,原始文件会被删除

gzip -c file 生成压缩数据,并输出至标准输出

cat file | gzip 从命令管道生成压缩数据

gunzip file.gz 解压 file.gz,并创建 file 文件。原始文件 file.gz 将被删除

gunzip -c file.gz 将数据解压至标准输出

cat file.gz | gunzip 解压来自命令管道的数据

zcat file.gz 解压数据,并输出至标准输出

tar -czf tarfile dir 通过 gzip 将目录 dir 打包成 tar 文件。使用-cvzf 选项时,会在处理它们时输出其文件名


bzip2

格式:bzip2|bunzip2|bzcat [options] [files]

作用:bzip2 命令和 bunzip2 命令可利用 Burrows-Wheeler 格式压缩和解压文件。在某些情况下,原始文件可能会被删除。使用这些命令的时候,压缩文件的扩展名为.bz2

示例命令:

bzip2 file 压缩 file,从而生成 file.bz2。原始文件会被删除

bzip2 -c file 压缩数据,并将结果写至标准输出

cat file | bzip2 压缩数据,并将结果写至标准输出

bunzip2 file.bz2 解压 file.bz2,从而生成 file。原始文件 file.bz2 将被删除

bunzip2 -c file.bz2 解压缩数据,并将结果写至标准输出

cat file.bz2 | bunzip2 解压缩数据,并将结果写至标准输出

bzcat file.bz2 解压缩数据,并将结果写至标准输出

tar -cjf tarfile dir 将目录 dir 打包成 bzip 压缩格式的 tar 文件。使用-cvjf 可以在处理过程中显示相应的文件名


compress

格式:compress|uncompress|zcat [options] [files]

作用:compress 命令和 uncompress 命令可利用标准的 UNIX 压缩格式(Lempel Ziv)来压缩和解压文件。在某些情况下,原始文件可能会被删除。使用这些命令的时候,生成的压缩文件的扩展名为.Z

示例命令:

compress file 压缩 file,从而生成 file.Z 文件。原始文件会被删除

compress -c file 压缩数据,并将结果写至标准输出

cat file | compress 压缩来自命令管道的数据

uncompress file.Z 解压 file.Z,从而生成 file。原始文件 file.Z 将被删除

uncompress -c file.Z 解压缩数据,并将结果写至标准输出

cat file.Z | uncompress 解压来自命令管道中的数据

zcat file.Z 解压缩数据,并将结果写至标准输出

tar -cZf tarfile dir 将目录 dir 打包成 compress 命令格式的 tar 文件。使用-cvZf 选项时,可以在处理过程中显示相应的文件名


zip

格式:zip|unzip [options] [files]

作用:命令 zip 和 unzip 能够以 Windows Zip 格式来压缩和解压文件。它们生成的压缩文件的扩展名为.zip。与大多数其他 Linux 压缩命令不同,zip 不会删除原始文件

示例命令:

zip myfile.zip file1 file2 file3 … 文件打包

zip -r myfile.zip dirname 递归打包

unzip -l myfile.zip 列出内容

unzip myzip 解包


munpack

格式:munpack [options] mail_filempack [options] files

作用:munpack 可以将邮件的附件解压为文件,mpack 则是将一个或多个文件作为附件插入到 MIME 格式的文件中


文件的比较

命令作用
diff对两个文件或目录逐行比较
comm对两个排序后的文件逐行比较
cmp对两个文件逐字节比较
md5sum计算给定文件的校验和(MD5)

diff

格式:diff [options] file1 file2

作用:diff 命令可用来对两个文件(或两个目录)进行逐行比较。在比较文本文件时,diff 可以提供详细的差异报告。对于二进制文件,diff 仅能指出是否存在差异。对于所有文件来说,如果没有差异的话,diff 都不会生成任何输出

常用选项:

-n 使用 rcsdiff 命令的 RCS 版本控制格式

-c 使用上下文输出格式,供 patch 命令使用

-D macro C 预处理器格式,即#ifdef macro … #else … #endif 格式

-u 一体化输出格式,它会对文件进行合并处理,其中“-”表示删除,“+”表示添加

-y 并排格式;使用-W 来调整输出的宽度

-e 创建一个 ed 脚本,如果运行该脚本的话,将会把 fileA 变为 fileB

-q 不报告发生的哪些变化,仅指出是否存在差异

-b 不考虑空格

-B 不考虑空白行

-i 忽略大小写

-r 当比较目录时,递归考察子目录


comm

格式:comm [options] file1 file2

作用:比较两个已排序的文件,并生成由三列组成的输出,各列之间以制表符分隔

第 1 列:所有出现在 file1 中但不在 file2 中的行

第 2 列:所有出现在 file2 中但不在 file1 中的行

第 3 列:所有同时出现在两个文件中的行

常用选项:

-1 不显示第 1 列

-2 不显示第 2 列

-3 不显示第 3 列

-23 显示仅在第一个文件中出现的行

-13 显示仅在第二个文件中出现的行

-12 显示同时出现在第一个和第二个文件中的行


cmp

格式:cmp [options] file1 file2 [offset1 [offset2]]

作用:比较两个文件,如果它们的内容是一样的,则不会输出任何内容;否则给出第一处差异所在的位置。通常情况下,cmp 命令都是从每个文件的开头处开始比较,但如果提供了偏移量的话,则将从指定的地方开始比较

常用选项:

-l 长输出:逐字节输出所有差异

-s 静默输出:不打印任何东西,只在退出程序时返回相应的状态码;如果文件匹配,返回 0,如果不匹配返回 1(如果比较失败的话,则返回其他代码)


md5sum

格式:md5sum files | --check file

作用:md5sum 命令与校验和一起使用的时候,可以用来验证文件是否未经改动。该命令的第一种使用方式是通过 MD5 算法为指定文件生成 32 字节校验和;第二种使用方式则是测试校验和是否与相应的文件相匹配,这时需要使用–check 选项

注:shasum 是一个更为强大程序,但是(到目前为止)还不太流行,它可以使用不同的算法来生成更长的哈希值。因此,它要比 md5sum 更加可靠一些


处理 PDF 文件和 PostScript 文件

命令作用
pdftotext从 PDF 文件中提取文本
ps2ascii从 PostScript 或 PDF 文件中提取文本
pdfseparate从 PDF 中提取单页
pdftk通过拆分、连接、旋转或以其他方式来操作 PDF 文件
pdf2ps,ps2pdf实现 PDF 和 PostScript 之间的格式转换

pdftotext

格式:pdftotext [options] [file.pdf [outfile.txt]]

作用:从 PDF 文件中提取文本数据,并将其写入指定的文件中。只有当 PDF 包含实际文本,而非文本的图像时,该命令才能生效

常用选项:

-f N 从 PDF 的第 N 页开始。注意,必须在选项和数字之间留出空格

-l N 在 PDF 文件的第 N 页结束。同样,必须在选项和数字之间留出空格

-htmlmeta 生成 HTML,而非纯文本

-eol(dos|mac|unix) 在文本中使用给定操作系统的行尾字符


ps2ascii

格式:ps2ascii [file.(ps|pdf)] [outfile.txt]

作用:从 PostScript 或 PDF 文件中提取文本


pdfseparate

格式:pdfseparate [options] [file.pdf] [pattern.txt]

作用:将一个 PDF 文件分割成多个独立的 PDF 文件,每页对应一个文件。最后一个参数是单页文件名称的组成方式,其中的%d 表示提取的页码

常用选项:

-f N 从 PDF 的第 N 页开始。必须在选项和数字之间留出空格

-l N 至 PDF 文件的第 N 页结束。必须在选项和数字之间留出空格


pdftk

格式:pdftk [arguments]

作用:从 PDF 文件中提取页面,或将多个 PDF 文件合并成一个、旋转页面、添加水印、加密和解密等


pdf2ps

格式:pdf2ps [options] file.pdf [file.ps]ps2pdf [options] file.ps [file.pdf]

作用:pdf2ps 命令可以将 Adobe PDF 文件转换为 PostScript 文件(如果不提供输出文件名,则默认使用输入文件名,只是将.pdf 替换为.ps 而已,其他部分不变);相反,ps2pdf 命令则可以将 PostScript 文件转换为 PDF 格式


打印

命令作用
lpr打印文件
lpq查看打印队列
lprm从队列中删除打印作业

lpr

格式:lpr [options] [files]

作用:向打印机发送文件

常用选项:

-P printername 将文件发送给之前设置的打印机 printername

- #N 打印 N 份副本

-J name 设置封面打印作业 name(如果系统已经设置为打印封面的话)


lpq

格式:lpq [options]

作用:显示处于等待状态的所有打印任务

常用选项:

-P printername 显示打印机 printername 的队列

-a 显示所有打印机的队列

-l 冗长模式:使用长格式显示信息


lprm

格式:lprm [options] [job_IDs]

作用:取消一个或多个打印作业。如果不提供任何作业 ID 的话,当前的打印作业将被取消(注意,只有超级用户才能够取消其他用户的作业)。-P 选项用来指出作业所在的打印队列


拼写检查

命令作用
look快速检查单词的拼写是否出错
aspell交互式的拼写检查程序
spell批处理式的拼写检查程序

look

格式:look [options] prefix [dictionary_file]

作用:打印以给定字符串 prefix 开头的单词,这些单词通常位于一个字典文件中(默认为/usr/share/dict/words)。当你提供自己的字典文件(可以是任何文本文件,只要各行按字母顺序排序即可)时,look 命令将打印以给定字符串 prefix 开头的所有行

常用选项:

-f 忽略大小写

-t X 设置终止字符 X,即将该字符之前(包括该字符)的内容作为匹配字


aspell

格式:aspell [options] file | command

作用:找出无法识别的单词,并给出相应的替代词

常用命令:

aspell -c file 通过交互方式对文件中的所有单词的拼写进行检查和纠正

aspell dump master 在标准输出上显示 aspell 的主字典

aspell help 打印一个简明的帮助信息


spell

格式:spell [files]

作用:输出给定文件中与其字典相比存在拼写错误的所有单词


磁盘和文件系统

命令作用
df显示已挂载文件系统上的可用空间
mount使磁盘分区可以访问
umount卸载磁盘分区(使其无法访问)
fsck检查磁盘分区是否出错
eject弹出 CD、DVD 或其他可移动磁盘

df

格式:df [options] [disk devices | files | directories]

作用:显示给定磁盘分区的大小,以及其中已用空间和可用空间的大小。如果指定了文件或目录的话,df 将提供该文件或目录所在的磁盘设备的相关数据。如果不提供参数的话,df 将会显示已挂载的所有文件系统的使用情况

常用选项:

-k 以千字节为单位显示大小(默认值)

-m 以兆字节为单位显示大小

-B N 显示区块数目,并将区块大小指定为 N 个字节(默认值=1024)

-h|-H 为了以可读性较高的方式来显示信息,为每个空间大小选择最合适的单位。使用-h 选项时,1K=1000;使用-H 选项时,1K=1024

-l 仅显示本地文件系统,而不显示网络文件系统

-T 在输出中提供文件系统类型

-t type 仅显示给定类型的文件系统

-x type 不显示给定类型的文件系统

-i Inode 模式。显示每个文件系统的 inode 总量以及已经使用和空闲的 inode 数量,而不是磁盘块的相应数量


mount

格式:mount [options] device | directory

作用:挂载分区,使其处于可用状态

常用选项:

-t type 指定文件系统的类型

-l 显示所有已挂载的文件系统,也可以与-t 组合使用

-a 挂载/etc/fstab 中列出的所有文件系统。忽略包含 noauto 选项的条目,也可以与-t 组合使用

-r 挂载只读文件系统


umount

格式:umount [options] [device | directory]

作用:卸载磁盘分区,使其无法通过文件系统访问

注:sudo umount -a 可卸载所有已挂载设备,但请不要这么操作


fsck

格式:fsck [options] [devices]

作用:验证 Linux 磁盘分区并按需修复发现的错误

注:一般来说,在检查设备之前需要先将其卸载,以便保证没有其他程序同时对其进行操作。fsck 命令实际上是位于/sbin 目录中的一组文件系统检查程序的前端程序,这些程序的名称都是以“fsck”开头。该命令只支持某些类型的文件系统,可以使用以下命令将其列出:ls /sbin/fsck.* | cut -d. -f2

常用选项:

-A 按顺序检查/etc/fstab 中列出的所有磁盘

-N 输出检测报告,但是不进行修复

-r 通过交互方式修复错误,执行每项修复任务之前都会进行提示

-a 自动修复错误(只有当你真正了解所执行的这些任务时,才可以使用这个选项;否则,将会带来严重的后果)


eject

格式:eject [options] [device_name]

作用:弹出可移动设备

注:使用该命令时,其中的可移动介质必须处于可以弹出的状态

常用选项:

-h 显示帮助信息

-n 显示选定的设备,但是不执行任何动作。可以结合-v 显示选定设备的详细描述

-v 产生详细输出

-d 显示要弹出的默认设备的名称,然后退出

-c N 从光驱柜中选择光驱 N


命令作用
rsync即使在跨网络环境下,也可以高效地复制一个文件集合
dd完成数据的低级复制
growisofs刻录 DVD 或蓝光光盘

rsync

格式:rsync [options] source destination

作用:复制一组文件,既可以进行精确复制,包括文件权限和其他属性(这种方式称为镜像),也可以只复制数据。此外,它不仅可以通过网络运行,也可以在单机上运行

常用选项:

-o 复制文件的所有权(可能需要远程主机的超级用户权限)

-g 复制文件属组信息(可能需要远程主机的超级用户权限)

-p 复制文件权限

-t 复制时间戳

-r 递归复制目录(即包括其内容)

-l 允许复制符号链接(而不是指向它们的文件)

-D 允许复制设备(仅限超级用户)

-a 镜像:复制原始文件的所有属性。这意味着使用选项-ogptrlD

-x 当复制文件树时,在当前的文件系统中进行,不要涉及已挂载的其他文件系统

-n Dry 运行模式:实际上不进行任何复制,只是显示哪些文件将被传输

-v 详细模式:输出复制期间发生的情况的详细信息。添加–progress 后,在复制文件时会以数字方式显示进度


dd

格式:dd [options]

作用:完成二进制位和字节低层操作的复制,它可以将数据从一个文件复制到另一个文件,也可以在复制时进行数据转换,设置可以通过设备复制的方式来克隆磁盘(警告:该操作会彻底摧毁目标设备上的所有数据)

常用选项:

if=file 指定输入文件或设备

of=file 指定输出文件或设备

bs=N 一次复制 N 个字节,称为“块大小”(要设置输入和输出的块大小,请分别使用 ibs 和 obs)

skip=N 在开始复制之前跳过 N 个输入块

seek=N 在开始复制之前丢弃 N 个输出块

conv=spec 对复制的数据进行转换。spec 可以是 ucase(转换为大写字母)、lcase(转换为小写)、ascii(从 EBCDIC 转换为 ASCII)


growisofs

格式:growisofs [options] tracks

作用:刻录可写的 CD、DVD 或 Blu-ray 光盘

步骤:

  • 通过以下命令找到光盘刻录机设备:more /proc/sys/dev/cdrom/info

  • 将要刻录的文件放到相应的目录中,比如 dir。根据需要,进行相应的组织安排。需要注意的是,目录 dir 本身不会被复制到光盘,仅复制其内容

  • 使用 mkisofs 命令创建 ISO(光盘)映像文件,并使用 growisofs 将其刻录到光盘上,假设你的设备是/dev/sr1,具体命令如下所示:

    1
    2
    3
    # mkisofs -R -l -o $HOME/mydisk.iso dir
    # growisofs -dvd-compat -Z /dev/sr1=$HOME/mydisk.iso
    # rm $HOME/mydisk.iso

注:如果要刻录音频 CD,请使用更加友好的图形工具,例如 k3b


查看进程

命令作用
ps显示进程
uptime查看系统负载
w列出所有用户的活动进程
top以交互方式查看资源密集型进程
free显示可用内存

ps

格式:ps [options]

作用:显示用户正在运行的进程的相关信息,也可以显示其他用户的进程信息,为可选项

示例命令:

查看自己当前运行的进程:ps -ux

查看用户 wayne 的所有进程:ps -U wayne

一个程序的所有进程:ps -C program_name

在终端 N 上的各个进程:ps -tN

显示特定的进程,比如进程 1、2 和 3505:ps -p1,2,3505

输出所有进程的信息,但是输出信息的宽度会根据屏幕宽度截取:ps -ef

输出所有进程的完整信息,避免详细参数被截断:ps -efww

输出所有进程的信息,并根据线程的角度,对隶属于同一个父进程之下的子进程进行缩进处理:ps -efH

注:可以借助 grep 和其他过滤程序,以更精细的方式从 ps 的输出中提取信息


uptime

格式:uptime

作用:指出从上次启动以来系统已经运行了多长时间


w

格式:w [username]

作用:显示所有登录用户在每个 shell 中运行的当前进程,如果提供了用户名的话,就只输出该用户的有关信息

常用选项:

-h 不显示标题行

-f 不显示 FROM 列

-s 不显示 JCPU 和 PCPU 列


top

格式:top [options]

作用:监视最活跃的进程,并能够定期更新信息。它是一个基于屏幕的程序,以交互方式更新显示内容。top 运行过程中,可以通过按键来改变其行为,例如设置更新速度(s)、隐藏空闲进程(i)或杀死进程(k)。输入 h 则可以查看完整的列表,输入 q 退出。此外,还有一些类似的程序可以用来监控系统的 I/O 和网络带宽,如 iotop 和 iftop

常用选项:

-nN 执行 N 次更新,然后退出

-dN 每 N 秒更新一次显示内容

-pN-pM… 仅显示 PID 为 N,M,…的进程的信息,最多显示 20 个进程的信息

-c 显示进程的命令行参数

-b 将信息以非交互式显示到标准输出,所以无需使用与屏幕显示方面的交互技巧。top -b -n1> outfile将快照保存到文件中


free

格式:free [options]

作用:显示内存的使用情况(以千字节为单位)

常用选项:

-s N 连续运行,每 N 秒更新一次显示内容

-b 显示字节数

-m 显示数量(兆字节)

-t 在底部添加总行数

-o 不显示“buffers/cache”行


控制进程

命令作用
kill终止进程(或向其发送信号)
timeout终止运行时间太长的命令
nice调用特定优先级的程序
renice在运行时更改进程的优先级
flock确保同一时刻只有一个进程副本在运行,这要用到锁

kill

格式:kill [options] [process_ids]

作用:向进程发送信号,从而达到终止进程(默认动作)、中断进程、挂起进程、使其崩溃等目的,但是前提条件是,你必须是这个进程的属主,或者是超级用户,这样才有权限执行这些操作

操作示例:

例如,要终止进程 13243,可以运行如下所示的命令:

kill 13243

如果该命令没有作用的话(一些程序会捕获该信号,但是并不终止运行),可以添加-KILL 或-9 选项,这两个选项是等价的:

kill -9 13243

这样一来,就肯定能终止进程了。但是,这样无法让程序“干净利索”地退出,从而导致进程死亡后,无法全部释放所占用的资源(或导致其他的问题)

如果你不知道进程的 PID,可以运行 ps,然后从输出结果中找到(以 emacs 为例):

ps -aux | grep emacs

当然,最好还是使用 pidof 命令,利用它可以通过进程名称来查找进程,并输出其 PID:

pidof emacs

现在,可以通过使用 shell 的反引号来执行 pidof,终止已知其程序名称的进程了:

1
kill `pidof emacs`

或者使用 killall 命令终止给定程序的所有进程:

killall emacs

除了位于文件系统中的 kill 程序(通常位于/bin/kill)之外,大多数 shell 都提供了内置的 kill 命令,不过两者在语法和行为方面有所差异。但是,它们都支持以下用法:

1
2
kill -N PID
kill -NAME PID

其中 N 是信号编号,NAME 是信号字符串“SIG”开头的信号名称(例如,使用-HUP 发送 SIGHUP 信号)。使用kill -l命令查看 kill 传输的所有信号


timeout

格式:timeout [options] seconds command...

作用:限制另一个程序的运行时间(以秒为单位),如果程序运行时间超过规定的范围,timeout 将会终止其运行

常用选项:

-s signal 发送默认值(TERM)之外的信号

-k seconds 如果程序在第一个信号之后没有终止,那么在等待规定的秒数之后,发送致命的 KILL 信号


nice

格式:nice [-n level] command_line

作用:在调用占用大量系统资源的程序时,可以通过降低其优先级,从而让它谦让一下其他进程(和用户)。它为一个进程设置了一个优先级数值(一个谦让度值),从而降低 Linux 进程调度程序对它的关注程度,即调整进程的优先级

操作示例:

将一个大型任务的优先级数值设置为 7:

nice -n 7 sort hugefile > outfile

在运行 nice 的时候,如果不指定优先级的话,则使用 10。正常进程(运行时没有指定优先级)运行在零级,为了查看进程的优先级,可以直接运行 nice,不要加任何参数,具体如下所示:

1
2
$ nice
0

超级用户也可以降低进程的优先程度,为此,只需指定更大的优先级数值即可:

sudo nice -n -10 myprogram

为了了解自己的任务的优先级数值,可以借助 ps 于命令,只要看看该命令输出中的“NI"列就知道了:

ps -o pid,user,args,nice


renice

格式:renice [-n N] [options] PID

作用:修改已运行的进程的优先级级别

注:普通用户可以增加自己进程的优先级数值,而超级用户还可以降低该数值(提高优先程度),并且可以对任何进程进行该操作。优先级的取值范围为-20~+20,但是,我们要尽量避免使用绝对值较大的负数,否则可能会干扰重要的系统进程

常用选项:

-p pid 影响给定的进程 ID。这里可以省略-p,直接提供 PID

-u username 影响给定用户拥有的所有进程


flock

格式:flock [options] lockfile command...

作用:通过为多个命令指定同一个锁定文件,起到防止备份脚本之类的命令同时运行多个副本的作用

常用选项:

-n 如果另一个命令已经运行,则立即失败

-w N 如果另一个命令已经在运行,则等待 N 秒后失败

-s 使用共享锁而不是排他锁。你可以使用该选项同时运行多个命令,但如果省略该选项,则 flock 将失败。这个选项对于允许有限数量的命令同时运行是非常有用的


作业调度

命令作用
sleep暂停指定的秒数,除了等待什么也不做
watch以指定的时间间隔重复运行程序
at在将来某个时间执行一次任务
crontab为将来某些时间点安排任务

sleep

格式:sleep time_specification

作用:等待一定的时间。在指定时间的时候,可以使用一个整数(单位是秒),或一个整数,后跟字母 s(也就是秒),m(分钟),h(小时)或 d(天)


watch

格式:watch [options] command

作用:定期重复执行指定的命令;默认的时间间隔是两秒。该命令将被传递给 shell(所以一定要对特殊字符使用引号或进行转义处理)执行,并且运行结果将以全屏模式显示,以便于观察输出结果,看看发生了什么变化。退出时,按 Ctrl+C

常用选项:

-n seconds 设置两次执行之间的时间间隔(以秒为单位)

-d 高亮显示输出,强调两次执行之间发生的变化

-g 当命令的运行结果与上一次的不同时,退出


at

格式:at [options] time_specification

作用:在规定的时间运行一次 shell 命令

注:可以通过/usr/share/doc/at/time-spec 了解其详细语法

常用选项:

-f filename 从给定文件读取命令,而不是标准输入

-c job_number 将作业命令显示到标准输出


crontab

格式:crontab [options] [file]

作用:在特定的时间调度作业,适用于重复性的工作。为了使此类工作顺利进行,可以编辑并保存一个名为 crontab 的文件,通常该文件自动安装在系统目录(/var/spool/cron)中的。每过一分钟,一个名为 cron 的 Linux 进程就会被唤醒,并检查你的 crontab 文件,执行所有到期的作业

常用命令:

crontab -e 使用默认编辑器($VISUAL)编辑 crontab 文件

crontab -l 在标准输出上显示 crontab 文件

crontab -r 删除 crontab 文件

crontab myfile 将文件 myfile 安装为 crontab 文件

注:超级用户可以添加选项-u username,来处理其他用户的 crontab 文件


登录、注销与关机


shutdown

格式:shutdown [options] time [message]

作用:停止或重新启动 Linux 系统。只有超级用户才有权运行该命令

注:对于 time 参数,可以用加号后跟分钟数表示的相对时间,或用小时和分钟表示的绝对时间,或用 now 这个词表示立即。如果不使用选项的话,shutdown 会让系统进入单用户模式,这是一个特殊的维护模式,只允许一个人(从系统控制台)登录系统,同时,所有非必需的服务都将被关闭。要想退出单用户模式,可以再次执行 shutdown 命令来停止或重新启动系统,或输入 Ctrl+D 以使系统进入正常的多用户模式

常用选项:

-r 重启系统

-h 关闭系统

-k 模拟关机,并非真的关机,只是向所有用户发送警告消息,就像系统正在关闭一样

-c 取消已经在执行的 shutdown 指令(省略 time 参数)

-f 重新启动时,跳过 fsck 程序所执行的常规系统检查

-F 在重新启动时,进行常规的系统检查


systemctl

格式:systemctl [options] command [arguments]

作用及说明:在一些 Linux 发行版中,shutdown 命令实际上是 systemctl 命令的一个符号链接;而 systemctl 则是一个用于启动和停止各种服务的多用途命令。实际上,systemctl 只是名为 systemd 的服务管理器的一部分

常用命令:

sudo systemctl poweroff 关闭系统

sudo systemctl reboot 重启系统

sudo systemctl suspend 挂起系统


用户及环境变量

命令作用
logname显示登录名
whoami显示当前的有效用户名
id显示用户的用户 ID 和组 ID
who显示目前登录系统的用户,给出详细信息
users显示目前登录系统的用户,给出简要信息
finger显示用户的相关信息
last显示用户最近登录时间
printenv显示环境变量的值

logname

格式:logname

作用:显示用户的登录名

注:如果在你的系统上无法使用此命令,请尝试echo $LOGNAME


whoami

格式:whoami

作用:显示当前有效的用户名称。如果你用过 sudo 命令的话,该名称可能与(logname 命令输出的)登录名不同


id

格式:id [options] [username]

作用:显示用户 ID、用户组 ID 及其关联的用户名称和组名称

常用选项:

-u 显示有效用户 ID 并退出

-g 显示有效组 ID 并退出

-G 显示用户所属的所有其他组的 ID

-n 显示(用户和用户组的)名称,而不是数字 ID。必须与-u、-g 或-G 选项组合使用

-r 显示登录 ID 而不是有效 ID,必须与-u、-g 或-G 选项组合使用


who

格式:who [options] [filename]

作用:列出所有登录用户,每行一个用户 shell

注:通常,who 将从/var/run/utmp 文件获取相应的数据,filename 参数可以用于指定不同的数据文件,例如用/var/log/wtmp 记录过去的登录情况,或用/var/log/btmp 记录失败的登录

常用选项:

-H 将第一行作为标题显示

–lookup 对于远程登录的用户,显示原始主机名

-u 在用户的终端上显示其空闲时间

-T 指出每个用户的终端是否可写。加号表示“是”,减号表示“否”,问号表示“未知”

-m 仅显示当前用户的信息(即与当前终端相关联的用户)

-q 仅显示用户名和用户数,该命令与 users 命令非常类似,只是增加了一个用户数


users

格式:users [filename]

作用:显示已经登陆的用户的快速列表(如果用户正在运行多个 shell,则会在表中出现多次)

注:像 who 命令一样,默认情况下 users 命令将读取/var/log/utmp 文件,但是也可以通过设置让它从另一个文件读取相关信息


finger

格式:finger [options] [user[@host]]

作用:显示已经登录的用户的简要或详细信息

注:参数 user 可以是本地用户名或远程用户,该参数的具体形式为 user@host。当然,远程主机只有做了相应配置时才会响应该 finger 命令的请求

常用选项:

-l 显示详细信息

-s 显示简要信息

-p 不显示 Project 和 Plan 部分,这两部分通常分别从用户的~/.project 和~/.plan 文件中读取


last

格式:last [options] [users] [ttys]

作用:显示历史登录信息,按时间逆序排列;可以提供用户名或 tty 名称来限定输出的内容

常用选项:

-N 仅显示最近期的 N 行输出,其中 N 为正整数

-i 显示 IP 地址而不是主机名

-R 不显示主机名

-x 显示系统关闭和系统运行级别的变化情况(例如,从单用户模式到多用户模式)

-f filename 从/var/run/wtmp 之外的其他文件中读取数据


printenv

格式:printenv [environment_variables]

作用:输出 shell 所知的所有环境变量及其值,或只显示指定的变量


用户帐户管理

命令作用
useradd创建一个帐户
userdel删除一个帐户
usermod修改帐户
passwd修改密码
chfn修改用户的个人信息
chsh修改用户的 shell

useradd

格式:useradd [options] username

作用:超级用户可以通过此命令来创建用户帐户

注:由于该命令的默认选项不是非常有用(运行 useradd -D 可以查看默认选项),因此,请确保提供所需的全部选项

常用选项:

-d dir 将用户的主目录设置为 dir

-s shell 将用户的登录 shell 设置为 shell

-u uid 将用户的 ID 设置为 uid。除非你自己十分有把握,否则请忽略该选项并接受默认值

-c string 设置用户的 comment 字段(历史上称为 GECOS 字段)。通常情况下,该字段被设为用户的全名,但实际上可以是任何字符串。chfn 命令还可以用来设置该信息

-g group 将用户的初始(默认)组设置为 group,它可以是数字形式的组 ID 或组名称,但是,这些组必须是已经存在的

-G group1,group2,… 让用户加入现有的其他组,即 group1,group2 等

-m 将系统基干目录/etc/skel 中的所有文件复制到新创建的主目录中。基干目录通常用来存放初始化文件的最小(基干)版本,如~/.bash_profile,以供新用户使用。如果你希望从不同的目录复制这些文件,请添加-k 选项(-k dirname)


userdel

格式:userdel [-r] username

作用:删除现有帐户

注:除非提供-r 选项,否则它不会删除用户主目录中的文件。删除用户之前,请务必仔细斟酌;如无必要,请首先考虑停用帐户(使用 usermod -L)。在删除帐户之前,请确保已备份该用户的所有文件,因为有时候你可能会需要用到它们


usermod

格式:usermod [options] username

作用:以各种方式修改给定用户的帐户

常用选项:

-d dir 将用户的主目录改为 dir

-l username 将用户的登录名改为 username。在修改登录名之前,请三思而后行,一定要避免系统上还有某些内容依赖于原始名称的情况的发生。同时,一般不要更改系统帐户(root,daemon 等),除非你真的清楚自己在做什么!

-s shell 将用户的登录 shell 改为 shell

-g group 将用户的初始(默认)组改为 group,它可以是数字形式的组 ID 或组名称,但是这些组必须是已经存在的

-G group1,group2,… 修改用户所属的附加群组,即 group1,group2 等现有的组。如果用户在此之前已经加入其他组,但是这里没有给出这些组的话,则用户将退出这些组

-L 禁用(锁定)帐户,以使用户无法登录

-U 在执行锁定(-L)操作后,为帐户解锁


passwd

格式:passwd [options] [username]

作用:更改登录密码,或以超级用户身份来修改其他用户密码


chfn

格式:chfn [options] [username]

作用:更新系统维护的个人信息:真实姓名、家庭电话、办公室电话和办公室位置。如果调用该命令的时候没有指定用户名的话,chfn 命令就是针对你的帐户;如果(以 root 身份)调用该命令时提供了用户名,那么它就会更新该用户的相关信息。如果不提供任何选项的话,chfn 将提示你输入所需的信息

常用选项:

-f name 将全名改为 name

-h phone 将家庭电话号码改为 phone

-p phone 将办公室电话号码改为 phone

-o office 将办公室地址改为 office


chsh

格式:chsh [options] [username]

作用:设置登录 shell 程序。如果调用时没有指定用户名的话,chsh 默认会修改用户自己的登录 shell;如果(以 root 身份)调用该命令时指定了用户名的话,它会修改指定用户的登录 shell。如果没有给出任何选项的话,chsh 将提示你输入所需信息。当然,新的 shell 必须是存在于文件/etc/shells 中的

常用选项:

-s shell 指定新的 shell

-l 列出所有可用的 shell


用户组的管理

命令作用
groups显示用户所在组
groupadd创建用户组
groupdel删除用户组
groupmod修改用户组

groups

格式:groups [usernames]

作用:显示你所属的或其他用户所属的 LInux 组


groupadd

格式:groupadd [options] group

作用:创建组。在大多数情况下,应该使用-f 选项来防止创建重名的组

常用选项:

-g gid 自己指定数字组 ID,而不是让 groupadd 选择一个

-f 如果指定的组已经存在,给出提示并退出


groupdel

格式:groupdel group

作用:删除现有的组

注:在进行该项操作之前,最好找出所有组 ID 被设置为给定组的文件,以便稍后处理

1
sudo find / -group <group> -print

因为 groupdel 不会改变文件所属的组。它只是从系统中删除相应的组的名称。如果你显示这些文件的话,你会看到数字组 ID,而不是组名


groupmod

格式:groupmod [options] group

作用:修改给定组,改变其名称或组 ID

注:groupmod 命令不影响属于该组的任何文件:它只是修改系统记录中的 ID 或名称。但是,更改 ID 时要小心,否则会导致这些文件归属于不存在的组

常用选项:

-n name 将组的名称更改为 name(安全)

-g gid 将组 ID 更改为 gid(危险)


主机信息

命令作用
uname显示系统基本信息
hostname显示系统的主机名
domainname相当于 hostname -y
ip设置和显示网络接口信息
ifconfig设置和显示网络接口信息

uname

格式:uname [options]

作用:显示计算机的基本信息

常用选项:

-a 所有信息

-s 只显示内核名称(默认)

-n 只显示主机名,与 hostname 命令一样

-r 只显示内核发行版

-v 只显示内核版本

-m 只显示硬件名称

-p 只显示处理器类型

-i 只显示硬件平台

-o 只显示操作系统名称


hostname

格式:hostname [options] [name]

作用:显示计算机的名称。根据你的设置情况,该命令可能会显示完整或简略的主机名;也可以以 root 身份设置你的主机名

常用选项:

-i 显示主机的 IP 地址

-a 显示主机的别名

-s 显示短主机名称

-f 显示你的主机的全域名

-d 显示主机的 DNS 域名

-y 显示主机的 NIS 或 YP 域名

-F hostfile 设置你的主机名,并且该名称是从 hostfile 文件中读取的


ip

格式:ip [options] object command ...

作用:显示和设置计算机网络接口的相关参数

常用命令:

获取默认网络接口(通常称为 eth0)的有关信息:

ip addr show eth0

查看所有已经加载的网络接口:

ip addr show

查看帮助信息:

ip help

显示网络设备的 IP 地址:

ip addr

显示网络设备的组播地址:

ip maddr

显示网络设备的属性:

ip link

显示路由表:

ip route

开始监控网络设备,输入 Ctrl+C 停止监控:

ip monitor

注:这些命令都有多个选项,在相应的命令后面添加 help,可以查看相应的用法。此外,ip 可以在超级用户权限下面修改网络:配置网络设备、管理路由表和规则、创建隧道等。实际上,它是名为 iproute2 的工具集的一部分


ifconfig

格式:ifconfig [options] interface

作用:设置和显示网络接口的信息

常用命令:

ifconfig eth0 显示默认网络接口(通常为 eth0)的信息

ifconfig -a 查看所有已经加载的网络接口


主机位置

命令作用
host查找主机名、IP 地址和 DNS 信息
whois查找互联网域名注册者
ping检查远程主机是否可达
traceroute查看到远程主机的网络路径

host

格式:host [options] name [server]

作用:通过查询 DNS 来查找远程机器的主机名或 IP 地址

常用选项:

-a 显示所有可用信息

-t 选择名称服务器查询的类型:A、AXFR、CNAME、HINFO、KEY、MX、NS、PTR、SIG、SOA 等


whois

格式:whois [options] domain_name

作用:查找 Internet 域名的注册信息

常用选项:

-h registrar 在给定的注册商服务器上进行查找

-p port 查询给定的 TCP 端口而非默认端口 43(whois 服务)


ping

格式:ping [options] host

作用:确认远程主机是否处于可访问状态。它会向远程主机发送一些小数据包(即 ICMP 数据包),并等待响应

常用选项:

-c N 最多 ping N 次

-i N 每隔 N 秒 ping 一次(默认为 1)

-n 在输出中显示 IP 地址,而非主机名


traceroute

格式:traceroute [options] host [packet_length]

作用:输出从本地主机到远程主机的网络路径,以及数据包通过该路径所需的时间

注:该命令会向路径中的每个主机发送三个探测数据包,并报告返回时间。如果五秒内没有收到对方的响应,traceroute 会显示一个星号。此外,traceroute 可能被防火墙阻止或由于其他原因而无法进行,在这种情况下,它会显示相应的符号:

符号含义
!F需要分片
!H主机不可达
!N网络不可达
!P协议不可达
!S源路由失败
!X通信出于管理的需要而被禁止
!NICMP 不可达代码 N

默认数据包大小为 40 字节,但你可以通过可选参数 packet_length 来进行修改

常用选项:

-n 数字模式:显示 IP 地址而不是主机名

-w N 将超时从 5 秒改为 N 秒


网络连接

命令作用
ssh安全地登录到远程主机,或在其上运行命令
scp安全地将文件复制到远程主机中(批处理方式)
sftp安全地将文件复制到远程主机,或者从远程主机安全地复制文件到本地主机(交互方式)
ftp将文件复制到远程主机,或者从远程主机安全地复制文件到本地主机(交互式,不安全)
netcat创建任意网络连接

ssh

格式:ssh [options] host [command]

作用:如果你在某远程机器上面拥有相应的帐户的话,可以通过 ssh 程序来进行安全的远程登录,或是调用远程机器上的程序而无需登录。ssh 会加密通过其连接进行传输的所有数据,包括你的用户名和密码(这是你需要访问远程计算机所需的)。SSH 协议还支持其他方式进行身份验证,例如公钥和主机 ID

常用选项:

-l user 指定你的远程用户名,否则,ssh 将默认使用你的本地用户名。你还可以使用 username@host 语法:ssh [email protected]

-p port 使用非默认端口号(默认端口号为 22)

-t 在远程系统上分配 tty,这在尝试使用交互式用户界面(如文本编辑器)运行远程命令时很有用

-v 产生详细的输出,这就调试很有用


scp

格式:scp local_spec remote_spec

作用:将文件和目录从一台计算机批量复制到另一台计算机,它会对两台机器之间的所有通信进行加密处理

命令示例:

将本地文件复制到远程机器:

scp myfile remote.example.com:newfile

将目录复制到远程机器:

scp -r mydir remote.example.com:

将远程文件复制到本地计算机:

scp remote.example.com:myfile .

将远程目录复制到本地计算机:

scp -r remote.example.com:mydir .

要指定远程系统上的用户名,请使用 username@host 语法:

scp myfile [email protected]:

常用选项:

-p 复制所有的文件属性(权限、时间戳)

-r 递归复制目录及其内容

-v 产生详细的输出,该选项对调试非常有用


sftp

格式:sftp (host username@host)

作用:在两台计算机之间以交互方式安全地通过批量方式复制文件

注:如果你在远程系统上的用户名与本地用户名不同的话,则需要使用 username@host 参数

命令含义
help查看可用的命令
ls列出当前远程目录中的文件
lls列出当前本地目录中的文件
pwd显示远程工作目录
lpwd显示本地工作目录
cd dir将远程目录更改为 dir
lcd dir将本地目录更改为 dir
get file1 [file2]将远程 file1 复制到本地机器,并将重新命名为 file2(可选)
put file1 [file2]将本地 file1 复制到远程机器,并将重新命名为 file2(可选)
mget file *使用通配符*和?将多个远程文件复制到本地计算机
mput file *使用通配符*和?将多个本地文件复制到远程计算机
quit退出 sftp

ftp

格式:ftp [options] host

作用:在计算机之间复制文件,无法以安全的方式复制文件,用户名和密码是以纯文本形式在网络中传播的


netcat

格式:netcat [options] [destination] [port]nc [options] [destination] [port]

作用:netcat 或 nc 都是用于进行网络连接的通用工具,该工具不仅可以用来调试、了解网络,同时还有许多其他用途

常用选项:

-u 建立 UDP 连接而不是 TCP 连接

-l 侦听给定端口上的连接

-p N 使用端口 N 作为源端口

-w N N 秒后超时

-h 获取帮助信息


Email

命令作用
mutt基于文本的邮件客户端
mail基于文本的迷你邮件客户端
mailq查看系统上的外发邮件队列

mutt

格式:mutt [options]

作用:mutt 是一个基于文本的邮件程序,能够在普通终端(或终端窗口)中运行,因此可以在本地(例如,X 终端窗口)中使用或通过 SSH 连接远程使用


mail

格式:mail [options] recipient

作用:mail 程序是一个快速、简单的电子邮件客户端,利用命令行或脚本来快速处理邮件

常用选项:

-s subject 设置邮件的主题行

-v 冗长模式,显示邮件传递的相关信息

-c address 指定邮件副本的收信人地址(以逗号分隔的列表)

-b address 指定密件副本的收信人地址(以逗号分隔的列表)


mailq

格式:mailq

作用:列出所有等待发送的外发电子邮件,发送的邮件将记录在日志文件中


网页浏览

命令作用
lynx纯文本的网页浏览器
wget下载网页和文件

lynx

格式:lynx [options] [URL]

作用:lynx 是一个精简的纯文本网页浏览器,由于太过精简,因此无法显示图片、播放音频或视频,甚至无法响应鼠标。但是,当你只需要快速浏览页面,或网络速度慢或下载网站的 HTML 时,这种精简特性却是非常有用的。此外,它特别适合检测可疑网址,因为 lynx 不运行 JavaScript,甚至在未经允许的情况下都不会接受 cookie。所有浏览活动都是通过键盘完成的。有时候,浏览的效果不太完美,特别是浏览大量使用表格或框架的页面的时候,不过,浏览网站的概貌还是没问题的

常用选项:

-dump 将渲染的页面打印到标准输出并退出(类似于-source 选项)

-source 将 HTML 源代码打印到标准输出并退出(类似于 wget 命令)

-emacskeys 让 lynx 使用 emacs 编辑器的按键指令

-vikeys 让 lynx 使用 vim(或 vi)编辑器的按键指令

-homepage=URL 将你的主页网址设置为 URL

-color 打开彩色文字模式

-nocolor 关闭彩色文字模式


wget

格式:wget [options] URL

作用:打开 URL 并将数据下载到文件或标准输出

注:与之类似的一个命令是 curl,它默认情况下会将相应内容写入标准输出,这与 wget 不同,wget 默认情况下会复制原始页面和文件名

常用选项:

-i filename 从指定的文件读取 URL 并依次检索它们

-O filename 将所有捕捉到的 HTML 写入给定的文件夹,逐页追加

-c 续传模式:如果之前的下载被中断,只剩下部分内容,那么 wget 将从上次中断的地方开始下载。也就是说,如果内容 150K,上次已经下载了 100K,那么使用-c 选项后,就只下载剩下的 50K,然后把它添加到已经下载的内容后面即可。不过,有时候 wget 可能会“被耍”,例如从上次进行了(部分)下载之后,文件已经发生变化,所以,只有确保远程文件没有发生变化时,才能使用这个选项

-t N 尝试 N 次,然后放弃。N=0 表示不停尝试下去

–progress=dot 通过点号来显示下载进度

–progress=bar 通过条型来显示下载进度

–spider 不下载,只是检查远程页面是否存在

-nd 将所有的文件下载到当前目录中,即使它们原先位于一个非常复杂的目录树中(默认情况下,wget 会按照原样来复制远程目录的层次结构)

-r 递归下载页面层次结构,包括子目录

-l N 在最多下载 N 层内的文件(默认为 5)

-k 内部检索的文件,修改 URL,以便可以在网络浏览器中查看文件

-p 下载完整显示页面所需的所有文件,如样式表和图像文件等

-L 下载(页面内的)相对链接,但不下载绝对链接

-A pattern 接受模式:仅下载名称与给定模式匹配的文件。模式可以使用 shell 通配符

-R pattern 拒绝模式:仅下载名称与给定模式不匹配的文件

-I pattern 目录包含:仅从匹配给定模式的目录中下载文件

-X pattern 目录排除:仅从不符合给定模式的目录中下载文件


即时通信

命令作用
write向终端发送消息
mesg设置当前终端的写权限,即是否让其他用户向本终端发消息
tty显示终端设备名称
sendxmpp通过 XMPP(Jabber)发送即时消息
profanity基于文本的 XMPP 客户端
irssi基于文本的 IRC 客户端

write

格式:write user [tty]

作用:向同一台机器上的其他用户发送多行文本,Ctrl+D 组合键用于结束连接。也可以在管道中发送一次性消息

注:与 write 命令功能比较接近的一个命令是 wall,它能同时向所有登录用户发送消息:

1
wall The system will reboot in 1 hour

mesg

格式:mesg [y|n]

作用:决定是否可以向终端写入内容。mesg y 表示允许写入,mesg n 表示拒绝写入,而 mesg 则会显示当前状态(y 或 n),其中 y 是默认值。mesg 对现代即时通信程序无效


tty

格式:tty

作用:显示与当前 shell 相关联的终端设备名称(如果收件人多次登录,write 命令可能需要这些信息)


sendxmpp

格式:sendxmpp [options] recipients

作用:通过 XMPP 协议(Jabber)发送即时消息的快速方式。当你只想发送单个消息或文本文件的内容,而无需接收消息的时候,这个程序是非常方便的

常用选项:

-t 使用 TLS 来保护连接

-e 使用 SSL 来保护连接

-s text 随消息一起发送主题行

-v 冗长模式:显示调试信息。如果当连接失败的时候,该选项将非常有用


profanity

格式:profanity [options]

作用:用于 XMPP 协议(Jabber)的一款全功能即时通信客户端。与图形客户端不同,profanity 是在 shell 窗口中运行的,因此你可以通过 SSH 来使用该客户端


irssi

格式:irssi [options]

作用:功能齐全的基于文本的 IRC 客户端


屏幕输出

命令作用
echo在标准输出上显示简单文本
printf在标准输出上显示格式化文本
yes在标准输出上显示重复文字
seq在标准输出上显示一个数字序列
clear清除屏幕或窗口

echo

格式:echo [options] strings

作用:显示其参数

常用选项:

-n 不要打印最后面的换行符

-e 识别并解释转义字符

-E 不解释转义字符:与-e 选项的作用相反

可用的转义字符包括:

\a 警报(发出哔声)

\b 退格

\c 不打印最后面的换行符(与-n 选项的作用相同)

\f 换页

\n 换行

\r 回车

\t 水平制表符

\v 垂直制表符

\\ 反斜杠

\' 单引号

\" 双引号

\nnn 插入 nnn(八进制)所代表的 ASCII 字符


printf

格式:printf format_string [arguments]

作用:增强版的 echo 命令,能够在标准输出上显示格式化的字符串,类似于 C 语言的 printf()函数,将一个格式字符串应用于参数序列以创建指定的输出


yes

格式:yes [string]

作用:重复打印指定的字符串(或默认为“y”),并且每个字符串占一行


seq

格式:seq [options] specification

作用:输出一系列整数或实数,适用于其他程序的管道。它有三种规格参数:一个数字:上限,两个数字:下限和上限,三个数字:下限,增量和上限

常用选项:

-w 根据需要打印前导零,以使所有行的宽度相同

-f format 使用类似 printf 的格式字符串来格式化输出行,该字符串必须包含%g(默认值)、%e 或%f

-s string 使用给定的字符串作为数字之间的分隔符。在默认情况下,会打印换行符(即每行一个数字)


clear

格式:clear

作用:清除显示器或 shell 窗口中的内容


复制和粘贴

命令作用
xclip在 shell 和剪切板之间进行复制并粘贴操作
xsel通过 shell 来操作剪切板

xclip

格式:xclip [options]

作用:可以对三个 Linux 选择(剪切板)命令进行读取和写入操作,从而实现在 shell 和图形应用程序之间复制和粘贴文本

常用选项:

-selection name 通过名称,从 primary、secondary 或 clipboard 中指定一个选择命令。默认情况下,将会选取 primary 命令

-i 从标准输入中读取选择命令中的内容,该选项可省略

-o 将选择命令中的内容写入标准输出


xsel

格式:xsel [options]

作用:xsel 是 xclip 的增强版本,它除了能够读写三个选择(剪切板)命令中的内容之外,还支持附加、交换和清除操作

常用选项:

-p 使用 primary 命令(默认)

-s 使用 secondary 命令

-b 使用 clipboard 命令

-i 选择命令从标准输入读取相应的内容,这是默认的行为

-a 附加到选择命令中

-o 将选择命令的内容写入标准输出

-c 清除选择命令中的内容

-x 交换 primary 和 secondary 命令中的内容


数学和计算

命令作用
expr在命令行进行简单的数学运算
bc基于文本的计算器
dc基于文本的 RPN 计算器

expr

格式:expr expression

作用:在命令行中执行简单的数学(和其他表达式求值)运算


bc

格式:bc [options] [files]

作用:读取算术表达式,每行一个,并显示结果


dc

格式:dc [options] [files]

作用:从标准输入读取表达式,并将结果写入标准输出,它是一个使用逆波兰表示法(RPN)、基于堆栈的计算器


日期和时间

命令作用
cal显示当前日历
date显示或设置日期和时间
ntpdate使用远程时间服务器设置系统时间

cal

格式:cal [options][month [year]]

作用:显示日历。默认情况下,它会显示当前月份的日历;要想显示当前月份之外的日历的话,请提供相应的月份和年份(用四位数字表示)。如果省略具体的月份,那么该命令就会显示整年的日历

常用选项:

-y 显示当前年份的日历

-3 显示三个月的日历:包括前一个月和下一个月的日历

-j 显示某一日位于当年中的第几天


date

格式:date [options] [format]

作用:显示日期和时间,该命令的输出结果将取决于系统的区域设置,在默认情况下,date 将显示本地时区的系统日期和时间。可以通过提供以加号开头的格式字符串来格式化输出内容

常用选项:

-d string 显示给定的日期或时间 string,并按照你的要求进行格式化

-r filename 显示给定图像的最后修改时间戳,并按照你的要求进行格式化

-s string 将系统日期和/或时间设置为 string,只有超级用户才能执行该操作


ntpdate

格式:ntpdate timeserver

作用:通过访问网络上的时间服务器来设置当前系统时间,需要 root 权限


图像

命令作用
display显示图像文件
convert将文件从一种图形格式转换为另一种格式
mogrify修改图形文件
montage将多个图形文件组合成一个文件

display

格式:display [options] files

作用:显示多种格式的图像文件

常用选项:

-resize size 调整图像的大小。size 的设置方式非常灵活,包括设置宽度(800),高度(x600),高度乘以宽度(800x600),缩放百分比(50%),像素面积(480000@)等

-flip 垂直反转图像

-flop 水平反转图像

-rotate N 将图像旋转 N 度

-backdrop 在纯色背景(该颜色将铺满图像之外的整个屏幕)下显示图像

-fill 设置-backdrop 选项使用的纯色

-delay N 显示图像 N 秒,然后退出。如果列出多幅图像的话,以幻灯片形式播放,延迟时间为 N 秒

-identify 将图像的格式、大小和其他统计信息打印到标准输出


convert

格式:convert [input_options] infile [output_options] outfile

作用:复制图像,同时将其转换为不同的图形格式。同时,可以对图像的副本进行修改

注:该命令的选项与 display 命令大部分保持一致


mogrify

格式:mogrify [options] file

作用:像 convert 命令那样对图像进行转换,不过该命令的转换操作是直接针对原图像文件,而不是通过副本来完成的(所以 convert 是一个更加安全的命令)。该命令能支持 convert 命令的大部分选项


montage

格式:montage infiles [options] outfile

作用:将一组输入文件组合到单个图像文件中,该命令在图像的显示方式方面具有非常强大的控制能力

常用选项:

-geometry widthxheight[±]x[±]y 设置图像的高度宽度和偏移(x,y)

-frame N 在每个图像周围绘制宽度为 N 个像素的框

-label string 使用字符串来标注各个图像,其中可以包括以百分号开头的特殊转义字符:%f 表示原始文件名,%h 和%w 表示高度和宽度,%m 表示文件格式等


音频和视频

命令作用
cdparanoia将 CD 音轨转换(也就是”提取“)成 WAV 文件
lame将 WAV 文件转换为 MP3 文件
id3info查看 MP3 文件中的 ID3 标签
id3tag编辑 MP3 文件中的 ID3 标签
ogginfo查看 OGG 的信息
metaflac查看和编辑 FLAC 文件的信息
sox在各种音频流格式之间进行转换
mplayer播放视频或音频

cdparanoia

格式:cdparanoia [options] span [outfile]

作用:从 CD 读取(提取)音频数据,并将其存储到 WAV 文件(或其他格式)

常见用法:

cdparanoia N 将 N 音轨转换为一个文件

cdparanoia -B 将 CD 上的所有音轨都转换为单独的文件

cdparanoia -B 2-4 将 2、3 和 4 音轨转换为单独的文件

cdparanoia 2-4 将 2、3 和 4 音轨转换为单个文件

注:如果访问驱动器遇到困难,可以尝试运行cdparanoia -Qvs命令来查找相关线索


lame

格式:lame [options] file.wav

作用:将 WAV 音频文件转换为 MP3 文件


id3info

格式:id3info [options] [files]

作用:显示 MP3 音频文件的相关信息,前提是文件中含有 ID3 标签


id3tag

格式:id3tag [options] files

作用:添加或修改 MP3 文件中的 ID3 标签

常用选项:

-A name 设置艺术家的名字

-a title 设置专辑标题

-s title 设置歌曲标题

-y year 设置年份

-t number 设置音轨数

-g number 设置流派码


ogginfo

格式:ogginfo [options] [files]

作用:显示 OGG Vorbis 音频文件的各种信息,添加-h 选项可以获取更详细的用法说明信息


metaflac

格式:metaflac [options] [files]

作用:显示或更改 FLAC 音频文件的信息

常用选项:

–show-tag name 显示给定标签的值

–remove-tag name 从 FLAC 文件中删除所有给定的标签


sox

格式:sox [options] infile outfile

作用:音频文件格式转换

常用选项:

-S 显示进度表,适用于长时间的格式转换情形

–no-clobber 如果输出的文件已经存在,则不覆盖原来的文件

-t type 指定输入的类型,如果 sox 无法识别的话


mplayer

格式:mplayer [options] video_files ...

作用:播放视频或音频文件


原作者:Wayne.Chen

整理于 2018 年 11 月 8 日下午