- Linux常用命令简明手册
- 邢国庆编著
- 583字
- 2020-08-28 07:42:02
C
cal——显示日历
语法格式
cal [-13jmsVy] [[[day] month] year]
命令简介
cal命令主要用于显示一个简单的日历。其中day用于指定日(1~31),month用于指定月(1~12),year用于指定年(1~9999)。
如果未指定参数,则显示当月的日历。如果只给定一个参数,意味着显示当年(1~9999)的日历。注意,指定的年号必须完整,如12表示公元12年,而非2012年。如果给定了两个参数,表示月和年。如果给定了3个参数,表示日、月和年。显示的日历中将会高亮显示指定的日子。如果未指定任何参数,显示当月的日历。
此外,每周的第一天究竟是星期日还是星期一,通常是由本地语言环境确定的。
命令选项
-1 显示当月的日历(默认)。 -3 显示前一月、当前月和下一月的日历。 -j 显示儒略历日期(从1月1日作为第一天开始计算任何一日是当年的第几天)。 -m 显示日历时把星期一作为每周的第一天。 -s 显示日历时把星期日作为每周的第一天。 -V 显示命令的版本信息,然后退出。 -y 显示当年全年的日历。
应用实例
1.显示当月的日历。
$ cal
October 2012
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
$
2.把星期一作为每周的第一天,显示当月的日历。
$ cal -m October 2012 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $
cancel——取消打印作业
语法格式
cancel [-E] [-U user] [-a] [-h host[:port]] [-u user] [reqids] [printers]
命令简介
cancel命令用于取消已提交但尚未打印的打印作业。其中,jobids是打印作业的请求ID或打印作业的编号。注意,打印作业编号是打印请求ID的尾号。例如,假定打印作业的请求ID是psc-2300-series-6,打印作业的编号就是6。
printers是目的打印机。使用“-a”选项将会取消指定目的打印机上的所有打印作业。
命令选项
-E 连接打印机服务器时启用加密方式。 -U user 使用指定的用户名连接打印机服务器。 -a 取消指定打印机上的所有打印作业。如果未指定任何命令参数,取消所有打印机上的 所有打印作业。 -h host[:port] 选择指定的打印机服务器。 -u user 取消指定用户提交的打印作业。
应用实例
1.分别按照指定的打印请求ID与打印作业编号删除打印作业。
$ cancel psc-2300-series-2 $ cancel 3 $
2.从指定的打印机上删除所有的打印作业。
# cancel –a psc-2300-series #
cat——显示文件内容
语法格式
cat [-AbeEnstTv] [files] cat [--help] [--version]
命令简介
cat命令用于显示指定文件的内容,其中,files是一个或一组输入文件名。如果同时指定了多个文件,则依次显示每一个文件,中间不加任何分隔标志。如果未指定输入文件,或指定的文件参数为“-”,则使用标准输入作为输入文件,逐行读取、显示从键盘上输入的数据内容,直至按下Ctrl-D组合键。
注意,不管终端窗口有多大,cat总是从头到尾连续显示整个文件的全部内容。如果文件太大或太长,最终只能见到文件最后一部分内容,之前的内容将会快速闪过。
命令选项
-A,--show-all 相当于同时指定了“vET”选项。 -b,--number-nonblank 类似于“-n”选项,但忽略空行的行号,仅对非空的数据行编号。 -e 相当于同时指定了“-vE”选项。 -E,--show-ends 在每行后面(换行符之前)附加一个美元符号“$”。 -n 在输出的每个数据行之前插入一个行号。 -s,--squeeze-blank 压缩重复的空行(多个连续的空行仅输出一行)。 -t 相当于“-vT”选项。 -T,--show-tabs 把制表符显示为“^I”。 -v,--show-nonprinting 在输出无法打印的字符(制表符、换行符与换页符除外)时,以^@、^A、 ^B、…、^Z、^[、^\、^]、^^和^_的控制字符形式分别显示八进制编码 000~037对应的ASCII字符。DEL字符显示为^?,其他无法打印的字符显 示为M-x,其中x是以低序7位二进制数表示的ASCII字符。此外,“v” 选项可与“-E”或“-T”选项一起使用。
应用实例
1.显示指定的文件。
$ cat /etc/passwd root:x:0:0:Super-User:/:/bin/sh daemon:x:1:1::/: ︙ $
2.把分章编写的文件合并为一个完整的文件:
$ cat chap1 chap2 chap3 chap4 chap5 > UserGuide $ ls chap1 chap2 chap3 chap4 chap5 UserGuide $
chgrp——修改文件的用户组属性
语法格式
chgrp [-cfhHLPRV] [--dereference] [--preserve-root] group files chgrp [-cfhHLPRV] [--dereference] [--preserve-root] --reference=rfile files chgrp [--help] [--version]
命令简介
修改指定文件的用户组属性,其中,group 是修改后的用户组名或用户组ID,files 是一个或一组文件(或目录)。第二种语法格式表示以指定参考文件的用户组属性为标准,修改指定文件的用户组属性。
命令选项
-c,--changes 类似于“-v”选项,但仅当发生实际变化时才显示处理过程。
-f,--silent,--quiet 禁止输出不重要的错误信息。
-h,--no-dereference 仅修改符号链接文件本身,而不涉及其引用的文件。
-R,--recursive 递归地设置文件与目录的用户组属性。
-v,--verbose 显示命令的处理过程与动作。
--dereference 修改符号链接文件引用的文件,但不涉及符号链接文件本身(这是默认的处
理方式)。
--preserve-root 在指定“-R”选项递归修改文件的用户组属性的情况下,再指定这个选项
能够禁止处理根目录“/”,否则此选项不起任何作用。
--reference=rfile 以指定文件的用户组属性为准,设置文件的用户组属性。
如果已经指定了“-R”选项,下列选项规定了递归处理时如何遍历目录文件层次。如果同时指定了多个下列选项,只有最后一个选项才起作用。
-H 与“-R”选项一起使用时,如果命令行参数是一个指向目录的符号链接文 件,则修改相应目录中的文件。 -L 与“-R”选项一起使用时,对于递归过程中遇到的每一个指向目录的符号 链接文件,修改相应目录中的文件。 -P 禁止遍历任何符号链接文件引用的目录。如果未指定“-H”、“-L”或 “-P”选项,这是默认的做法。
应用实例
1.把/data/table文件的用户组属性改为admin。
# chgrp admin /data/table #
2.把/data/schedule目录中所有文件及子目录的用户组属性改为admin。
# chgrp -hR admin /data/schedule #
chkconfig——管理系统服务与运行级
语法格式
chkconfig [--list] [--type type] [service] chkconfig --add service chkconfig --del service chkconfig [--level levels][--type type]service{on|off|reset|resetpriorities} chkconfig [--level levels] [--type type] service
命令简介
chkconfig是一个命令行工具,用于维护/etc/rc.d/rc[0-6].d目录中的启动或终止脚本,以避免系统管理员直接增删其中的各种符号链接文件。
chkconfig具有5 个不同的功能:增加新的服务、删除原有的服务、显示现有服务在各个运行级中的启停信息、修改服务在各个运行级中的启停状态,以及检测指定服务的启停状态。
运行chkconfig命令时,如果除了一个服务名参数之外未指定任何选项,将会检测指定服务的配置是否允许在当前运行级中启动。如果是,返回真,否则返回假。“--level”选项可用于查询服务在指定运行级而不仅仅是当前运行级的启动状态。
当使用“--list levels”选项,或未加任何选项与参数运行chkconfig命令时,将会显示所有服务及其当前的配置状态。
如果在服务名之后指定了on、off、reset或resetpriorities之一,chkconfig将会修改指定服务的启动信息。其中on与off分别表示改变运行级时启动或停止相应的服务,reset表示将按照服务启动脚本中的定义,重新设置相应服务在所有运行级上的on/off状态,resetpriorities表示按照服务启动脚本中的定义,重新设置相应服务启动与停止的优先级。
通常,on与off仅影响运行级2、3、4和5,而reset与resetpriorities能够影响所有的运行级。“--level”选项可用于指定究竟影响哪些运行级。
注意,针对每一个服务,每个运行级都有一个启动或停止脚本。在改变运行级时,init通常不会重新启动一个已经启动的服务,也不会重新停止一个当前并未运行的服务。
利用xinetd.d目录中的配置文件,chkconfig也能管理xinetd脚本。但对服务的支持仅限于启动(on)、停止(off)以及使用“--list”选项显示其on/off运行状态。
chkconfig还支持一个“--type”选项,用于限定特定服务类型的动作。仅当不同类型的服务具有相同的名字时,才需要用到这个选项,区分究竟指的是哪一个服务。有效的服务类型是sysv与xinetd。
命令选项
--level levels 指定服务配属的运行级。运行级由 0~6 的数字串组成,如“--level 35”表示运 行级3和5。 --add service 增加指定的服务,由chkconfig统一管理。在增加服务时,chkconfig将会在 /etc/rc.d/rc[0-6].d目录中增加相应的符号链接文件,确保在指定的运行级(参见启 动脚本“INIT INFO”一节或“#chkconfig:”注释行中的定义)或每个运行级(若 “INIT INFO”节中未定义)中,都有一个相应服务的启动或终止脚本。参见 “与运行级有关的启动脚本”一节中的说明。 --del service 从chkconfig管理的服务中删除指定的服务,同时删除/etc/rc.d/rc[0-6].d目录中的 相应符号链接文件。注意,若想暂时禁用一个服务,可以运行“chkconfig service off”命令。 --list[service] 显示chkconfig管理的所有服务及其在每个运行级的启停设置。如果指定了服务 的名字,仅显示指定服务的相关信息。
与运行级有关的启动脚本
一个服务是否能够由chkconfig管理,取决于其启动脚本中是否存在下列形式的两个或多个特定的注释行:
# chkconfig: levels start stop # description: description-to-startup-script # processname: srvname # config: path-to-config-file # pidfile: path-to-pid-file
其中第一行(“# chkconfig:”)告诉chkconfig,当前服务通常应在哪些运行级中启动,以及启动与停止的优先级。如果在任何运行级中都不需要启动当前的服务,应在运行级组合的位置放置一个连字符“-”。第二行是一个服务的描述(“# description:”),如果描述较长,可以使用转义符号“\”延续多行。
例如,autofs文件包含下列注释行: # chkconfig: 345 28 72 # description: Automounts filesystems on demand
上述信息说明autofs启动脚本应当在运行级3、4或5中运行,启动服务的优先级是28,停止运行的优先级是72。
chkconfig也支持LSB风格的启动脚本,其中包含下列形式的注释行。注意,这些注释行通常应置于“# chkconfig:”注释行之前。
### BEGIN INIT INFO # Provides: foo # Required-Start: bar # Defalt-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Foo init script ### END INIT INFO
在这个例子中,foo的启动优先级应高于bar的启动优先级,如果bar已经启用,应根据其启动优先级,适当地调整foo的启动优先级。注意,在设置依赖性时需要特别小心,如果处置不当,有可能会引起一连串的启动脚本的启停优先级调整。
应用实例
1.查询当前系统所有服务在每个运行级的启动状态。
# chkconfig
2.启用MySQL数据库。以便MySQL数据库能够随着系统的启动而自动启动:
# chkconfig --level 35 mysqld on #
chmod——修改文件的访问权限
语法格式
chmod [-cfRV] [--preserve-root] modes files chmod [-cfRV] [--preserve-root] octal-mode files chmod [-cfRV] [--preserve-root] --reference=rfile files chmod [--help] [--version]
命令简介
chmod命令根据指定的模式参数修改指定文件的模式字段,包括访问权限、setuid和setgid位等。modes参数是一种符号模式表示的访问权限修改意向,如增加或删除某种访问权限等,octal-mode 是一个八进制数值,表示按指定的模式重新设置文件的模式字段,不管文件原来的模式如何。files是一个或一组文件及目录。
注意,访问权限只是模式字段的一部分。模式字段还包括setuid、setgid、粘性位和文件类型等,chmod命令能够修改的仅限于访问权限、setuid、setgid和粘连位,不能修改文件的类型。
模式字段由16个二进制数据位组成,从高序位到低序位,前4位表示文件的类型,中间3位分别对应setuid、setgid和粘性位,后9位分为3组,第一组的3个二进制数据位分别表示文件属主是否能够读、写和执行文件(对于目录而言表示是否能够检索目录),第二组表示用户组是否能够读、写和执行文件,第三组表示此外的其他用户是否能够读、写和执行文件。如果用八进制数据表示3组9个二进制数据位,可以用000~777范围的八进制数据表示3个组别的读、写和执行。
符号模式的通用语法格式可由“[ugoa][[+-=][rwxXst]|[ugo]]”表示。在命令行中,可以同时指定多个符号模式,中间加逗号“,”分隔符。
字母ugoa的组合控制了文件的哪一部分权限需要修改。其中,u表示文件的属主,g表示文件归属的用户组,o表示此外的其他用户,a表示所有用户。如果未指定上述任何一个字符,相当于指定了a,但不影响umask的设置。
运算符“+”表示需要设置文件模式字段的相应位,增加文件的相应访问权限。“-”表示需要清除文件模式字段的相应位,删除文件的相应访问权限。“=”表示需要设置文件模式字段的相应位,而清除模式符号未提到的相应位,但不影响目录的属主和用户组设置。
“rwxXst”用于选择文件模式字段的相应标志位。按照文件属主、同组用户和其他用户3种情况,文件模式字段的相应标志位表示是否能够读(r)、写(w)和执行(x)文件(或检索目录)。文件是否设置了setuid(s)、setgid(s)或粘性位(t)等。特殊的X表示,仅当文件参数是一个目录,或文件已经具有执行的权限,才赋予相应用户执行或检索的权限。
除此之外,还可以直接使用ugo三个字母之一,表示使用文件属主、用户组或其他用户的当前权限设置其他组别的权限。
采用八进制数值设置文件的模式字段可能更直观,也更简捷。对于3个组别而言,7(111)表示全权,6(110)表示可读写,5(101)表示读与执行,4(100)表示只读,3(011)表示可以写和执行,2(010)表示只能写,1(001)表示只能执行,0(000)表示没有任何权限。至于setuid、setgig和粘性位,三者分别对应4(100)、2(010)和1(001)。
因此,如果想赋予文件一个全权,可以使用“chmod 777 file”命令。如果还要设置setuid、setgig或粘性位,可以使用类似于“chmod 4775 file”的命令。
一个文件或目录何时需要设置setuid、setgig或粘性位,下列说明可供参考:
设置文件的访问权限主要是为了保护文件,确保数据的安全。例如,大多数系统文件只有超级用户才能访问,普通用户不能修改,有的甚至也不能读,如/etc/shadow文件。当用户修改密码时,实际上也需要修改shadow文件。为此,系统提供了passwd命令,供用户随时修改自己的密码。passwd命令之所以能够修改shadow文件,是因为passwd命令文件设置了setuid位,在运行期间具有超级用户的访问权限。
设置setuid和setgid位的主要目的即在于此。如果一个命令文件设置了setuid或setgid位,在运行相应命令期间,用户的有效用户ID或有效用户组ID就会临时变成命令文件属主或用户组的用户ID或用户组ID,一旦退出又恢复原状。
如果需要设置一个文件的setuid位,可以使用类似于“chmod u+s file”的命令。
粘性位的作用取决于文件的类型。如果一个目录设置了粘性位,普通用户只能删除该目录中属于自己的文件。即使访问权限允许读写,也不能随意删除其他用户的文件,除非目录是自己拥有的,从而能够防止普通用户删除或覆盖共享目录中不属于自己的文件。
对于普通文件而言,粘性位表示共享代码段(text)方式。在传统的系统中,如果文件设置了粘性位,当第一次调用相应的程序时,一经执行,系统就会把程序的代码段副本存储在交换区中,即使程序已经终止执行。当再次运行时,能够减少程序代码段的加载时间。
如果需要设置一个目录的粘性位,可以使用类似于“chmod+t dir”的命令。
命令选项
-c,--changes 类似于“-v”选项,但仅当发生实际变化时才显示处理过程。
-f,--silent,--quiet 禁止输出不重要的错误信息。
-R,--recursive 递归地处理文件与目录。
-v,--verbose 显示命令的内部处理过程,依次显示每个文件的修改结果。
--preserve-root 当使用“-R”选项递归地修改文件的访问权限时,再指定这个选项能够禁止处
理根目录“/”,否则这个选项不起任何作用。
--reference=rfile 以指定的参考文件为准,设置命令行参数指定文件的模式字段,包括文件的访问
权限等。
应用实例
1.增加脚本文件chx的可执行属性,使得任何人均可运行。
$ chmod a+x chx $
2.采用八进制数据的方式做同样的修改(普通文件的访问权限通常为664,上述命令修改后的访问权限应为664+111=775)。
$ chmod 775 chx $
chown——修改文件的属主及其用户组属性
语法格式
chown [-cfhHLPRv] [--dereference] [--from=current_owner:current_group] [--preserve-root] [owner][:[group]] files chown [-cfhHLPRv] [--dereference] [--from=current_owner:current_group] [--preserve-root] --reference=rfile files chown [--help] [--version]
命令简介
chown命令用于修改指定文件的属主和用户组属性。其中,files 是一个或一组文件(或目录),owner是用户名或用户ID,group是用户组名或用户组ID。
如果仅仅指定了用户(owner),表示只修改文件的属主属性,文件的用户组属性保持不变。如果同时给定了用户、冒号与用户组(“owner:group”,三者中间没有空格),表示同时修改文件的属主和用户组属性。如果用户名后面只有冒号而未提供用户组(“owner:”),表示按给定的用户名修改文件的属主属性,按指定用户所属的用户组修改文件的用户组属性。如果只给出了冒号和用户组而未指定用户(“:group”),表示仅修改文件的用户组属性。在此情况下,chown命令的功能与chgrp命令相同。如果仅仅给定一个冒号,没有给定用户与用户组,或给定的owner与group均为空串,文件的属主与用户组属性保持不变。
第二种语法格式表示以指定的参考文件rfile为标准,修改指定文件的用户与用户组属性。
命令选项
-c,--changes 类似于“-v”选项,但仅当发生实际变化时才显示处理过程。 -f,--silent,--quiet 禁止输出不重要的错误信息。 -h,--no-dereference 仅修改符号链接文件本身,而不涉及其引用的文件。 -R,--recursive 递归地修改文件与子目录的属性。 -v,--verbose 显示命令的处理过程与动作。 --dereference 修改符号链接文件引用的文件,而不涉及符号链接文件本身(这是默认的处 理方式)。 --from=current_owner:current_group 仅当文件当前的属主和用户组属性匹配这个选项指定的属主和用户组时, 才修改文件的属主和用户组。如果这个选项忽略了其中的任何一个属性, 相应的匹配检测也随之忽略。 --preserve-root 在指定“-R”选项递归修改文件属主和用户组属性的情况下,再指定这个 选项能够禁止处理根目录“/”,否则此选项不起任何作用。 --reference=rfile 使用指定的参考文件的属主和用户组,设置命令行指定文件的属主与用户 组属性。
如果已经指定了“-R”选项,下列选项规定了递归处理时如何遍历目录文件层次。如果同时指定了多个下列选项,只有最后一个选项起作用。
-H 与“-R”选项一起使用时,如果命令行参数是一个指向目录的符号链接文 件,则修改相应目录中的文件。 -L 与“-R”选项一起使用时,对于递归过程中遇到的每一个指向目录的符号 链接文件,修改相应目录中的文件。 -P 禁止遍历任何符号链接文件引用的目录。如果未指定“-H”、“-L”或 “-P”选项,这是默认的做法。
应用实例
1.把/data/table文件的用户属性改为mysql。
# chgrp mysql /data/table #
2.把/data/table文件的用户与用户组属性均改为mysql。
# chgrp mysql:mysql /data/table #
3.把/data/schedule目录中所有文件及子目录的用户与用户组属性改为mysql。
# chgrp -hR mysql:mysql /data/schedule #
chroot——在设定的虚拟根目录中运行命令
语法格式
chroot [--userspec=user:group] [--groups=grouplist] newroot [cmd [args]] chroot [--help] [--version]
命令简介
chroot命令的主要目的是改换根目录,在新设定的虚拟根目录中运行指定的命令或交互Shell。通常,文件名(包括命令)是从根目录开始检索的,chroot命令把根目录改为指定的目录newroot,然后运行指定的命令cmd,如果需要,提供命令参数args。
其中,newroot必须是一个真实存在的目录,cmd可以是任何命令,如果未指定命令,运行SHELL变量定义的Shell,如果SHELL变量未定义,运行/bin/sh命令,使用“-i”作为命令选项。args是选用的命令参数,如“-i”选项。至于是否需要指定命令参数,视运行的命令而定。
命令选项
--userspec=user:group 指定使用的用户和用户组身份(ID或名字均可)运行命令。通常,提交的 命令是以当前用户的身份运行的,使用这个选项可以利用指定的用户身份 运行命令。 --groups=grouplist 指定用户分属的其他用户组(即从属用户组),表示以指定的从属用户组成 员的身份运行指定的命令。指定的从属用户组可以是一个或多用户组,ID 或名字均可。多个用户组之间需加逗号“,”分隔符,如g1,g2,..,gN等。
应用实例
1.当引导程序出现问题导致系统无法正常启动时,或忘记超级用户密码无法维护系统时,通常需要利用系统安装或维护光盘重新启动系统,选择、进入系统维护模式。例如,在Red Hat Linux系统的情况下,选择“Rescue installed system”,进入系统维护模式。系统维护环境是利用系统光盘启动的一个临时系统,如果需要修改系统的/etc/passwd/etc/shadow文件,或者重装GRUB引导程序,需要进入/dev/sda磁盘中的根目录(即“/”文件系统分区),在Red Hat Linux系统维护模式中,“/”文件系统已安装在/mnt/sysimage目录下。因此,若想进入/dev/sda系统盘中的“/”文件系统根目录,需要运行下列命令:
# chroot /mnt/sysimage #
此后,凡是运行的命令及访问的文件都是基于新的根目录的。例如,修改的/etc/passwd和/etc/shadow文件都是位于/dev/sda磁盘“/”文件系统分区中的文件,而非系统维护环境。在重新安装GRUB引导程序时也会找到/dev/sda系统盘的主引导记录。
clear——清除终端窗口
语法格式
clear
命令简介
clear命令主要用于清除终端窗口。clear命令根据TERM环境变量的设置确定终端的类型,然后查询terminfo数据库,决定怎样清除终端窗口。
实际上,clear只是tput命令的一个特例,相当于运行“tput clear”命令。
应用实例
1.清除终端屏幕。
$ clear
$
2.清除终端窗口。
$ tput clear $
cmp——以字节为单位逐个字符地比较两个文件
语法格式
cmp [options] file1 [file2 [skip1 [skip2]]] cmp [--help] [-v|--version]
命令简介
以字节为单位,逐个字符地比较两个输入文件。其中,file1与 file2是欲比较的两个文件。如果某个指定的文件为“-”,则使用标准输入作为输入文件,从终端键盘上读取输入的数据,然后再与另外一个文件进行比较。
命令选项
-b,--print-bytes 显示不同的字节。 -i skip,--ignore-initial=skip 跳过两个文件中的前skip个字节,然后再开始比较。数值后面可以加 kB(1000)、K(1024)、MB(10002)、M(10242)、GB(10003) 或G(10243)等单位后缀,表示相应的字节数量。 -i skip1:skip2,--ignore-initial=skip1:skip2 跳过文件file1中的前skip1个字节,跳过文件file2中的前skip2个字 节,然后再开始比较。同样,数值后面可以加上述单位后缀。 -l,--verbose 输出所有不同的字节在文件中的位置(十进制),以及字节的ASCII 编码值(八进制)。 -n limit,--bytes=limit 最多比较限定数量的字节。 -s,--quiet,--silent 不输出任何信息,仅返回结束状态表示比较结果。
应用实例
1.比较两个文件中的数据,结果表示第一个不同的数据出现在两个文件的第16行的第820个字节位置。
$ cmp wave1 wave2 wave1 wave2 differ: byte 820, line 16 $
2.比较两个文件中的数据,结果表示不同的数据出现在两个文件的第820与第822两个字节位置,两个文件的八进制ASCII编码分别是60(0)与61(1),以及60(0)与62(2)。
$ cmp wave1 wave2 820 60 61 822 60 62 $
col——过滤输入数据中的反向换行及退格符
语法格式
col [-bfpx] [-l num]
命令简介
col命令用于过滤反向换行及退格符等特殊的控制字符,以便能够以正常的顺序输出数据,同时尽可能使用制表符替代空格字符。当需要处理nroff、tbl或man等命令的输出数据时,col命令是非常有用的。
col命令仅从标准输入接收数据,然后写到标准输出。
命令选项
-b 禁止输出任何退格符。当遇到多个退格符时,仅输出写到每个字符位置的最后一个字符。
-f 允许前进半行。
-p 不加修改地强制放行不能识别的控制字符序列。通常,除了能够识别和解释的控制字符序
列之外,col命令会过滤掉输入数据中的其他任何控制字符序列。
-x 输出适当数量的空格字符,以替代制表符。
-l num 在内存中至少缓存指定数量的数据行(默认缓存128行)。
col命令能够识别和解释的打印机控制字符序列如下:
ESC-7 反向换行。
ESC-8 后退半行。
ESC-9 正向前进半行。
退格符 后退一个字符位置(在第一列时忽略之)。
回车符 回车。
换行符 回车换行。
shift in 采用主字符集。
shift out 采用备用字符集。
空格 前进一个字符位置。
制表符 移至下一个制表符位置。
纵向制表符 反向换行。
应用实例
1.过滤man命令输出数据中的退格符等控制字符,以便生成一个常规的文本文件。
$ man bash | col -b > bash.txt $
column——按照统一的列宽显示输入数据
语法格式
column [-tx] [-c columns] [-s sep] [files]
命令简介
column命令用于读取指定的数据文件,把读取的每个数据行分拆成多个字段,以统一的列宽与行宽显示输入数据。忽略空行。如果终端窗口的列宽能够显示多行数据,则以统一的列宽与行宽,逐行循环显示每个数据行。其中,files是一个或多个输入文件。如果未指定输入文件,读取标准输入。
命令选项
-c column s 定义终端窗口的列宽,默认值取自环境变量COLUMNS。 -s sep 与“-t”选项配合使用,定义列与列之间的分隔符。 -t 确定输入数据的列数,据以创建一个表。然后以整齐的排列逐行输出。通常,列与列 之间以空白字符或“-s”选项指定的字符作为分隔符。 -x 与默认的显示方式相反,先列后行,逐列显示每个数据行。
应用实例
1.合并printf命令输出的标题行与“ls -l”命令输出的文件列表(删除第一行),利用管道交由column命令,以统一的列宽显示文件列表。
$ (printf "PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM/YEAR NAME\n"; \ ls -l | sed 1d) | column -t
comm——逐行比较两个已排序的文件
语法格式
comm [-123] [--check-order] [--nocheck-order] [--output-delimiter=str] file1 file2 comm [--help] [--version]
命令简介
comm命令用于逐行比较两个已排序的文件file1和file2。如果未指定任何选项,生成三列输出结果。其中第一列含有file1中存在的唯一数据行,第二列含有file2中存在的唯一数据行,第三列含有file1和file2均存在的数据行。
命令选项
-1 禁止显示第一列(即禁止显示file1中存在的唯一数据行)。
-2 禁止显示第二列(即禁止显示file2中存在的唯一数据行)。
-3 禁止显示第三列(即禁止显示file1与file2均存在的数据行)。这相当于直
接运行diff命令比较两个文件的不同之处。
--check-order 检测输入文件是否已经正确排序。如果存在,指出未适当排序的文件。
--nocheck-order 不必检测输入文件是否已正确排序。
--output-delimiter=str 使用指定的字符串分隔输出的每一列数据。
应用实例
1.显示两个文件均存在的相同数据行。
$ comm -12 setenv1 setenv2
2.分别使用comm与diff命令比较两个文件的差别。
$ comm -3 setenv1 setenv2 LANG=C LANG=zh_CN.utf8 $ diff setenv1 setenv2 12c12 < LANG=zh_CN.utf8 --- > LANG=C $
cp——复制文件或目录
语法格式
cp [-bcdfHilLnpPsSuv] [-S suffix] [-Z ctxt] [gnu-opts] srcfile destfile cp [-abcdfHilLnpPsSuv] [-S suffix] [-t dir] [-Z ctxt] [gnu-opts] srcfiles destdir cp [-abcdfHilLnpPrRsSuv] [-S suffix] [-t dir] [-Z ctxt] [gnu-opts] srcdirs destdir cp [-abcdfHilLnpPsSuv] [-S suffix] [-t dir] [-Z ctxt] [gnu-opts] -t destdir srcfiles cp [--help] [--version]
命令简介
cp命令主要用于复制文件(或目录)。例如,把一个源文件复制到目的文件,或把多个源文件复制到目的目录中。其中,srcfile是源文件的路径名,srcfiles是一个或一组源文件的路径名,destfile是目的文件的路径名(主要用于单个文件复制),srcdirs是一个或一组源目录的路径名,destdir是目的目录的路径名,其中包含复制后的文件。
在第一种语法格式中,源文件和目的文件均为普通文件,而且不能同名。cp命令把源文件的内容复制到命名的目的文件中。如果目的文件存在,将会覆盖其原有的内容,但文件的用户ID、用户组ID、访问权限等属性保持不变,目的文件的修改时间和源文件的访问时间将设置为当前时间。如果目的文件不存在,则按指定的文件路径名创建一个新的文件,且与源文件具有相同的访问权限。如果目的文件是一个符号链接文件,cp将会覆盖其链接的目标文件的内容,但链接关系保持不变。
在第二种和第四种语法格式中,可以把一个或多个源文件复制到指定的目的目录中。
在第三种语法格式中,可以把一个或多个源目录复制到指定的目的目录中。注意,必须同时指定“-r”或“-R”选项。对于每一个源目录,cp将会复制其中的所有文件,包括子目录中的文件。如果指定的目的目录存在,cp命令将会把每个源目录复制到指定的目录中,否则将把源目录整体复制到指定的新目录。
命令选项
-a,--archive 尽可能多地保持源文件的目录结构与属性,也尝试保持SELinux安全属性 与扩充属性,但会忽略与之有关的处理错误。相当于同时指定了“-dR”与 “--preserve=all”选项。 -b 类似于“--backup”选项,但不能指定控制参数。 -c 如果可能,保持源文件的SELinux安全属性。这相当于指定了“--preserve= context”选项。注意,某些文件系统并不支持SELinux安全属性。 -d 仅仅复制符号链接文件本身,而不复制其引用的文件。对于硬链接文件而 言,保持源文件间的链接计数。这相当于同时指定了“--no-dereference” 与“--preserve=links”选项。 -f,--force 如果无法以“写”的方式打开现有的目的文件,复制通常会失败。如果指 定了这个选项,cp命令首先会删除目的文件,然后再尝试继续复制文件。 注意,如果指定了“-n”选项,则“-f”选项无效。 -H 如果源文件为符号链接文件,使用其引用的文件作为源文件,复制其文件 数据。 -i,--interactive 交互复制方式。当指定的目的文件存在时,为防止覆盖原有的文件,cp命 令将会提示用户存在同名的文件。仅当用户输入“y”确认之后,cp命令 才会继续执行复制;其他的任何回答将会终止文件复制的执行,从而防止 覆盖原有的文件(使用“-n”选项可抵消“-i”选项)。 -l,--link 以创建硬链接文件的方式取代文件复制。 -L,--dereference 如果源文件为符号链接文件,使用其引用的文件作为源文件,复制其文件 数据。在递归复制模式中,子目录中的符号链接文件也是如此处理。 -n,--no-clobber 禁止覆盖现有的文件(可以抵消“-i”选项的作用)。 -p 确保复制后的文件属性与源文件相同,其效果相当于指定了 “--preserve=mode,ownership,timestamps”选项。cp不仅复制源文件的数 据,也会保持文件复制后的用户ID、用户组ID、访问权限、修改时间及访 问时间等属性不变。为了维持复制后的文件属性,命令发布者必须是超级 用户或具有适当的文件访问权限。 -P,--no-dereference 如果源文件为符号链接文件,则复制符号链接文件本身,而非其引用的文 件。在递归复制模式中,子目录中的符号链接文件也是如此处理。 -R,-r,--recursive 目录文件递归复制模式。当指定的源文件为目录时,cp命令将会递归地复 制目录及其中的任何文件,把指定的目录及其中的所有文件(包括子目录中 的文件)复制到指定的目录位置。除非明确指定了“-H”、“-L”或 “-P”,否则以“-L”选项作为默认的处理动作。 -s,--symbolic-link 以创建符号链接文件的方式取代文件复制。 -S suffix,--suffix=suffix 备份文件通常是在文件名后面附加一个波浪号“~”后缀,利用这个选项 可以指定不同的后缀字符。 -t dir,--target-directory=dir 把所有的源文件复制到指定的目录中。 -u,--update 仅当源文件比目的文件更新或目的文件不存在时,才执行文件复制。 -v,--verbose 显示文件复制的处理过程与动作。 -Z ctxt,--context=ctxt 按照指定的SELinux属性设置复制后的文件。 --backup[=control] 在复制之前,备份现有的任何同名文件,以免覆盖。有效的控制参数包括 none或off(不备份)、numbered或t(在备份文件名后面增加数字顺序号)、 existing或nil(若存在数字编号的备份文件,使用数字方式,否则采用简单 的文件备份方式)及simple或never(采用简短的文件备份方式)。 --copy-contents 在递归复制时,就像复制普通文件一样,可以把特殊文件(如管道文件和设 备文件)中的数据内容复制到目的文件中。注意,在多数情况下,“cp -R --copy-contents”命令可能会陷于无尽的等待之中,如果复制的是/dev/zero 文件,也可能会耗尽目的磁盘。 --preserve[=attr_list] 复制后的文件应保持指定的属性。默认的属性包括mode(访问权限)、 ownership(用户与用户组)和timestamps(时戳)。其他可以指定的属性包 括context(SELinux属性)、links(链接)、xattr(扩充属性)及all(所有 属性)。 --no-preserve=attr_list 复制后的文件不要保持指定的属性。 --parents 把源文件复制到指定的目录,但要保持源文件的完整路径名。 --remove-destination 在尝试打开之前,删除现有的每一个同名的目的文件(参见“-f”选项)。 --strip-trailing-slashes 删除每个源文件参数中的斜线字符“/”后缀。
应用实例
1.复制单个文件。
$ cp atmcom.c atmcom.old $ ls atm* atmcom.c atmcom.old $
2.把指定目录中的所有文件复制到指定的目录中。
$ cp ~/src/* /mnt/src $
3.原封不动地复制一个完整的目录,包括其中的所有文件、子目录及其文件。
$ ls save save not found $ cp -r src save $ ls -R save atmmon.c atmcom.c handler.c listener.c $ cp -r src save $ ls -R save atmmon.c atmcom.c handler.c listener.c src: atmmon.c atmcom.c handler.c listener.c $
4.有意识地增加“-i”选项,防止误删文件。
$ ls atm* atmcom.c atmcom.old $ cp –i atmcom atmcom.old cp: overwrite atmcom.old (yes/no)? y $
cpio——创建或读取cpio档案文件
语法格式
cpio -o [-0aABcLvV] [-C bytes] [-H fmt] [--block-size=n] [-M msg] [-O [[user@]host:]archive] [-F [[user@]host:]archive] [--rsh-command=cmd] < name-list [> archive] cpio -i [-BcdfmnrtuvV] [-C bytes] [-E file] [-H fmt] [--block-size=n] [-M msg] [-R [user][:.][group]] [-I [[user@]host:]archive] [-F [[user@]host:]archive] [--no-preserve-owner] [-quiet] [--absolute-filenames] [-only-verify-crc] [--rsh-command=command] [patterns] [< archive] cpio -p [-0adlLmuvV] [-R [user][:.][group]] [--no-preserve-owner] dest-dir < name-list cpio [--help] [--version]
命令简介
cpio是一种数据备份与恢复工具,用于创建cpio档案文件,从档案文件中抽取文件,或者把文件从一个目录复制到另外一个目录。生成的档案文件可以是一个磁盘文件,也可以写入磁带等数据流介质。cpio不仅能够处理二进制与ASCII头数据格式的cpio档案文件,也能够读写各种tar格式的档案文件。为了保持兼容,如果不特别指定,cpio通常仍然创建二进制头数据格式的档案文件。
从档案文件中抽取文件时,cpio命令能够自动识别读取的是哪一种档案文件,而且也能读取在不同的系统中创建的具有不同字节顺序的档案文件。
cpio命令分为3种工作模式:输出模式(“-o”选项)、输入模式(“-i”选项)与复制模式(“-p”选项)。在运行cpio命令时,必须选用三种工作模式之一。
在输出模式中,cpio把一系列文件组合在一起,形成一个大的档案文件。cpio从标准输入接收文件名列表(每行一个文件),最后把文件合并为一个档案文件,写到标准输出。生成文件名列表的典型做法是find命令的输出。其中,name-list是需要归档的文件列表,archive是创建的档案文件。
在输入模式中,cpio从档案文件抽取文件,或显示档案文件中的文件列表。除非重定向或另有指定,cpio从标准输入读取档案文件。命令行后面的patterns可以是一个或一组Shell文件名模式,如果指定了文件名模式,cpio仅仅从档案文件中抽取匹配指定文件名模式的文件。如果未指定任何文件名模式,抽取所有的文件。
在复制模式中,cpio命令把一个目录中的文件和子目录,按原来的层次结构原封不动地复制到指定的目的目录 dest-dir。实际上,复制模式组合了输出模式与输入模式,但省略了中间的档案文件创建过程。cpio从标准输入接收文件名列表(每行一个文件),把文件写到指定的目的目录中。
功能选项
-i,--extract 指定输入模式,用于恢复档案文件。 -o,--create 指定输出模式,用于备份档案文件。 -p,--pass-through 指定复制模式,用于复制一个完整的目录或文件系统。
命令选项
-0,--null 读取以NULL字符(而非换行符)为终止符的文件名列表。GNU版的find 命令能够生成以NULL字符为终止符的文件名列表。注意,这个选项只能 用于输出模式与复制模式。 -a,--reset-access-time 在复制完成之后,复原输入文件的访问时间,使输入文件仍然保持原来的 访问时间,就像cpio命令根本没有读过这些文件一样。 -A, --append 把新复制的文件附加到现有档案文件的后面。这个选项仅适用于输出模 式。在与“-O”或“-F”选项一起使用时,指定的档案文件必须是一个磁 盘文件。 -B 以5120字节的数据块为读写单位。默认的读写数据块为512字节。注意, 输入与输出模式最好采用相同的数据块参数。 -c 使用新的SVR4格式创建档案文件,等同于“-H newc”选项。 -C bytes,--io-size=bytes 以指定字节数量的数据块作为读写的单位。 -d,--make-directories 在复制过程中,根据需要创建必要的目录。注意,这个选项只能与“-i” 或“-p”选项一起使用。 -E file,--pattern-file=file 从指定的文件中抽取指定的文件名模式,作为命令行文件名模式参数的补 充。注意,这个选项只能用于输入模式。 -f,--nonmatching 仅复制与指定模式不匹配的文件。 -F archive,--file=archive 使用指定的文件作为档案文件,替代默认的标准输入或标准输出。若想令 其他系统的磁带替代档案文件,可以在文件路径名的前面增加 “hostname:”字符串前缀。如果当前用户具有足够的访问权限,还可以在 主机名之前增加一个用户名与“@”字符,以便能够以指定用户的身份访 问远程系统的磁带机。 -H fmt,--format=fmt 使用指定的格式创建档案文件。在输入模式下,cpio会自动检测档案文件 的格式,并进行相应的处理。在输出模式下,默认的档案文件格式是bin。 cpio支持的有效档案文件格式如下: bin 已废弃的二进制头数据格式。 odc 老的ASCII头数据格式。 newc 新的SVR4 ASCII头数据格式。 crc 新的SVR4 ASCII头数据格式,增加了校验和功能。 tar 老的tar格式。 ustar POSIX.1 tar格式(类似但不等同于GNU tar格式)。 hpbin 过时的HP-UX二进制头数据格式。 hpodc HP-UX ASCII头数据格式。 -I archive 使用指定的档案文件作为输入数据源,而不是读取标准输入。如果指定的 文件是一个字符设备文件,且当前介质已完全读入,可根据提示更换新介 质,然后按下Enter键,以便继续读取下一个介质中的数据。注意,这个选 项只能与“-i”选项一起使用,以指定的档案文件替代标准输入。若想令 其他系统的磁带替代档案文件,可以在文件路径名前面增加“hostname:” 字符串前缀。如果当前用户具有足够的访问权限,还可以在主机名之前增 加一个用户名与“@”字符,以便能够以指定用户的身份访问远程系统的 磁带机。 -l,--link 可能时应尽量创建链接文件,而不是复制文件。 -L,--dereference 复制符号链接文件引用的文件而非符号链接文件本身。 -m, --preserve-modification-time 创建文件时,保持先前的文件修改时间。 -M msg,--message=msg 定义一个提示信息。当读写达到存储介质(如磁带)结尾处需要更换新的介 质时,提示用户更换下一个介质。如果提示信息中包含字符串“%d”, cpio将会代之以当前的介质序号(介质从1开始编号)。 -n,--numeric-uid-gid 与“-v”选项一起使用时,仅显示数字形式的用户ID和用户组ID,以取代 相应的名字。 -O archive 使用指定的档案文件作为输出文件,而非写到标准输出。如果指定的文件 是一个字符设备文件,且当前的介质已经完全写满,可以根据系统提示更 换新的介质,然后按下Enter键,以便继续写入下一个介质。注意,这个选 项只能与“-o”选项一起使用。若想令其他系统的磁带替代档案文件,可 以在文件路径名的前面增加“hostname:”起始字符串。如果当前用户具有 足够的访问权限,还可以在主机名之前增加一个用户名与“@”字符,以 便能够以指定用户的身份访问远程系统的磁带机。 -r,--rename 交互地重新命名文件。 -R[user][:.][group],--owner[user][:.][group] 在输出模式或复制模式下,使用指定的用户和用户组设置所有新建文件的 属主属性。注意,只有超级用户才能修改文件的属主属性,此外,指定的 用户或用户组必须已经存在。如果忽略了用户组,但给出了冒号“:”或句 点“.”分隔符,则使用指定用户所属的用户组。 -t,--list 读取并显示档案文件中的文件列表。 -u,--unconditional 无条件地强行复制。当出现同名文件时,直接替换原有的所有文件,而不 提示用户是否同意以老文件替换新文件。如果不加此选项,cpio命令的常 规处理惯例是禁止同名的老文件替换或覆盖新文件。 -v,--verbose 显示方式。输出读写的每一个文件名。当与“-t”选项一起使用时,其效 果等同于“ls-l”命令输出的文件名列表。 -V,--dot 特殊显示方式。对于读写的每一个文件,仅仅输出一个句点“.”标记。 --absolute-filenames 在输入模式中,禁止删除文件路径名中文件名前面包含“..”和斜线字符 “/”的目录部分。 --block-size=n 把作为读写单位的数据块设置为“n*512”个字节。 --force-local 与“-F”、“-I”或“-O”选项一起使用时,把提供的档案文件名作为本 地文件处理,即使其中含有表示远程主机名与文件名分隔符的冒号“:”。 --no-preserve-owner 对于普通用户而言,抽取的文件归属于运行cpio命令的用户。对于超级用 户而言,抽取的文件保持原有的属主属性不变,如果选用了此选项,可以 解除此限制,像普通用户一样,抽取的文件归属于超级用户。这个选项仅 适用于输入模式与复制模式。 --only-verify-crc 在读取CRC格式的档案文件时,仅验证档案文件中每个文件的循环冗余校 验和,实际上并不抽取任何文件。 --quiet 禁止显示复制的数据块数量。 --rsh-command=cmd 通知cpio使用指定的命令与远程设备进行通信。
应用实例
1.利用find命令,把一个目录或文件系统中的所有文件创建成一个档案文件。
$ cd /data $ find . -print -depth | cpio -ocv > /backup/data.cpio
2.恢复先前备份的档案文件,覆盖现有的文件,创建必要的目录,保持文件的访问时间。
$ cd /data $ cpio -icdmuv < /backup/data.cpio
3.查询先前备份在磁带上的档案文件,但不抽取任何文件。
# cpio -icvt < /dev/st0
4.从档案文件中抽取文件名后缀为“0831”的文件。
# cd /data # cpio -icdmuv "*0831" < /dev/st0 data.0831 1024050 blocks #
crontab——维护用户的crontab文件
语法格式
crontab [-u user] file crontab [-u user] [-l|-r|-e] [-i] [-s]
命令简介
crontab命令用于创建、显示或删除crontab文件,而crontab文件用于设置后台作业,交由cron守护进程自动调度运行。其中,file是一个crontab格式的后台作业定义文件,通过复制其中的内容,创建一个新的crontab文件。如果指定的文件名为“-”,表示利用键盘输入直接创建crontab文件。
利用第二种语法格式,可以显示或删除crontab文件,也可以利用VISUAL、EDITOR变量定义的编辑器或默认的编辑器(因系统而不同)直接编辑crontab文件。超级用户可以处理其他用户的crontab文件,普通用户只能处理自己的crontab文件。
除非特别限定,每个用户通常都可以拥有自己的crontab文件,但这些文件必须位于/var/spool/crontab/cron目录中,且不能直接编辑。
用户级的crontab文件具有下列格式(系统crontab文件还需要在command字段前面插入一个用户名字段,表示以什么用户身份运行后台作业):
minute hour day month week command
每一行的前5个字段分别表示分(0~59)、小时(0~23)、日(1~31)、月(1~12)和周(0~7)。最后一个字段用于指定需要调度执行的命令或Shell脚本。
在crontab文件的每个时间字段中,还可以使用下列特殊字符,以增加时间定义的灵活性:
● 使用逗号并列指定多个数值,如“1,3,5,7,9”;
● 使用减号“-”指定一个数值范围,如“1-9”;
● 使用除号“/”和一个数字表示增量,如“1-9/2”,相当于“1,3,5,7,9”;
● 使用星号“*”通配符表示所有可能的合法数值;
● 除了数字之外,月和周两个字段还可以使用前3个字符的英文名缩写,如feb表示二月,sun表示星期日等。
每一行的起始位置还可以采用注释符号“#”,增加一个注释行或空行。
从系统管理与安全的角度,可以利用/etc/cron.allow与/etc/cron.deny两个系统文件,限定用户是否能够提交cron作业。如果cron.allow文件存在,只有名列其中的用户才能使用crontab命令提交cron作业。如果cron.allow文件不存在,但cron.deny文件存在,只要不在cron.deny文件列举的用户名单之内,就可以使用crontab命令提交cron作业。如果这两个文件都不存在,只有超级用户才能使用crontab命令提交cron作业。
第二种方法是利用PAM认证机制,设置哪些用户能够(或不能)运行crontab命令,提交后台作业,哪些用户能够(或不能)维护/etc/cron.d目录中的系统cron作业。
命令选项
-e 用于调用环境变量VISUAL或EDITOR设定的编辑器,编辑当前用户的crontab文件。在退
出编辑器时,修改后的crontab临时文件会自动安装到/var/spool/crontab/cron目录。超级用户
可以编辑指定用户的crontab文件。
-i 用于限定“-r”选项,在实际删除crontab文件之前提请用户确认,直至输入y或Y之后,
才真正开始删除crontab文件。
-l 显示当前用户的crontab文件。超级用户可以显示指定用户的crontab文件。
-r 删除当前用户的crontab文件。超级用户可以删除指定用户的crontab文件。
-u user 处理指定用户的crontab文件。如果未加此选项,crontab命令考察的是当前用户的crontab
文件。注意,只有超级用户才能使用这个选项指定其他用户。
应用实例
1.使用“-e”选项运行crontab命令,在/var/spool/cron目录中创建一个属于自己的crontab文件。然后利用编辑命令,按照crontab文件的语法格式输入作业定义。最后保存文件,退出编辑器,即可创建一个以当前用户名命名的crontab文件。
$ crontab -e
2.使用“-l”选项运行crontab命令,显示当前用户自己的crontab文件内容(在每天的23:55,利用mysqldump命令自动备份数据库、数据库表及其业务数据)。
$ crontab -l # Backup MySQL dadabase at 23:55 everyday. 55 23 * * * mysqldump --add-drop-table -u gqxing –phereiam books > /home/gqxing/backup/books.`date '+%m%d'` >> /home/gqxing/backup/backup.log 2>&1 $
cut——截取输入数据行的部分数据
语法格式
cut [-s] [-b list] [-c list] [-d delim] [-f list] [--complement] [--output-delimiter=str] [files] cut [--help] [--version]
命令简介
cut命令用于读取标准输入或指定的文件,截取每个数据行的部分字节、字符或字段,按指定的选择顺序,组合后逐行显示。file是一个或一组输入文件,如果未指定输入文件,则从标准输入中读取数据。
命令选项
-b list,--bytes=list 仅选择指定的字节。参数list的说明详见“选项参数”一节。 -c list,--characters=list 仅选择指定的字符。参数list的说明详见“选项参数”一节。 -d delim,--delimiter=delim 使用指定的字符作为字段分隔符,以替代默认的制表符。 -f list,--fields=list 仅选择指定的字段。如果输入行不包含字段分隔符,则选择整个输入 行,除非指定了“-s”选项。参数 list 的说明详见“选项参数”一 节。 -s,--only-delimited 禁止输出不包含分隔符的数据行。 --complement 选择“-b”、“-c”或“-f”选项指定的字节、字符或字段之外的数 据。 --output-delimiter=str 使用指定的字符串作为输出分隔符(通常使用输入分隔符作为输出分 隔符)。 注意,在上述命令选项中,“-b”、“-c”或“-f”3个选项每次只能选用其一。
选项参数
list 由一个或多个范围(中间加逗号“,”分隔符)组成,用于指定选择的字节、字符或字段(均 从1开始编号)。范围可以重复或重叠,也可按照任何顺序重新排列。每个范围具有下列4 种表示方式: ● n 第n个字节、字符或字段; ● n- 从第n个字节、字符或字段开始直至行尾; ● n-m 第n~m个字节、字符或字段; ● -m 第1~m个字节、字符或字段。
应用实例
1.使用冒号“:”作为分隔符,从passwd文件中查询指定用户的用户ID。
$ cat /etc/passwd | grep gqxing | cut –d : –f 3 500 $