1、shell的作业控制
命令 | 作用 |
---|
jobs | 列出作业 | & | 在后台运行作业 | Ctrl+Z | 挂起当前(前台)作业 | suspend | 挂起shell的执行 | fg [%jobnumber] | 撤销作业的挂起操作,让它在前台运行 | bg [%jobnumber] | 让挂起的作业在后台运行 |
2、文件基本操作
命令 | 作用 |
---|
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 命令
3、目录操作
命令 | 作用 |
---|
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命令的话,则会直接删除而不提供任何错误信息,同时也不要求进行确认
4、查看文件
命令 | 作用 |
---|
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
格式: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)
-t(a|c)[z] 以字符格式显示输出,非字母数字字符输出为转义序列(c)或名称(a)
-t(d|o|u|x)[z] 以整数格式显示输出,可以使用八进制(o)、有符号十进制(d)、无符号十进制(u)、十六进制(x)
注:将z附加到-t选项的话,会在输出的右侧输出一个新列,用来显示每行中的可打印字符
5、文件属性
命令 | 说明 |
---|
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 如果显示目录的话,不显示其内容,仅显示目录本身
6、文件的定位
命令 | 作用 |
---|
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选项来跟踪目录列表
7、文件的正文处理
命令 | 作用 |
---|
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 忽略中断信号
8、文件的压缩与打包
命令 | 作用 |
---|
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_file ,mpack [options] files
作用:munpack可以将邮件的附件解压为文件,mpack则是将一个或多个文件作为附件插入到MIME格式的文件中
9、文件的比较
命令 | 作用 |
---|
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更加可靠一些
10、处理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格式
11、打印
命令 | 作用 |
---|
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选项用来指出作业所在的打印队列
12、拼写检查
命令 | 作用 |
---|
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]
作用:输出给定文件中与其字典相比存在拼写错误的所有单词
13、磁盘和文件系统
命令 | 作用 |
---|
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,具体命令如下所示:
注:如果要刻录音频CD,请使用更加友好的图形工具,例如k3b
14、查看进程
命令 | 作用 |
---|
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”行
15、控制进程
命令 | 作用 |
---|
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,终止已知其程序名称的进程了:
kill `pidof emacs`
或者使用killall命令终止给定程序的所有进程:
killall emacs
除了位于文件系统中的kill程序(通常位于/bin/kill)之外,大多数shell都提供了内置的kill命令,不过两者在语法和行为方面有所差异。但是,它们都支持以下用法:
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,不要加任何参数,具体如下所示:
$ 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将失败。这个选项对于允许有限数量的命令同时运行是非常有用的
16、作业调度
命令 | 作用 |
---|
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文件
17、登录、注销与关机
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 挂起系统
18、用户及环境变量
命令 | 作用 |
---|
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所知的所有环境变量及其值,或只显示指定的变量
19、用户帐户管理
命令 | 作用 |
---|
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
20、用户组的管理
命令 | 作用 |
---|
groups | 显示用户所在组 | groupadd | 创建用户组 | groupdel | 删除用户组 | groupmod | 修改用户组 |
groups
格式:groups [usernames]
作用:显示你所属的或其他用户所属的LInux组
groupadd
格式:groupadd [options] group
作用:创建组。在大多数情况下,应该使用-f选项来防止创建重名的组
常用选项:
-g gid 自己指定数字组ID,而不是让groupadd选择一个
-f 如果指定的组已经存在,给出提示并退出
groupdel
格式:groupdel group
作用:删除现有的组
注:在进行该项操作之前,最好找出所有组ID被设置为给定组的文件,以便稍后处理
$ sudo find / -group <group> -print
因为groupdel不会改变文件所属的组。它只是从系统中删除相应的组的名称。如果你显示这些文件的话,你会看到数字组ID,而不是组名
groupmod
格式:groupmod [options] group
作用:修改给定组,改变其名称或组ID
注:groupmod命令不影响属于该组的任何文件:它只是修改系统记录中的ID或名称。但是,更改ID时要小心,否则会导致这些文件归属于不存在的组
常用选项:
-n name 将组的名称更改为name(安全)
-g gid 将组ID更改为gid(危险)
21、主机信息
命令 | 作用 |
---|
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 查看所有已经加载的网络接口
22、主机位置
命令 | 作用 |
---|
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 | 通信出于管理的需要而被禁止 | !N | ICMP不可达代码N |
默认数据包大小为40字节,但你可以通过可选参数packet_length来进行修改
常用选项:
-n 数字模式:显示IP地址而不是主机名
-w N 将超时从5秒改为N秒
23、网络连接
命令 | 作用 |
---|
ssh | 安全地登录到远程主机,或在其上运行命令 | scp | 安全地将文件复制到远程主机中(批处理方式) | sftp | 安全地将文件复制到远程主机,或者从远程主机安全地复制文件到本地主机(交互方式) | ftp | 将文件复制到远程主机,或者从远程主机安全地复制文件到本地主机(交互式,不安全) | netcat | 创建任意网络连接 |
ssh
格式:ssh [options] host [command]
作用:如果你在某远程机器上面拥有相应的帐户的话,可以通过ssh程序来进行安全的远程登录,或是调用远程机器上的程序而无需登录。ssh会加密通过其连接进行传输的所有数据,包括你的用户名和密码(这是你需要访问远程计算机所需的)。SSH协议还支持其他方式进行身份验证,例如公钥和主机ID
常用选项:
-l user 指定你的远程用户名,否则,ssh将默认使用你的本地用户名。你还可以使用username@host语法:ssh wayne@server.example.com
-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 wayne@remote.example.com:
常用选项:
-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
作用:列出所有等待发送的外发电子邮件,发送的邮件将记录在日志文件中
24、网页浏览
命令 | 作用 |
---|
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 目录排除:仅从不符合给定模式的目录中下载文件
25、即时通信
命令 | 作用 |
---|
write | 向终端发送消息 | mesg | 设置当前终端的写权限,即是否让其他用户向本终端发消息 | tty | 显示终端设备名称 | sendxmpp | 通过XMPP(Jabber)发送即时消息 | profanity | 基于文本的XMPP客户端 | irssi | 基于文本的IRC客户端 |
write
格式:write user [tty]
作用:向同一台机器上的其他用户发送多行文本,Ctrl+D组合键用于结束连接。也可以在管道中发送一次性消息
注:与write命令功能比较接近的一个命令是wall,它能同时向所有登录用户发送消息:
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客户端
26、屏幕输出
命令 | 作用 |
---|
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窗口中的内容
27、复制和粘贴
命令 | 作用 |
---|
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命令中的内容
28、数学和计算
命令 | 作用 |
---|
expr | 在命令行进行简单的数学运算 | bc | 基于文本的计算器 | dc | 基于文本的RPN计算器 |
expr
格式:expr expression
作用:在命令行中执行简单的数学(和其他表达式求值)运算
bc
格式:bc [options] [files]
作用:读取算术表达式,每行一个,并显示结果
dc
格式:dc [options] [files]
作用:从标准输入读取表达式,并将结果写入标准输出,它是一个使用逆波兰表示法(RPN)、基于堆栈的计算器
29、日期和时间
命令 | 作用 |
---|
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权限
30、图像
命令 | 作用 |
---|
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表示文件格式等
31、音频和视频
命令 | 作用 |
---|
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日下午
|