赞
踩
newaliases
命令Linux newaliases命令会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程序负责分送的工作。
/etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的数据库。
使用权限:系统管理者。
语法
newaliases
Shell
参数说明:没有任何参数。
# newaliases
Shell
下面命令会做相同的事
# sendmail -bi
uuname
命令Linux uuname命令用于显示全部的UUCP远端主机。
uuname可显示UUCP远端主机。
语法
uuname [-alv][-I<配置文件>][--help]
Shell
参数说明:
显示uucp主机名称
# uuname
netconf
命令Linux netconf命令用于设置各项网络功能。
netconf是Red Hat Linux发行版专门用来调整Linux各项设置的程序。
语法
netconf
write
命令Linux write命令用于传讯息给其他使用者。
使用权限:所有使用者。
语法
write user [ttyname]
Shell
参数说明:
传讯息给 Rollaend,此时 Rollaend 只有一个连线
write Rollaend
Shell
接下来就是将讯息打上去,结束请按 ctrl+c
传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3
write Rollaend pts/2
Shell
接下来就是将讯息打上去,结束请按 ctrl+c
**注意:**若对方设定 mesg n,则此时讯席将无法传给对方。
statserial
命令Linux statserial命令用于显示串口状态。
statserial(status ofserial port)可显示各个接脚的状态,常用来判断串口是否正常。
语法
statserial [-dnx][串口设备名称]
Shell
参数说明:
显示串口状态
# statserial /dev/tty1
Shell
只显示一次串口状态
# statserial -n /dev/tty1
efax
命令Linux efax命令用于收发传真。
支持Class 1与Class 2的调制解调器来收发传真。
语法
efax [-sw][-a<AT指令>][-c<调制解调器属性>][-d<驱动程序>][-f<字体文件>][-g<指令>][-h<传真标题字符串>][-i<AT指令>][-j<AT指令>][-k<AT指令>][-l<识别码>][-o<选项>][-q<错误次数>][-r<文件名>][-v<信息类型>][-x<UUCP锁定文件>][-t<电话号码><传真文件>]
Shell
参数说明:
pppsetup
命令Linux pppsetup命令用于设置PPP连线。
这是Slackware发行版内附程序,它具有互动式的问答界面,让用户轻易完成PPP的连线设置。
语法
pppsetup
Shell
设置ppp拨号
# pppsetup
tcpdump
命令Linux tcpdump命令用于倾倒网络传输数据。
执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。
语法
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
Shell
参数说明:
显示TCP包信息
# tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 23:35:55.129998 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 148872068:148872168(100) ack 4184371747 win 2100 23:35:55.182357 IP 192.168.0.1.2101 > 192.168.0.3.ssh: . ack 100 win 64240 23:35:55.182397 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 100:200(100) ack 1 win 2100 23:35:55.131713 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: 50226+ PTR? 1.0.168.192.in-addr.arpa. (42) 23:35:55.131896 PPPoE [ses 0x1cb0] IP 118.250.6.85.64215 > dns2.cs.hn.cn.domain: 50226+ PTR? 1.0.168.192.in-addr.arpa. (42) 23:35:55.154238 PPPoE [ses 0x1cb0] IP dns2.cs.hn.cn.domain > 118.250.6.85.64215: 50226 NXDomain 0/0/0 (42) 23:35:55.156298 IP dns2.cs.hn.cn.domain > 192.168.0.3.32804: 50226 NXDomain 0/0/0 (42) 23:35:55.159292 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: 30304+ PTR? 3.0.168.192.in-addr.arpa. (42) 23:35:55.159449 PPPoE [ses 0x1cb0] IP 118.250.6.85.64215 > dns2.cs.hn.cn.domain: 30304+ PTR? 3.0.168.192.in-addr.arpa. (42) 23:35:55.179816 PPPoE [ses 0x1cb0] IP dns2.cs.hn.cn.domain > 118.250.6.85.64215: 30304 NXDomain 0/0/0 (42) 23:35:55.181279 IP dns2.cs.hn.cn.domain > 192.168.0.3.32804: 30304 NXDomain 0/0/0 (42) 23:35:55.181806 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 200:268(68) ack 1 win 2100 23:35:55.182177 IP 192.168.0.1.2101 > 192.168.0.3.ssh: . ack 268 win 64198 23:35:55.182677 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: 43983+ PTR? 112.96.103.202.in-addr.arpa. (45) 23:35:55.182807 PPPoE [ses 0x1cb0] IP 118.250.6.85.64215 > dns2.cs.hn.cn.domain: 43983+ PTR? 112.96.103.202.in-addr.arpa. (45) 23:35:55.183055 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 268:352(84) ack 1 win 2100 23:35:55.201096 PPPoE [ses 0x1cb0] IP dns2.cs.hn.cn.domain > 118.250.6.85.64215: 43983 1/0/0 (72) 23:35:55.203087 IP dns2.cs.hn.cn.domain > 192.168.0.3.32804: 43983 1/0/0 (72) 23:35:55.204666 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 352:452(100) ack 1 win 2100 23:35:55.204852 IP 192.168.0.1.2101 > 192.168.0.3.ssh: . ack 452 win 64152 23:35:55.205305 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 452:520(68) ack 1 win 2100 23:35:55.205889 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: 9318+ PTR? 85.6.250.118.in-addr.arpa. (43) 23:35:55.206071 PPPoE [ses 0x1cb0] IP 118.250.6.85.64215 > dns2.cs.hn.cn.domain: 9318+ PTR? 85.6.250.118.in-addr.arpa. (43) 23:35:55.215338 PPPoE [ses 0x1cb0] IP 115.238.1.45.3724 > 118.250.6.85.64120: P 2392751922:2392751987(65) ack 2849759785 win 54 23:35:55.216273 IP 115.238.1.45.3724 > 192.168.0.65.2057: P 2392751922:2392751987(65) ack 2849759785 win 54 23:35:55.329204 IP 192.168.0.1.2101 > 192.168.0.3.ssh: . ack 520 win 64135 23:35:55.458214 IP 192.168.0.65.2057 > 115.238.1.45.3724: . ack 65 win 32590 23:35:55.458221 PPPoE [ses 0x1cb0] IP 118.250.6.85.64120 > 115.238.1.45.3724: . ack 65 win 32590 23:35:55.708228 PPPoE [ses 0x1cb0] IP 115.238.1.45.3724 > 118.250.6.85.64120: P 65:118(53) ack 1 win 54 23:35:55.710213 IP 115.238.1.45.3724 > 192.168.0.65.2057: P 65:118(53) ack 1 win 54 23:35:55.865151 IP 192.168.0.65.2057 > 115.238.1.45.3724: . ack 118 win 32768 23:35:55.865157 PPPoE [ses 0x1cb0] IP 118.250.6.85.64120 > 115.238.1.45.3724: . ack 118 win 32768 23:35:56.242805 IP 192.168.0.65.2057 > 115.238.1.45.3724: P 1:25(24) ack 118 win 32768 23:35:56.242812 PPPoE [ses 0x1cb0] IP 118.250.6.85.64120 > 115.238.1.45.3724: P 1:25(24) ack 118 win 32768 23:35:56.276816 PPPoE [ses 0x1cb0] IP 115.238.1.45.3724 > 118.250.6.85.64120: . ack 25 win 54 23:35:56.278240 IP 115.238.1.45.3724 > 192.168.0.65.2057: . ack 25 win 54 23:35:56.349747 PPPoE [ses 0x1cb0] IP 115.238.1.45.3724 > 118.250.6.85.64120: P 118:159(41) ack 25 win 54 23:35:56.351780 IP 115.238.1.45.3724 > 192.168.0.65.2057: P 118:159(41) ack 25 win 54 23:35:56.400051 PPPoE [ses 0x1cb0] IP 119.147.18.44.8000 > 118.250.6.85.4000: UDP, length 79 23:35:56.475050 IP 192.168.0.65.2057 > 115.238.1.45.3724: . ack 159 win 32762 23:35:56.475063 PPPoE [ses 0x1cb0] IP 118.250.6.85.64120 > 115.238.1.45.3724: . ack 159 win 32762 23:35:56.508968 PPPoE [ses 0x1cb0] IP 115.238.1.45.3724 > 118.250.6.85.64120: P 159:411(252) ack 25 win 54 23:35:56.510182 IP 115.238.1.45.3724 > 192.168.0.65.2057: P 159:411(252) ack 25 win 54 23:35:56.592028 PPPoE [ses 0x1cb0] IP 117.136.2.43.38959 > 118.250.6.85.63283: UDP, length 36 44 packets captured 76 packets received by filter 0 packets dropped by kernel
Shell
显示指定数量包
# tcpdump -c 20 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 23:36:28.949538 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 148875984:148876020(36) ack 4184373187 win 2100 23:36:28.994325 IP 192.168.0.1.2101 > 192.168.0.3.ssh: . ack 36 win 64020 23:36:28.994368 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 36:72(36) ack 1 win 2100 23:36:28.950779 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: 18242+ PTR? 1.0.168.192.in-addr.arpa. (42) 23:36:28.950948 PPPoE [ses 0x1cb0] IP 118.250.6.85.64215 > dns2.cs.hn.cn.domain: 18242+ PTR? 1.0.168.192.in-addr.arpa. (42) 23:36:28.960105 PPPoE [ses 0x1cb0] IP 222.82.119.41.13594 > 118.250.6.85.63283: UDP, length 36 23:36:28.962192 IP 222.82.119.41.13594 > 192.168.0.65.13965: UDP, length 36 23:36:28.963118 IP 192.168.0.65.13965 > 222.82.119.41.13594: UDP, length 34 23:36:28.963123 PPPoE [ses 0x1cb0] IP 118.250.6.85.63283 > 222.82.119.41.13594: UDP, length 34 23:36:28.970185 PPPoE [ses 0x1cb0] IP dns2.cs.hn.cn.domain > 118.250.6.85.64215: 18242 NXDomain 0/0/0 (42) 23:36:28.970413 IP dns2.cs.hn.cn.domain > 192.168.0.3.32804: 18242 NXDomain 0/0/0 (42) 23:36:28.972352 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: 17862+ PTR? 3.0.168.192.in-addr.arpa. (42) 23:36:28.972474 PPPoE [ses 0x1cb0] IP 118.250.6.85.64215 > dns2.cs.hn.cn.domain: 17862+ PTR? 3.0.168.192.in-addr.arpa. (42) 23:36:28.982287 PPPoE [ses 0x1cb0] IP 121.12.131.163.13109 > 118.250.6.85.63283: UDP, length 27 23:36:28.984162 IP 121.12.131.163.13109 > 192.168.0.65.13965: UDP, length 27 23:36:28.985021 IP 192.168.0.65.13965 > 121.12.131.163.13109: UDP, length 103 23:36:28.985027 PPPoE [ses 0x1cb0] IP 118.250.6.85.63283 > 121.12.131.163.13109: UDP, length 103 23:36:28.991919 PPPoE [ses 0x1cb0] IP dns2.cs.hn.cn.domain > 118.250.6.85.64215: 17862 NXDomain 0/0/0 (42) 23:36:28.993142 IP dns2.cs.hn.cn.domain > 192.168.0.3.32804: 17862 NXDomain 0/0/0 (42) 23:36:28.993574 IP 192.168.0.3.ssh > 192.168.0.1.2101: P 72:140(68) ack 1 win 2100 20 packets captured 206 packets received by filter 129 packets dropped by kernel
Shell
精简显示
# tcpdump -c 10 -q //精简模式显示 10个包 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 23:43:05.792280 IP 192.168.0.3.ssh > 192.168.0.1.2101: tcp 36 23:43:05.842115 IP 192.168.0.1.2101 > 192.168.0.3.ssh: tcp 0 23:43:05.845074 IP 115.238.1.45.3724 > 192.168.0.65.2057: tcp 0 23:43:05.907155 IP 192.168.0.3.ssh > 192.168.0.1.2101: tcp 36 23:43:05.793880 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: UDP, length 42 23:43:05.794076 PPPoE [ses 0x1cb0] IP 118.250.6.85.64219 > dns2.cs.hn.cn.domain: UDP, length 42 23:43:05.811127 PPPoE [ses 0x1cb0] IP dns2.cs.hn.cn.domain > 118.250.6.85.64219: UDP, length 42 23:43:05.814764 IP dns2.cs.hn.cn.domain > 192.168.0.3.32804: UDP, length 42 23:43:05.816404 IP 192.168.0.3.32804 > dns2.cs.hn.cn.domain: UDP, length 42 23:43:05.816545 PPPoE [ses 0x1cb0] IP 118.250.6.85.64219 > dns2.cs.hn.cn.domain: UDP, length 42 10 packets captured 39 packets received by filter 0 packets dropped by kernel
Shell
转换克阅读格式
# tcpdump -d
(000) ret #96
Shell
转换成十进制格式
# tcpdump -ddd
1
6 0 0 96
ytalk
命令Linux ytalk命令用于与其他用户交谈。
通过ytalk指令,你可以和其他用户线上交谈,如果想和其他主机的用户交谈,在用户名称后加上其主机名称或IP地址即可。
语法
ytalk [-isxY][-h<主机名称IP地址>][用户名称...]
Shell
参数说明:
发送消息
# who //显示当前用户
root :0 Apr 9 20:17
root pts/1 Apr 9 20:17
w3c pts/6 May 27 16:47 (192.168.0.1)
root pts/2 May 27 17:37 (192.168.0.1)
# ytalk w3c //发送消息
hey
cu
命令Linux cu命令用于连接另一个系统主机。
cu(call up)指令可连接另一台主机,并采用类似拨号终端机的接口工作,也可执行简易的文件传输作业。
语法
cu [dehnotv][-a<通信端口>][-c<电话号码>][-E<脱离字符>][-I<设置文件>][-l<外围设备代号>][-s<连线速率>][-x<排错模式>][-z<系统主机>][--help][-nostop][--parity=none][<系统主机>/<电话号码>]
Shell
参数说明:
与远程主机连接
# cu -c 0102377765
smbd
命令Linux smbd命令用于Samba服务器程序。
smbd为Samba服务器程序,可分享文件与打印机等网络资源供Windows相关的用户端程序存取。
语法
smbd [-aDhoP][-d<排错层级>][-i<范围>][-l<记录文件>][-O<连接槽选项>][-p<连接端口编号>][-s<配置文件>]
Shell
参数说明:
启动Samba服务器
# smbd -D
testparm
命令Linux testparm命令用于测试Samba的设置是否正确无误。
执行testparm(test parameter)指令可以简单测试Samba的配置文件,假如测试结果无误,Samba常驻服务就能正确载入该设置值,但并不保证其后的操作如预期般一切正常。
语法
testparm [-s][配置文件][<主机名称><IP地址>]
Shell
参数说明:
查看Ssmba配置
# testparm Load smb config files from /etc/samba/smb.conf Processing section '[homes]' Processing section '[printers]' Processing section '[uptech]' Processing section '[home]' Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions ///按下回车继续 # Global parameters [global] workgroup = MYGROUP server string = Samba Server security = SHARE encrypt passwords = No password server = None log file = /var/log/samba/%m.log max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 printcap name = /etc/printcap dns proxy = No idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 cups options = raw [homes] comment = Home Directories read only = No browseable = No [printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No [uptech] comment = * path = /home/uptech read only = No guest ok = Yes [home] comment = * path = /home read only = No guest ok = Yes
Shell
smbclient
命令Linux smbclient命令可存取SMB/CIFS服务器的用户端程序。
SMB与CIFS为服务器通信协议,常用于Windows95/98/NT等系统。smbclient(samba client)可让Linux系统存取Windows系统所分享的资源。
语法
smbclient [网络资源][密码][-EhLN][-B<IP地址>][-d<排错层级>][-i<范围>][-I<IP地址>][-l<记录文件>][-M<NetBIOS名称>][-n<NetBIOS名称>][-O<连接槽选项>][-p<TCP连接端口>][-R<名称解析顺序>][-s<目录>][-t<服务器字码>][-T<tar选项>][-U<用户名称>][-W<工作群组>]
Shell
参数说明:
shapecfg
命令Linux shapecfg命令用于管制网络设备的流量。
自Linux-2.15开始,便支持流量管制的功能。
语法
shapecfg attach [流量管制器][网络设备]
Shell
或
shapecfg speed [流量管制器][带宽]
Shell
参数说明:
adduser
命令Linux adduser命令用于新增使用者帐号或更新预设的使用者资料。
adduser 与 useradd 指令为同一指令(经由符号连结 symbolic link)。
使用权限:系统管理员。
adduser是增加使用者。相对的,也有删除使用者的指令,userdel。语法:userdel [login ID]
语法
adduser [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir] | -M] [-p passwd] [-s shell] [-u uid [ -o]] [-n] [-r] loginid
Shell
或
adduser -D [-g default_group] [-b default_home] [-f default_inactive] [-e default_expire_date] [-s default_shell]
Shell
参数说明:
添加一个一般用户
# useradd kk //添加用户kk
Shell
为添加的用户指定相应的用户组
# useradd -g root kk //添加用户kk,并指定用户所在的组为root用户组
Shell
创建一个系统用户
# useradd -r kk //创建一个系统用户kk
Shell
为新添加的用户指定/home目录
# useradd-d /home/myf kk //新添加用户kk,其home目录为/home/myf
//当用户名kk登录主机时,系统进入的默认目录为/home/myf
chfn
命令Linux chfn命令提供使用者更改个人资讯,用于 finger and mail username
使用权限:所有使用者。
语法
shell>> chfn
Shell
改变finger信息
# chfn
Changing finger information for root.
Name [root]: hnlinux
Office []: hn
Office Phone []: 888888
Home Phone []: 9999999
Finger information changed.
Shell
改变账号真实姓名
# chfn -f hnunix
Changing finger information for root.
Finger information changed.
useradd
命令Linux useradd 命令用于建立用户帐号。
useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
语法
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]
Shell
或
useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]
Shell
参数说明:
添加一般用户
# useradd tt
Shell
为添加的用户指定相应的用户组
# useradd -g root tt
Shell
创建一个系统用户
# useradd -r tt
Shell
为新添加的用户指定home目录
# useradd -d /home/myd tt
Shell
建立用户且制定ID
# useradd caojh -u 544
date
命令Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:
时间方面:
日期方面:
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。
使用权限:所有使用者。
当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 – 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
语法
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
Shell
参数说明:
显示当前时间
# date
三 5月 12 14:08:12 CST 2010
# date '+%c'
2010年05月12日 星期三 14时09分02秒
# date '+%D' //显示完整的时间
05/12/10
# date '+%x' //显示数字日期,年份两位数表示
2010年05月12日
# date '+%T' //显示日期,年份用四位数表示
14:09:31
# date '+%X' //显示24小时的格式
14时09分39秒
Shell
按自己的格式输出
# date '+usr_time: $1:%M %P -hey'
usr_time: $1:16 下午 -hey
Shell
显示时间后跳行,再显示目前日期
date '+%T%n%D'
Shell
显示月份与日数
date '+%B %d'
Shell
显示日期与设定时间(12:34:56)
date --date '12:34:56'
exit
命令Linux exit命令用于退出目前的shell。
执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。
语法
exit [状态值]
Shell
退出终端
# exit
finger
命令Linux finger命令可以让使用者查询一些其他使用者的资料。会列出来的资料有:
其中 .plan、.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等档案里的资料。如果没有就没有。finger 指令并不限定于在同一服务器上查询,也可以寻找某一个远端服务器上的使用者。只要给一个像是 E-mail address 一般的地址即可。
使用权限:所有使用者。
语法
finger [options] user[@address]
Shell
参数说明:
列出当前登录用户的相关信息
# finger -l //显示用户信息 Login: root Name: root Directory: /root Shell: /bin/bash On since Fri Apr 9 20:17 (CST) on :0 (messages off) On since Fri Apr 9 20:17 (CST) on pts/1 32 days 22 hours idle On since Fri Apr 9 20:17 (CST) on pts/3 4 hours 5 minutes idle (messages off) On since Wed May 12 18:08 (CST) on pts/4 from 192.168.1.10 On since Wed May 12 18:35 (CST) on pts/5 from 192.168.1.10 7 minutes 54 seconds idle On since Wed May 12 14:37 (CST) on pts/2 from 192.168.1.10 3 hours 14 minutes idle On since Wed May 12 14:53 (CST) on pts/7 34 minutes 25 seconds idle (messages off) On since Wed May 12 16:53 (CST) on pts/8 from 192.168.1.10 30 minutes 18 seconds idle Mail last read Mon Mar 31 04:02 2008 (CST) No Plan.
Shell
显示指定用户信息
# finger -m hnlinux
Shell
显示远程用户信息
# finger -m root@192.168.1.13
Shell
下列指令可以查询本机管理员的资料:
finger root
Shell
其结果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.
fwhios
命令Linux fwhios命令用于查找并显示用户信息。
本指令的功能有点类似finger指令,它会去查找并显示指定帐号的用户相关信息。不同之处在于fwhois指令是到Network Solutions的WHOIS数据库去查找,该帐号名称必须有在上面注册才能寻获,且名称没有大小写的差别。
语法
fwhios [帐号名称]
sleep
命令Linux sleep命令可以用来将目前动作延迟一段时间。
使用权限:所有使用者。
语法
sleep [--help] [--version] number[smhd]
Shell
参数说明:
休眠5分钟
# sleep 5m
Shell
显示目前时间后延迟 1 分钟,之后再次显示时间
date;sleep 1m;date
suspend
命令Linux suspend命令用于暂停执行shell。
suspend为shell内建指令,可暂停目前正在执行的shell。若要恢复,则必须使用SIGCONT信息。
语法
suspend [-f]
Shell
参数说明:
暂停shell
# suspend
-bash: suspend: 无法挂起一个登录 shell
# suspend -f
groupdel
命令Linux groupdel命令用于删除群组。
需要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
语法
groupdel [群组名称]
Shell
删除一个群组
# groupdel hnuser
groupmod
命令Linux groupmod命令用于更改群组识别码或名称。
需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
语法
groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
Shell
参数:
修改组名
[root@runoob.com ~]# groupadd linuxso
[root@runoob.com ~]# tail -1 /etc/group
linuxso:x:500:
[root@runoob.com ~]# tail -1 /etc/group
linuxso:x:500:
[root@runoob.com ~]# groupmod -n linux linuxso
[root@runoob.com ~]# tail -1 /etc/group
linux:x:500:
halt
命令若系统的 runlevel 为 0 或 6 ,则Linux halt命令关闭系统,否则以 shutdown 指令(加上 -h 参数)来取代。
使用权限:系统管理者。
语法
halt [-n] [-w] [-d] [-f] [-i] [-p]
Shell
参数说明:
关闭系统
# halt
Shell
关闭系统并关闭电源
# halt -p
Shell
关闭系统,但不留下纪录
# halt -d
kill
命令Linux kill命令用于删除执行中的程序或工作。
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。
语法
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
Shell
参数说明:
杀死进程
# kill 12345
Shell
强制杀死进程
# kill -KILL 123456
Shell
发送SIGHUP信号,可以使用一下信号
# kill -HUP pid
Shell
彻底杀死进程
# kill -9 123456
Shell
显示信号
# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Shell
杀死指定用户所有进程
#kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程
#kill -u hnlinux //方法二
last
命令Linux last 命令用于显示用户最近登录信息。
使用权限:所有使用者。
语法
shell>> last [options]
Shell
参数说明:
shell>> last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in
wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp
shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
wtmp begins Tue Aug 1 09:01:10 2000
Shell
一般显示方法
# last
Shell
简略显示,并指定显示的个数
# last -n 5 -R
root pts/4 Thu May 13 17:25 still logged in
root pts/2 Thu May 13 17:23 - 17:25 (00:02)
root pts/1 Thu May 13 16:46 still logged in
root pts/7 Thu May 13 15:36 still logged in
root pts/9 Thu May 13 15:35 still logged in
wtmp begins Thu May 13 18:55:40 2014
Shell
显示最后一列显示主机IP地址
# last -n 5 -a -i
root pts/4 Thu May 13 17:25 still logged in 192.168.1.10
root pts/2 Thu May 13 17:23 - 17:25 (00:02) 192.168.1.10
root pts/1 Thu May 13 16:46 still logged in 192.168.1.10
root pts/7 Thu May 13 15:36 still logged in 192.168.1.10
root pts/9 Thu May 13 15:35 still logged in 192.168.1.10
wtmp begins Thu May 13 18:55:40 2014
lastb
命令Linux lastb命令用于列出登入系统失败的用户相关信息。
单独执行lastb指令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容
记录的登入失败的用户名单,全部显示出来。
语法
lastb [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...]
Shell
参数说明:
显示登录失败的用户
# lastb
root tty7 :1 Thu May 13 11:26 - 11:26 (00:00)
btmp begins Thu May 13 11:26:39 2014
login
命令Linux login命令用于登入系统。
login指令让用户登入系统,您亦可通过它的功能随时更换登入身份。在Slackware发行版中 ,您可在指令后面附加欲登入的用户名称,它会直接询问密码,等待用户输入。当/etc目录里含名称为nologin的文件时,系统只root帐号登入系统,其他用户一律不准登入。
语法
login
Shell
使用新的身份登录系统
# login
logname
命令Linux logname命令用于显示用户名称。
执行logname指令,它会显示目前用户的名称。
语法
logname [--help][--version]
Shell
参数:
显示登录账号的信息:
# logname
root
logout
命令Linux logout命令用于退出系统。
logout指令让用户退出系统,其功能和login指令相互对应。
语法
logout
Shell
退出系统:
[root@runoob.com ~]# logout
ps
命令Linux ps命令用于显示当前进程 (process) 的状态。
语法
ps [options] [--help]
Shell
参数:
# ps -A 显示进程信息 PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 watchdog/0 6 ? 00:00:00 events/0 7 ? 00:00:00 cpuset 8 ? 00:00:00 khelper 9 ? 00:00:00 netns 10 ? 00:00:00 async/mgr 11 ? 00:00:00 pm 12 ? 00:00:00 sync_supers 13 ? 00:00:00 bdi-default 14 ? 00:00:00 kintegrityd/0 15 ? 00:00:02 kblockd/0 16 ? 00:00:00 kacpid 17 ? 00:00:00 kacpi_notify 18 ? 00:00:00 kacpi_hotplug 19 ? 00:00:27 ata/0 ……省略部分结果 30749 pts/0 00:00:15 gedit 30886 ? 00:01:10 qtcreator.bin 30894 ? 00:00:00 qtcreator.bin 31160 ? 00:00:00 dhclient 31211 ? 00:00:00 aptd 31302 ? 00:00:00 sshd 31374 pts/2 00:00:00 bash 31396 pts/2 00:00:00 ps
Shell
显示指定用户信息
# ps -u root //显示root进程用户信息 PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 watchdog/0 6 ? 00:00:00 events/0 7 ? 00:00:00 cpuset 8 ? 00:00:00 khelper 9 ? 00:00:00 netns 10 ? 00:00:00 async/mgr 11 ? 00:00:00 pm 12 ? 00:00:00 sync_supers 13 ? 00:00:00 bdi-default 14 ? 00:00:00 kintegrityd/0 15 ? 00:00:02 kblockd/0 16 ? 00:00:00 kacpid ……省略部分结果 30487 ? 00:00:06 gnome-terminal 30488 ? 00:00:00 gnome-pty-helpe 30489 pts/0 00:00:00 bash 30670 ? 00:00:00 debconf-communi 30749 pts/0 00:00:15 gedit 30886 ? 00:01:10 qtcreator.bin 30894 ? 00:00:00 qtcreator.bin 31160 ? 00:00:00 dhclient 31211 ? 00:00:00 aptd 31302 ? 00:00:00 sshd 31374 pts/2 00:00:00 bash 31397 pts/2 00:00:00 ps
Shell
显示所有进程信息,连同命令行
# ps -ef //显示所有命令,连带命令行
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:22 ? 00:00:02 /sbin/init
root 2 0 0 10:22 ? 00:00:00 [kthreadd]
root 3 2 0 10:22 ? 00:00:00 [migration/0]
root 4 2 0 10:22 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 10:22 ? 00:00:00 [watchdog/0]
root 6 2 0 10:22 ? /usr/lib/NetworkManager
……省略部分结果
root 31302 2095 0 17:42 ? 00:00:00 sshd: root@pts/2
root 31374 31302 0 17:42 pts/2 00:00:00 -bash
root 31400 1 0 17:46 ? 00:00:00 /usr/bin/python /usr/sbin/aptd
root 31407 31374 0 17:48 pts/2 00:00:00 ps -ef
nice
命令Linux nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
使用权限:所有使用者。
语法
nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]
Shell
参数说明:
设置程序运行时的优先级
# vi & //后台运行 [1] 15297 # nice vi & //设置默认优先级 [2] 15298 [1]+ Stopped vi # nice -n 19 vi & //设置优先级为19 [3] 15299 [2]+ Stopped nice vi # nice -n -20 vi & //设置优先级为 -20 [4] 15300 [3]+ Stopped nice -n 19 vi # ps -l //显示进程 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 15278 15212 0 80 0 - 1208 wait pts/2 00:00:00 bash 0 T 0 15297 15278 0 80 0 - 2687 signal pts/2 00:00:00 vi 0 T 0 15298 15278 0 90 10 - 2687 signal pts/2 00:00:00 vi 0 T 0 15299 15278 1 99 19 - 2687 signal pts/2 00:00:00 vi 4 T 0 15300 15278 3 60 -20 - 2687 signal pts/2 00:00:00 vi 4 R 0 15301 15278 0 80 0 - 625 - pts/2 00:00:00 ps [4]+ Stopped nice -n -20 vi
Shell
将 ls 的优先序加 1 并执行
nice -n 1 ls
Shell
将 ls 的优先序加 10 并执行
nice ls
Shell
**注意:**优先序 (priority) 为操作系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
procinfo
命令Linux procinfo命令用于显示系统状态。
procinfo(process information)指令从/proc目录里读取相关数据,将数据妥善整理过后输出到标准输出设备。
语法
procinfo [-abdDfhimsSv][-F <输出文件>][-n <间隔秒数>]
Shell
参数说明:
显示系统状态
# procinfo
top
命令Linux top命令用于实时显示 process 的动态。
使用权限:所有使用者。
语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
Shell
参数说明:
显示进程信息
# top
Shell
显示完整命令
# top -c
Shell
以批处理模式显示程序信息
# top -b
Shell
以累积模式显示程序信息
# top -S
Shell
设置信息更新次数
top -n 2
//表示更新两次后终止更新显示
Shell
设置信息更新时间
# top -d 3
//表示更新周期为3秒
Shell
显示指定的进程信息
# top -p 139
//显示进程号为139的进程信息,CPU、内存占用率等
Shell
显示更新十次后退出
top -n 10
Shell
使用者将不能利用交谈式指令来对行程下命令
top -s
pstree
命令Linux pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。
使用权限:所有使用者。
语法
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
Shell
或
pstree -V
Shell
参数说明:
显示进程的关系
pstree init-+-amd |-apmd |-atd |-httpd---10*[httpd] %pstree -p init(1)-+-amd(447) |-apmd(105) |-atd(339) %pstree -c init-+-amd |-apmd |-atd |-httpd-+-httpd | |-httpd | |-httpd | |-httpd ....
Shell
特别表明在运行的进程
# pstree -apnh //显示进程间的关系
Shell
同时显示用户名称
# pstree -u //显示用户名称
reboot
命令Linux reboot命令用于用来重新启动计算机。
若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown 指令(加上 -r 参数)来取代
语法
reboot [-n] [-w] [-d] [-f] [-i]
Shell
参数:
重新启动
# reboot
rlogin
命令Linux rlogin命令用于远端登入。
执行rlogin指令开启终端机阶段操作,并登入远端主机。
语法
rlogin [-8EL][-e <脱离字符>][-l <用户名称>][主机名称或IP地址]
Shell
必要参数:
选择参数:
-e<字符> 设置退出字符
-l<用户> 指定登陆的用户
-t<终端类型> 设置终端类型
实例
显示rlogin服务是否开启
# chkconfig --list //检测rlogin服务是否开启
Shell
开启rlogin服务
# chkconfig rlogin on //开启rlogin服务
Shell
登陆远程主机
# rlogin 192.168.1.88
Password:
Password:
Login incorrect
Login:root
Passwd:
Login incorrect
Login:kk
Passwd:
Shell
指定用户名登陆远程主机
# rlogin 192.168.1.88 -l hnlinux
Passord:
Last login:Mon May 28 15:30:25 from 192.168.1.88
#
rsh
命令Linux rsh命令用于远端登入的Shell。
rsh(remote shell)提供用户环境,也就是Shell,以便指令能够在指定的远端主机上执行。
语法
rsh [-dn][-l <用户名称>][主机名称或IP地址][执行指令]
Shell
参数说明:
开启rsh服务
# chkconfig --list //检测rlogin服务是否开启
# chkconfig rsh on //开启rsh服务
# chkconfig -list //检测开启的服务
Shell
远程命令执行
# rsh -l hnlinux 192.168.1.88 /bin/ls //远程执行ls命令
sliplogin
命令Linux sliplogin命令用于将SLIP接口加入标准输入。
sliplogin可将SLIP接口加入标准输入,把一般终端机的连线变成SLIP连线。通常可用来建立SLIP服务器,让远端电脑以SLIP连线到服务器。sliplogin活去检查/etc/slip/slip.hosts文件中是否有相同的用户名称。通过检查后,sliplogin会调用执行shell script来设置IP地址,子网掩码等网络界面环境。此shell script通常是/etc/slip/slip.login。
语法
sliplogin [用户名称]
Shell
改变用户的连接方式
# sliplogin kk // 改变用户的连接方式
screen
命令Linux screen命令用于多重视窗管理程序。
screen为多重视窗管理程序。此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式的终端机时,才有可能用到screen程序。
语法
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]
Shell
参数说明:
创建 screen 终端
# screen //创建 screen 终端
Shell
创建 screen 终端 并执行任务
# screen vi ~/main.c //创建 screen 终端 ,并执行 vi命令
Shell
离开 screen 终端
# screen vi ~/main.c //创建 screen 终端 ,并执行 vi命令
#include
main ()
{
}
"~/mail.c" 0,0-1
在 screen 终端 下 按下 Ctrl+a d键
Shell
重新连接离开的 screen 终端
# screen -ls //显示已创建的screen终端
There are screens on:
2433.pts-3.linux (2013年10月20日 16时48分59秒) (Detached)
2428.pts-3.linux (2013年10月20日 16时48分05秒) (Detached)
2284.pts-3.linux (2013年10月20日 16时14分55秒) (Detached)
2276.pts-3.linux (2013年10月20日 16时13分18秒) (Detached)
4 Sockets in /var/run/screen/S-root.
# screen -r 2276 //连接 screen_id 为 2276 的 screen终端
shutdown
命令Linux shutdown命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
使用权限:系统管理者。
语法
shutdown [-t seconds] [-rkhncfF] time [message]
Shell
参数说明:
立即关机
# shutdown -h now
Shell
指定 10 分钟后关机
# shutdown -h 10
Shell
重新启动计算机
# shutdown -r now
rwho
命令Linux rwho命令用于查看系统用户。
rwho指令的效果类似who指令,但它会显示局域网里所有主机的用户。主机必须提供rwhod常驻服务的功能,方可使用rwho指令。
语法
rwho [-a]
Shell
参数说明:
显示本地局域网内的所有用户
# rwho
root snail-hnlinux:pts/2 May 14 17:42
sudo
命令Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
使用权限:在 /etc/sudoers 中有出现的使用者。
语法
sudo -V
Shell
sudo -h
Shell
sudo -l
Shell
sudo -v
Shell
sudo -k
Shell
sudo -s
Shell
sudo -H
Shell
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s
Shell
sudo command
Shell
参数说明:
sudo命令使用
$ sudo ls
[sudo] password for hnlinux:
hnlinux is not in the sudoers file. This incident will be reported.
Shell
指定用户执行命令
# sudo -u userb ls -l
Shell
显示sudo设置
$ sudo -L //显示sudo设置 Available options in a sudoers ``Defaults'' line: syslog: Syslog facility if syslog is being used for logging syslog_goodpri: Syslog priority to use when user authenticates successfully syslog_badpri: Syslog priority to use when user authenticates unsuccessfully long_otp_prompt: Put OTP prompt on its own line ignore_dot: Ignore '.' in $PATH mail_always: Always send mail when sudo is run mail_badpass: Send mail if user authentication fails mail_no_user: Send mail if the user is not in sudoers mail_no_host: Send mail if the user is not in sudoers for this host mail_no_perms: Send mail if the user is not allowed to run a command tty_tickets: Use a separate timestamp for each user/tty combo lecture: Lecture user the first time they run sudo lecture_file: File containing the sudo lecture authenticate: Require users to authenticate by default root_sudo: Root may run sudo log_host: Log the hostname in the (non-syslog) log file log_year: Log the year in the (non-syslog) log file shell_noargs: If sudo is invoked with no arguments, start a shell set_home: Set $HOME to the target user when starting a shell with -s always_set_home: Always set $HOME to the target user's home directory path_info: Allow some information gathering to give useful error messages fqdn: Require fully-qualified hostnames in the sudoers file insults: Insult the user when they enter an incorrect password requiretty: Only allow the user to run sudo if they have a tty env_editor: Visudo will honor the EDITOR environment variable rootpw: Prompt for root's password, not the users's runaspw: Prompt for the runas_default user's password, not the users's targetpw: Prompt for the target user's password, not the users's use_loginclass: Apply defaults in the target user's login class if there is one set_logname: Set the LOGNAME and USER environment variables stay_setuid: Only set the effective uid to the target user, not the real uid preserve_groups: Don't initialize the group vector to that of the target user loglinelen: Length at which to wrap log file lines (0 for no wrap) timestamp_timeout: Authentication timestamp timeout passwd_timeout: Password prompt timeout passwd_tries: Number of tries to enter a password umask: Umask to use or 0777 to use user's logfile: Path to log file mailerpath: Path to mail program mailerflags: Flags for mail program mailto: Address to send mail to mailfrom: Address to send mail from mailsub: Subject line for mail messages badpass_message: Incorrect password message timestampdir: Path to authentication timestamp dir timestampowner: Owner of the authentication timestamp dir exempt_group: Users in this group are exempt from password and PATH requirements passprompt: Default password prompt passprompt_override: If set, passprompt will override system prompt in all cases. runas_default: Default user to run commands as secure_path: Value to override user's $PATH with editor: Path to the editor for use by visudo listpw: When to require a password for 'list' pseudocommand verifypw: When to require a password for 'verify' pseudocommand noexec: Preload the dummy exec functions contained in 'noexec_file' noexec_file: File containing dummy exec functions ignore_local_sudoers: If LDAP directory is up, do we ignore local sudoers file closefrom: File descriptors >= %d will be closed before executing a command closefrom_override: If set, users may override the value of `closefrom' with the -C option setenv: Allow users to set arbitrary environment variables env_reset: Reset the environment to a default set of variables env_check: Environment variables to check for sanity env_delete: Environment variables to remove env_keep: Environment variables to preserve role: SELinux role to use in the new security context type: SELinux type to use in the new security context askpass: Path to the askpass helper program env_file: Path to the sudo-specific environment file sudoers_locale: Locale to use while parsing sudoers visiblepw: Allow sudo to prompt for a password even if it would be visisble pwfeedback: Provide visual feedback at the password prompt when there is user input fast_glob: Use faster globbing that is less accurate but does not access the filesystem umask_override: The umask specified in sudoers will override the user's, even if it is more permissive
Shell
以root权限执行上一条命令
$ sudo !!
Shell
以特定用户身份进行编辑文本
$ sudo -u uggc vi ~www/index.html
//以 uggc 用户身份编辑 home 目录下www目录中的 index.html 文件
Shell
列出目前的权限
sudo -l
Shell
列出 sudo 的版本资讯
sudo -V
gitps
命令Linux gitps命令用于报告程序状况。
gitps(gnu interactive tools process status)是用来报告并管理程序执行的指令,基本上它就是通过ps指令来报告,管理程序,也能通过gitps指令随时中断,删除不必要的程序。因为gitps指令会去执行ps指令,所以其参数和ps指令相当类似。
语法
gitps [acefgjlnrsSTuvwxX][p <程序识别码>][t <终端机编号>][U <帐号名称>]
Shell
参数说明:
显示指定用户信息
# gitps hnlinux
swatch
命令Linux swatch命令用于系统监控程序。
swatch可用来监控系统记录文件,并在发现特定的事件时,执行指定的动作。swatch所监控的事件以及对应事件的动作都存放在swatch的配置文件中。预设的配置文件为拥护根目录下的.swatchrc。然而在Red Hat Linux的预设用户根目录下并没有.swatchrc配置文件,您可将/usr/doc/swatch-2.2/config_files/swatchrc.personal文件复制到用户根目录下的.swatchrc,然后修改.swatchrc所要监控的事件及执行的动作。
语法
swatch [-A <分隔字符>][-c <设置文件>][-f <记录文件>][-I <分隔字符>][-P <分隔字符>][-r <时间>][-t <记录文件>]
Shell
参数说明:
开启系统监视
# swatch
tload
命令Linux tload命令用于显示系统负载状况。
tload指令使用ASCII字符简单地以文字模式显示系统负载状态。假设不给予终端机编号,则会在执行tload指令的终端机显示负载情形。
语法
tload [-V][-d <间隔秒数>][-s <刻度大小>][终端机编号]
Shell
参数说明:
显示系统负载
# tload
logrotate
命令Linux logrotate命令用于管理记录文件。
使用logrotate指令,可让你轻松管理系统所产生的记录文件。它提供自动替换,压缩,删除和邮寄记录文件,每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,预设的配置文件存放在/etc目录下,文件名称为logrotate.conf。
语法
logrotate [-?dfv][-s <状态文件>][--usage][配置文件]
Shell
参数说明:
指定记录文件
# logrotate /root/log.config
uname
命令Linux uname命令用于显示系统信息。
uname可显示电脑以及操作系统的相关信息。
语法
uname [-amnrsv][--help][--version]
Shell
参数说明:
显示系统信息:
# uname -a
Linux iZbp19byk2t6khuqj437q6Z 4.11.0-14-generic #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Shell
显示计算机类型:
# uname -m
x86_64
Shell
显示计算机名:
# uname -n
runoob-linux
Shell
显示操作系统发行编号:
# uname -r
4.11.0-14-generic
Shell
显示操作系统名称:
# uname -s
Linux
Shell
显示系统版本与时间:
# uname -v
#20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017
chsh
命令Linux chsh命令用于更改使用者 shell 设定。
使用权限:所有使用者。
语法
shell>> chsh
Shell
shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前使用的 shell]
[del]
shell>> chsh -l ### 展示 /etc/shells 档案内容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
Shell
改变当前的shell。当前的shell 设置为//bin/bash,通过chsh命令,改变shell的设置/bin/csh。
# chsh
Changing shell for root.
New shell [/bin/bash]: /bin/csh //输入新的shell地址
Shell changed.
Shell
通过 -s 参数改变当前的shell设置
# chsh -s /bin/csh //改变当前设置为 /bin/csh
Changing shell for root.
Shell not changed.
userconf
命令Linux userconf命令用于用户帐号设置程序。
userconf实际上为linuxconf的符号连接,提供图形界面的操作方式,供管理员建立与管理各类帐号。若不加任何参数,即进入图形界面。
语法
userconf [--addgroup <群组>][--adduser <用户ID><群组><用户名称><shell>][--delgroup <群组>][--deluser <用户ID>][--help]
Shell
参数说明:
新增用户
# userconf --adduser 666 tt lord /bin/bash //新增用户账号
She
userdel
命令Linux userdel命令用于删除用户帐号。
userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
语法
userdel [-r][用户帐号]
Shell
参数说明:
删除用户账号
# userdel hnlinux
usermod
命令Linux usermod命令用于修改用户帐号。
usermod可用来修改用户帐号的各项设定。
语法
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
Shell
参数说明:
更改登录目录
# usermod -d /home/hnlinux root
Shell
改变用户的uid
# usermod -u 777 root
vlock
命令Linux vlock命令用于锁住虚拟终端。
执行vlock(virtual console lock)指令可锁住虚拟终端,避免他人使用。
语法
vlock [-achv]
Shell
参数说明:
锁定虚拟终端
# vlock
who
命令Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
使用权限:所有使用者都可使用。
语法
who - [husfV] [user]
Shell
参数说明:
显示当前登录系统的用户
# who //显示当前登录系统的用户
root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
Shell
显示标题栏
# who -H
NAME LINE TIME COMMENT
root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
Shell
显示用户登录来源
# who -l -H
NAME LINE TIME IDLE PID COMMENT
LOGIN tty4 2014-05-13 12:11 852 id=4
LOGIN tty5 2014-05-13 12:11 855 id=5
LOGIN tty2 2014-05-13 12:11 862 id=2
LOGIN tty3 2014-05-13 12:11 864 id=3
LOGIN tty6 2014-05-13 12:11 867 id=6
LOGIN tty1 2014-05-13 12:11 1021 id=1
Shell
显示终端属性
# who -T -H
NAME LINE TIME COMMENT
root + tty7 2014-05-13 12:12 (:0)
root + pts/0 2014-05-14 17:09 (:0.0)
root - pts/1 2014-05-14 18:51 (192.168.1.17)
root - pts/2 2014-05-14 19:48 (192.168.1.17)
Shell
只显示当前用户
# who -m -H
NAME LINE TIME COMMENT
root pts/1 2014-05-14 18:51 (192.168.1.17)
Shell
精简模式显示
# who -q
root root root root
# users=4
whoami
命令Linux whoami命令用于显示自身用户名称。
显示自身的用户名称,本指令相当于执行”id -un”指令。
语法
whoami [--help][--version]
Shell
参数说明:
显示用户名
# whoami
root
whois
命令Linux whois命令用于查找并显示用户信息。
whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别。
语法
whois [帐号名称]
Shell
显示指定用户信息
# whois root
//查找root用户信息
Shell
查询域名描述信息
# whois .Lx138.COm
Whois Server Version 2.0
Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
...省略部分内容
Shell
查询域名信息
# whois Lx138.COm
The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.
Domain Name ..................... Lx138.COm
Name Server ..................... dns15.hichina.com
dns16.hichina.com
Registrant ID ................... hc937242545-cn
...省略部分内容
Shell
查询域名信息省略法律声明
# whois -H Lx138.COm
...省略内容
Shell
指定端口查询
# whois -p 80 Lx138.COm
...省略内容
newgrp
命令Linux newgrp 命令用于登入另一个群组。
newgrp 指令类似 login 指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用 newgrp 指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则 newgrp 指令会登入该用户名称的预设群组。
语法
newgrp [群组名称]
Shell
改变群组
# newgrp root
renice
命令Linux renice命令用于重新指定一个或多个行程(Process)的优先序(一个或多个将根据参数而定)。
**注意:**每一个行程(Process)都有一个唯一的(unique)id。
使用权限:所有使用者。
语法
renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
Shell
参数说明:
将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1
renice +1 987 -u daemon root -p 32
su
命令Linux su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
使用权限:所有使用者。
语法
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
Shell
参数说明:
变更帐号为 root 并在执行 ls 指令后退出变回原使用者
su -c ls root
Shell
变更帐号为 root 并传入 -f 参数给新执行的 shell
su root -f
Shell
变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)
su - clsung
Shell
切换用户
hnlinux@runoob.com:~$ whoami //显示当前用户
hnlinux
hnlinux@runoob.com:~$ pwd //显示当前目录
/home/hnlinux
hnlinux@runoob.com:~$ su root //切换到root用户
密码:
root@runoob.com:/home/hnlinux# whoami
root
root@runoob.com:/home/hnlinux# pwd
/home/hnlinux
Shell
切换用户,改变环境变量
hnlinux@runoob.com:~$ whoami //显示当前用户
hnlinux
hnlinux@runoob.com:~$ pwd //显示当前目录
/home/hnlinux
hnlinux@runoob.com:~$ su - root //切换到root用户
密码:
root@runoob.com:/home/hnlinux# whoami
root
root@runoob.com:/home/hnlinux# pwd //显示当前目录
/root
skill
命令Linux skill命令送个讯号给正在执行的程序,预设的讯息为 TERM (中断),较常使用的讯息为 HUP、INT、KILL、STOP、CONT 和 0。
讯息有三种写法:分别为 -9、-SIGKILL、-KILL,可以使用 -l 或 -L 已列出可使用的讯息。
使用权限:所有使用者。
其他相关的命令:kill
语法
skill [signal to send] [options] 选择程序的规则
Shell
一般参数:
参数:选择程序的规则可以是:终端机代号、使用者名称、程序代号、命令名称。
以下列出已知的讯号名称、讯号代号、功能。
名称(代号) | 功能/描述 |
---|---|
ALRM 14 | 离开 |
HUP 1 | 离开 |
INT 2 | 离开 |
KILL 9 | 离开/强迫关闭 |
PIPE 13 | 离开 |
POLL | 离开 |
PROF | 离开 |
TERM 15 | 离开 |
USR1 | 离开 |
USR2 | 离开 |
VTALRM | 离开 |
STKFLT | 离开/只适用于i386、m68k、arm 和 ppc 硬件 |
UNUSED | 离开/只适用于i386、m68k、arm 和 ppc 硬件 |
TSTP | 停止/产生与内容相关的行为 |
TTIN | 停止/产生与内容相关的行为 |
TTOU | 停止/产生与内容相关的行为 |
STOP | 停止/强迫关闭 |
CONT | 重新启动/如果在停止状态则重新启动,否则忽略 |
PWR | 忽略/在某些系统中会离开 |
WINCH | 忽略 |
CHLD | 忽略 |
ABRT 6 | 核心 |
FPE 8 | 核心 |
ILL 4 | 核心 |
QUIT 3 | 核心 |
SEGV 11 | 核心 |
TRAP 5 | 核心 |
SYS | 核心/或许尚未实作 |
EMT | 核心/或许尚未实作 |
BUS | 核心/核心失败 |
XCPU | 核心/核心失败 |
XFSZ | 核心/核心失败 |
停止所有在 PTY 装置上的程序
skill -KILL -v pts/*
Shell
停止三个使用者 user1、user2、user3
skill -STOP user1 user2 user3
w
命令Linux w命令用于显示目前登入系统的用户信息。
执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。
单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
语法
w [-fhlsuV][用户名称]
Shell
参数说明:
显示当前用户
w //显示当前用户,不显示登录位置
19:50:14 up 9:27, 4 users, load average: 0.31, 0.26, 0.18
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty7 :0 Thu12 31:39m 10:10 0.60s gnome-session
root pts/0 :0.0 17:09 2:18m 15.26s 0.15s bash
root pts/1 192.168.1.17 18:51 1.00s 1.24s 0.14s -bash
root pts/2 192.168.1.17 19:48 60.00s 0.05s 0.05s -bash
Shell
不显示登录位置
w -f
19:53:59 up 9:31, 4 users, load average: 0.05, 0.16, 0.15
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root tty7 Thu12 31:43m 10:10 0.60s gnome-session
root pts/0 17:09 2:21m 15.26s 0.15s bash
root pts/1 18:51 0.00s 1.04s 0.14s -bash
root pts/2 19:48 4:45 0.05s 0.05s -bash
Shell
以精简模式显示
w -s
19:54:37 up 9:31, 4 users, load average: 0.24, 0.19, 0.16
USER TTY FROM IDLE WHAT
root tty7 :0 31:43m gnome-session
root pts/0 :0.0 2:22m bash
root pts/1 192.168.1.17 0.00s -bash
root pts/2 192.168.1.17 5:23 -bash
Shell
不显示标题
w -h
root tty7 :0 Thu12 31:44m 10:10 0.60s gnome-session
root pts/0 :0.0 17:09 2:23m 15.26s 0.15s bash
root pts/1 192.168.1.17 18:51 0.00s 1.05s 0.14s -bash
root pts/2 192.168.1.17 19:48 5:54 0.05s 0.05s -bash
id
命令Linux id命令用于显示用户的ID,以及所属群组的ID。
id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
语法
id [-gGnru][--help][--version][用户名称]
Shell
参数说明:
显示当前用户信息
# id //显示当前用户ID
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t
Shell
显示用户群组的ID
# id -g
0
Shell
显示所有群组的ID
# id -g
0 1 2 3 4 5 6 10
Shell
显示指定用户信息
# id hnlinux
groupadd
命令groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
相关文件:
语法
groupadd 命令 语法格式如下:
groupadd [-g gid [-o]] [-r] [-f] group
Shell
参数说明:
创建一个新的组,并添加组 ID。
#groupadd -g 344 runoob
Shell
此时在 /etc/group 文件中产生一个组 ID(GID)是 344 的项目。
free
命令Linux free命令用于显示内存状态。
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
语法
free [-bkmotV][-s <间隔秒数>]
Shell
参数说明:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
B = bytes
K = kilos
M = megas
G = gigas
T = teras
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
显示内存使用情况
# free //显示内存使用信息
total used free shared buffers cached
Mem: 254772 184568 70204 0 5692 89892
-/+ buffers/cache: 88984 165788
Swap: 524280 65116 459164
Shell
以总和的形式显示内存的使用信息
# free -t //以总和的形式查询内存的使用信息
total used free shared buffers cached
Mem: 254772 184868 69904 0 5936 89908
-/+ buffers/cache: 89024 165748
Swap: 524280 65116 459164
Total: 779052 249984 529068
Shell
周期性的查询内存使用信息
# free -s 10 //每10s 执行一次命令
total used free shared buffers cached
Mem: 254772 187628 67144 0 6140 89964
-/+ buffers/cache: 91524 163248
Swap: 524280 65116 459164
total used free shared buffers cached
Mem: 254772 187748 67024 0 6164 89940
-/+ buffers/cache: 91644 163128
Swap: 524280 65116 459164
reset
命令Linux reset命令其实和 tset 是一同个命令,它的用途是设定终端机的状态。一般而言,这个命令会自动的从环境变数、命令列或是其它的组态档决定目前终端机的型态。如果指定型态是 ‘?’ 的话,这个程序会要求使用者输入终端机的型别。
由于这个程序会将终端机设回原始的状态,除了在 login 时使用外,当系统终端机因为程序不正常执行而进入一些奇怪的状态时,你也可以用它来重设终端机o 例如不小心把二进位档用 cat 指令进到终端机,常会有终端机不再回应键盘输入,或是回应一些奇怪字元的问题。此时就可以用 reset 将终端机回复至原始状态。
语法
tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]
Shell
参数说明:
让使用者输入一个终端机型别并将终端机设到该型别的预设状态
# reset ?
Shell
将 erase 字元设定 control-h
# reset -e ^B
Shell
将设定用的字串显示在屏幕上
# reset -s
Erase is control-B (^B).
Kill is control-U (^U).
Interrupt is control-C (^C).
TERM=xterm;
clear
命令Linux clear命令用于清除屏幕。
语法
clear
Shell
清屏
#clear
alias
命令Linux alias命令用于设置指令的别名。
用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。
语法
alias[别名]=[指令名称]
Shell
参数说明:若不加任何参数,则列出目前所有的别名设置。
给命令设置别名
# alias lx=ls
# lx
anaconda-ks.cfg Desktop install.log install.log.syslog qte
dircolors
命令Linux dircolors命令用于设置 ls 指令在显示目录或文件时所用的色彩。
dircolors可根据[色彩配置文件]来设置LS_COLORS环境变量或是显示设置LS_COLORS环境变量的shell指令。
语法
dircolors [色彩配置文件]
Shell
或
dircolors [-bcp][--help][--version]
Shell
参数说明:
显示默认值
# dircolors -p //显示默认值 # Configuration file for dircolors, a utility to help you set the # LS_COLORS environment variable used by GNU ls with the --color option. # Copyright (C) 1996, 1999-2008 # Free Software Foundation, Inc. # Copying and distribution of this file, with or without modification, # are permitted provided the copyright notice and this notice are preserved. # The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the # slackware version of dircolors) are recognized but ignored. # Below, there should be one TERM entry for each termtype that is colorizable TERM Eterm TERM ansi TERM color-xterm TERM con132x25 TERM con132x30 TERM con132x43 TERM con132x60 TERM con80x25 TERM con80x28 TERM xterm-debian # Below are the color init strings for the basic file types. A color init # string consists of one or more of the following numeric codes: # Attribute codes: # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed # Text color codes: # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white # Background color codes: # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white #NORMAL 00 # no color code at all #FILE 00 # regular file: use no color at all RESET 0 # reset to “normal“ color DIR 01;34 # directory LINK 01;36 # symbolic link. (If you set this to 'target' instead of a # numerical value, the color is as for the file pointed to.) HARDLINK 44;37 # regular file with more than one link FIFO 40;33 # pipe SOCK 01;35 # socket DOOR 01;35 # door BLK 40;33;01 # block device driver CHR 40;33;01 # character device driver ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file SETUID 37;41 # file that is setuid (u+s) SETGID 30;43 # file that is setgid (g+s) CAPABILITY 30;41 # file with capability STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable # This is for files with execute permission: EXEC 01;32 # List any file extensions like '.gz' or '.tar' that you would like ls # to colorize below. Put the extension, a space, and the color init string. # (and any comments you want to add after a '#') # If you use DOS-style suffixes, you may want to uncomment the following: #.cmd 01;32 # executables (bright green) #.exe 01;32 #.com 01;32 #.btm 01;32 #.bat 01;32 # Or if you want to colorize scripts even if they do not have the # executable bit actually set. #.sh 01;32 #.csh 01;32 # archives or compressed (bright red) .tar 01;31 .pcx 01;35 .mov 01;35 .mpg 01;35 .mpeg 01;35 .m2v 01;35 .mkv 01;35 .ogm 01;35 .mp4 01;35 .m4v 01;35 .mp4v 01;35 .vob 01;35 .qt 01;35 .nuv 01;35 .wmv 01;35 .asf 01;35 .rm 01;35 .rmvb 01;35 .flc 01;35 .avi 01;35 .fli 01;35 .flv 01;35 .gl 01;35 .dl 01;35 .xcf 01;35 .xwd 01;35 .yuv 01;35 # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions .axv 01;35 .anx 01;35 .ogv 01;35 .ogx 01;35 # audio formats .aac 00;36 .au 00;36 .flac 00;36 .mid 00;36 .midi 00;36 .mka 00;36 .mp3 00;36 .mpc 00;36 .ogg 00;36 .ra 00;36 .wav 00;36 # http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions .axa 00;36 .oga 00;36 .spx 00;36 .xspf 00;36
Shell
aumix
命令Linux aumix命令用于设置音效装置。
aumix(audio mixer)命令设置各项音效装置的信号强度以及指定播放与录音的装置。
语法
aumix [-123bcilmoprstvwWx][(+/-)强度][PqR][-dfhILqS]
Shell
参数说明:[-123bcilmoprstvwWx]为频道参数,用来指定装置的频道;[PqR]可用来指定播放或录音装置;[-dfhILqS] 则为指令参数。若不加任何参数,aumix会显示简单的图形界面供调整设置频道参数。
指令参数:
设置音效设备
# aumix
bind
命令Linux bind命令用于显示或设置键盘按键与其相关的功能。
您可以利用bind命令了解有哪些按键组合与其功能,也可以自行指定要用哪些按键组合。
语法
bind [-dlv][-f <按键配置文件>][-m <按键配置>][-q <功能>]
Shell
参数说明:
显示按键组合的所有功能
# bind -l //显示按键组合的内容 abort accept-line alias-expand-line arrow-key-prefix backward-byte backward-char backward-delete-char backward-kill-line backward-kill-word backward-word beginning-of-history beginning-of-line ……省略部分内容 vi-goto-mark vi-insert-beg vi-insertion-mode vi-match vi-movement-mode vi-next-word vi-overstrike vi-overstrike-delete vi-prev-word vi-put vi-redo vi-replace vi-rubout vi-search vi-search-again vi-set-mark vi-subst vi-tilde-expand vi-yank-arg vi-yank-to yank yank-last-arg yank-nth-arg yank-pop
Shell
显示当前按键组合的设置
# bind -l abort accept-line alias-expand-line arrow-key-prefix backward-byte backward-char backward-delete-char backward-kill-line backward-kill-word backward-word beginning-of-history beginning-of-line call-last-kbd-macro capitalize-word character-search character-search-backward clear-screen complete complete-command complete-filename complete-hostname complete-into-braces complete-username complete-variable copy-backward-word copy-forward-word copy-region-as-kill dabbrev-expand delete-char delete-char-or-list delete-horizontal-space digit-argument display-shell-version do-lowercase-version downcase-word dump-functions dump-macros dump-variables dynamic-complete-history edit-and-execute-command emacs-editing-mode end-kbd-macro end-of-history end-of-line exchange-point-and-mark forward-backward-delete-char forward-byte forward-char forward-search-history forward-word glob-complete-word glob-expand-word glob-list-expansions history-and-alias-expand-line history-expand-line history-search-backward history-search-forward insert-comment insert-completions insert-last-argument kill-line kill-region kill-whole-line kill-word magic-space menu-complete menu-complete-backward next-history non-incremental-forward-search-history non-incremental-forward-search-history-again non-incremental-reverse-search-history non-incremental-reverse-search-history-again old-menu-complete operate-and-get-next overwrite-mode possible-command-completions possible-completions possible-filename-completions possible-hostname-completions possible-username-completions possible-variable-completions previous-history quoted-insert redraw-current-line re-read-init-file reverse-search-history revert-line self-insert set-mark shell-backward-kill-word shell-backward-word shell-expand-line shell-forward-word shell-kill-word skip-csi-sequence start-kbd-macro tab-insert tilde-expand transpose-chars transpose-words tty-status undo universal-argument unix-filename-rubout unix-line-discard unix-word-rubout upcase-word vi-append-eol vi-append-mode vi-arg-digit vi-back-to-indent vi-bword vi-bWord vi-change-case vi-change-char vi-change-to vi-char-search vi-column vi-complete vi-delete vi-delete-to vi-editing-mode vi-end-word vi-eof-maybe vi-eword vi-eWord vi-fetch-history vi-first-print vi-fword vi-fWord vi-goto-mark vi-insert-beg vi-insertion-mode vi-match vi-movement-mode vi-next-word vi-overstrike vi-overstrike-delete vi-prev-word vi-put vi-redo vi-replace vi-rubout vi-search vi-search-again vi-set-mark vi-subst vi-tilde-expand vi-yank-arg vi-yank-to yank yank-last-arg yank-nth-arg yank-pop root@snail-hnlinux:~# root@snail-hnlinux:~# root@snail-hnlinux:~# root@snail-hnlinux:~# root@snail-hnlinux:~# bind -v set bind-tty-special-chars on set blink-matching-paren on set byte-oriented off set completion-ignore-case off set convert-meta off set disable-completion off set echo-control-characters on set enable-keypad off set enable-meta-key on set expand-tilde off set history-preserve-point off set horizontal-scroll-mode off set input-meta on set mark-directories on set mark-modified-lines off set mark-symlinked-directories off set match-hidden-files on set meta-flag on set output-meta on set page-completions on set prefer-visible-bell on set print-completions-horizontally off set revert-all-at-newline off set show-all-if-ambiguous off set show-all-if-unmodified off set skip-completed-text off set visible-stats off set bell-style audible set comment-begin # set completion-prefix-display-length 0 set completion-query-items 100 set editing-mode emacs set history-size 1000 set keymap emacs
Shell
列出指定功能的按键和按键组合
# bind -q abort
//请用 调用abort “C-g”, “C-xC-g”, “eC-g”.
# bind -q accept-line //列出功能“accept-line”按键以及组合按键
//请用 调用accept-line “C-j”, “C-m”.
chroot
命令Linux chroot命令用于改变根目录。
chroot(change root)命令把根目录换成指定的目的目录。
语法
chroot [--help][--version][目的目录][执行指令...]
Shell
参数说明:
改变根目录
# chroot /mnt/ls //改变根目录
clock
命令Linux clock命令用于调整 RTC 时间。
RTC 是电脑内建的硬件时间,执行这项指令可以显示现在时刻,调整硬件时钟的时间,将系统时间设成与硬件时钟之时间一致,或是把系统时间回存到硬件时钟。
语法
clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日期时间>"][--setepoch --epoch=< >][--show][--systohc][--test][--utc][--version]
Shell
参数说明:
获取当前的时间
# clock //获取当前的时间
Shell
显示UTC时间
# clock -utc //显示UTC时间
crontab
命令Linux crontab是用来定期执行程序的命令。
当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
**注意:**新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
而 linux 任务调度的工作主要分为以下两类:
语法
crontab [ -u user ] file
Shell
或
crontab [ -u user ] { -l | -r | -e }
Shell
说明:
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数说明:
时间格式如下:
f1 f2 f3 f4 f5 program
Shell
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
Shell
使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。
每月每天每小时的第 0 分钟执行一次 /bin/ls
0 * * * * /bin/ls
Shell
在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup
0 6-12/3 * 12 * /usr/bin/backup
Shell
周一到周五每天下午 5:00 寄一封信给 alex@domain.name
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
Shell
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分….执行 echo “haha”
20 0-23/2 * * * echo "haha"
Shell
下面再看看几个具体的例子:
0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache
50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘
1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
Shell
**注意:**当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可,如:
20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh > /dev/null 2>&1
Shell
脚本无法执行问题
如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。
解决方法:
1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker。
2、在 shell 脚本开头使用以下代码:
#!/bin/sh
. /etc/profile
. ~/.bash_profile
3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得好几遍了生效,例如:
20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
declare
命令Linux declare命令用于声明 shell 变量。
declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。
语法
declare [+/-][rxi][变量名称=设置值] 或 declare -f
Shell
参数说明:
声明整数型变量
# declare -i ab //声明整数型变量
# ab=56 //改变变量内容
# echo $ab //显示变量内容
56
Shell
改变变量属性
# declare -i ef //声明整数型变量
# ef=1 //变量赋值(整数值)
# echo $ef //显示变量内容
1
# ef="wer" //变量赋值(文本值)
# echo $ef
0
# declare +i ef //取消变量属性
# ef="wer"
# echo $ef
wer
Shell
设置变量只读
# declare -r ab //设置变量为只读
# ab=88 //改变变量内容
-bash: ab: 只读变量
# echo $ab //显示变量内容
56
Shell
声明数组变量
# declare -a cd='([0]="a" [1]="b" [2]="c")' //声明数组变量
# echo ${cd[1]}
b //显示变量内容
# echo ${cd[@]} //显示整个数组变量内容
a b c
Shell
显示函数
# declare -f
command_not_found_handle ()
{
if [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- $1;
return $?;
else
if [ -x /usr/share/command-not-found ]; then
/usr/bin/python /usr/share/command-not-found -- $1;
return $?;
else
return 127;
fi;
fi
}
depmod
命令Linux depmod命令用于分析可载入模块的相依性。
depmod(depend module)可检测模块的相依性,供modprobe在安装模块时使用。
语法
depmod [-adeisvV][-m <文件>][--help][模块名称]
Shell
参数说明:
显示可用模块
# depmod -a //显示可用模块
dmesg
命令Linux dmesg命令用于显示开机信息。
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
语法
dmesg [-cn][-s <缓冲区大小>]
Shell
参数说明:
显示开机信息
# dmesg |less WARNING: terminal is not fully functional [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.32-21-generic (buildd@rothera) (gcc version 4.4.3 (Ub untu 4.4.3-4ubuntu5) ) #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 (Ubuntu 2.6.32-21.3 2-generic 2.6.32.11+drm33.2) [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] NSC Geode by NSC [ 0.000000] Cyrix CyrixInstead [ 0.000000] Centaur CentaurHauls [ 0.000000] Transmeta GenuineTMx86 [ 0.000000] Transmeta TransmetaCPU [ 0.000000] UMC UMC UMC UMC [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved) [ 0.000000] BIOS-e820: 00000000000dc000 - 00000000000e0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003fef0000 (usable) [ 0.000000] BIOS-e820: 000000003fef0000 - 000000003feff000 (ACPI data) [ 0.000000] BIOS-e820: 000000003feff000 - 000000003ff00000 (ACPI NVS) ……省略部分内容
Shell
显示开机信息
#pwd //查看当前所在目录
/home/hnlinux/
# dmesg > boot.msg //将开机信息保存到 boot.msg文件中
#ls //显示当前目录文件
boot.msg
enable
命令Linux enable命令用于启动或关闭 shell 内建指令。
若要执行的文件名称与shell内建指令相同,可用enable -n来关闭shell内建指令。若不加-n参数,enable可重新启动关闭的指令。
语法
enable [-n][-all][内建指令]
Shell
参数说明:
显示shell内置命令
# enable //显示shell命令 enable . enable : enable [ enable alias enable bg enable bind enable break enable builtin enable caller enable cd enable command enable compgen enable complete enable compopt enable continue enable declare enable dirs enable disown enable echo enable enable enable eval enable exec enable exit enable export enable false enable fc enable fg enable getopts enable hash enable help enable history enable jobs enable kill enable let enable local enable logout enable mapfile enable popd enable printf enable pushd enable pwd enable read enable readarray enable readonly enable return enable set enable shift enable shopt enable source enable suspend enable test enable times enable trap enable true enable type enable typeset enable ulimit enable umask enable unalias enable unset enable wait
Shell
eval
命令Linux eval命令用于重新运算求出参数的内容。
eval可读取一连串的参数,然后再依参数本身的特性来执行。
语法
eval [参数]
Shell
参数说明:参数不限数目,彼此之间用分号分开。
连接多个命令
# eval enable;ls //连接多个命令 enable . enable : enable [ enable alias enable bg enable bind enable break enable builtin enable caller enable cd enable command enable compgen enable complete enable compopt enable continue enable declare enable dirs enable disown enable echo enable enable enable eval enable exec enable exit enable export enable false enable fc enable fg enable getopts enable hash enable help enable history enable jobs enable kill enable let enable local enable logout enable mapfile enable popd enable printf enable pushd enable pwd enable read enable readarray enable readonly enable return enable set enable shift enable shopt enable source enable suspend enable test enable times enable trap enable true enable type enable typeset enable ulimit enable umask enable unalias enable unset enable wait
Shell
export
命令Linux export 命令用于设置或显示环境变量。
在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
语法
export [-fnp][变量名称]=[变量设置值]
Shell
参数说明:
列出当前所有的环境变量
# export -p //列出当前的环境变量值 declare -x HOME=“/root“ declare -x LANG=“zh_CN.UTF-8“ declare -x LANGUAGE=“zh_CN:zh“ declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“ declare -x LESSOPEN=“| /usr/bin/lesspipe %s“ declare -x LOGNAME=“root“ declare -x LS_COLORS=““ declare -x MAIL=“/var/mail/root“ declare -x OLDPWD declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“ declare -x PWD=“/root“ declare -x SHELL=“/bin/bash“ declare -x SHLVL=“1“ declare -x SPEECHD_PORT=“6560“ declare -x SSH_CLIENT=“192.168.1.65 1674 22“ declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“ declare -x SSH_TTY=“/dev/pts/2“ declare -x TERM=“XTERM“ declare -x USER=“root“ declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“
Shell
定义环境变量
# export MYENV //定义环境变量 # export -p //列出当前的环境变量 declare -x HOME=“/root“ declare -x LANG=“zh_CN.UTF-8“ declare -x LANGUAGE=“zh_CN:zh“ declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“ declare -x LESSOPEN=“| /usr/bin/lesspipe %s“ declare -x LOGNAME=“root“ declare -x LS_COLORS=““ declare -x MAIL=“/var/mail/root“ declare -x MYENV declare -x OLDPWD declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“ declare -x PWD=“/root“ declare -x SHELL=“/bin/bash“ declare -x SHLVL=“1“ declare -x SPEECHD_PORT=“6560“ declare -x SSH_CLIENT=“192.168.1.65 1674 22“ declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“ declare -x SSH_TTY=“/dev/pts/2“ declare -x TERM=“XTERM“ declare -x USER=“root“ declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“
Shell
定义环境变量赋值
# export MYENV=7 //定义环境变量并赋值 # export -p declare -x HOME=“/root“ declare -x LANG=“zh_CN.UTF-8“ declare -x LANGUAGE=“zh_CN:zh“ declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“ declare -x LESSOPEN=“| /usr/bin/lesspipe %s“ declare -x LOGNAME=“root“ declare -x LS_COLORS=““ declare -x MAIL=“/var/mail/root“ declare -x MYENV=“7“ declare -x OLDPWD declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“ declare -x PWD=“/root“ declare -x SHELL=“/bin/bash“ declare -x SHLVL=“1“ declare -x SPEECHD_PORT=“6560“ declare -x SSH_CLIENT=“192.168.1.65 1674 22“ declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“ declare -x SSH_TTY=“/dev/pts/2“ declare -x TERM=“XTERM“ declare -x USER=“root“ declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“
pwunconv
命令Linux pwunconv命令用于关闭用户的投影密码。
执行pwunconv指令可以关闭用户投影密码,它会把密码从shadow文件内,重回存到passwd文件里。
语法
pwunconv
Shell
关闭用户的投影密码
# pwunconv
grpconv
命令Linux grpconv(group convert to shadow password)命令用于开启群组的投影密码。
Linux系统里的用户和群组密码,分别存放在/etc目录下的passwd和group文件中。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为”x”字符。投影密码的功能可随时开启或关闭,您只需执行grpconv指令就能开启群组投影密码。
语法
grpconv
rpm
命令Linux rpm 命令用于管理套件。
rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
语法
rpm [-acdhilqRsv][-b<完成阶段><套间档>+][-e<套件挡>][-f<文件>+][-i<套件档>][-p<套件档>+][-U<套件档>][-vv][--addsign<套件档>+][--allfiles][--allmatches][--badreloc][--buildroot<根目录>][--changelog][--checksig<套件档>+][--clean][--dbpath<数据库目录>][--dump][--excludedocs][--excludepath<排除目录>][--force][--ftpproxy<主机名称或IP地址>][--ftpport<通信端口>][--help][--httpproxy<主机名称或IP地址>][--httpport<通信端口>][--ignorearch][--ignoreos][--ignoresize][--includedocs][--initdb][justdb][--nobulid][--nodeps][--nofiles][--nogpg][--nomd5][--nopgp][--noorder][--noscripts][--notriggers][--oldpackage][--percent][--pipe<执行指令>][--prefix<目的目录>][--provides][--queryformat<档头格式>][--querytags][--rcfile<配置档>][--rebulid<套件档>][--rebuliddb][--recompile<套件档>][--relocate<原目录>=<新目录>][--replacefiles][--replacepkgs][--requires][--resign<套件档>+][--rmsource][--rmsource<文件>][--root<根目录>][--scripts][--setperms][--setugids][--short-circuit][--sign][--target=<安装平台>+][--test][--timecheck<检查秒数>][--triggeredby<套件档>][--triggers][--verify][--version][--whatprovides<功能特性>][--whatrequires<功能特性>]
Shell
参数说明:
安装软件
# rpm -hvi dejagnu-1.4.2-10.noarch.rpm
警告:dejagnu-1.4.2-10.noarch.rpm: V3 DSA 签名:NOKEY, key ID db42a60e
准备...
########################################### [100%]
Shell
显示软件安装信息
# rpm -qi dejagnu-1.4.2-10.noarch.rpm
【第1次更新 教程、类似命令关联】
insmod
命令Linux insmod(insert module)命令用于载入模块。
Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。
语法
insmod [-fkmpsvxX][-o <模块名称>][模块文件][符号名称 = 符号值]
Shell
参数说明:
加载模块
# insmod led.o
//向内核加载模块
kbdconfig
命令Linux kbdconfig命令用于设置键盘类型。
kbdconfig(Red Hat Linux才有的指令)是一个用来设置键盘的程序,提供图形化的操作界面。kbdconfig实际上是修改/etc/sysconfig/keyboard的键盘配置文件。
语法
kbdconfig [--back][--test]
Shell
参数:
键盘设置:
# kdbconfig //设置键盘
lilo
命令Linux lilo命令用于安装核心载入,开机管理程序。
lilo(linux loader)是个Linux系统核心载入程序,同时具备管理开机的功能。单独执行lilo指令,它会读取/etc/目录下的lilo.conf配置文件,然后根据其内容安装lilo。
语法
lilo [-clqtV][-b<外围设备代号>][-C<配置文件>][-d<延迟时间>][-D<识别标签>][-f<几何参数文件>][-i<开机磁区文件>][-I<识别标签>][-m<映射文件>][-P<fix/ignore>][-r<根目录>][-R<执行指令>...][-s<备份文件>][-S<备份文件>][-uU<外围设备代号>][-v...]
Shell
参数说明:
安装lilo到第一台SCSI硬盘的第三个主要分区,采用3级模式。
# lilo -b /dev/sda3 -v -v -v
Shell
指定安装lilo的配置文件和备份文件。
# lilo -C /etc/lilo.conf2 -s /boot/boot. Backup
liloconfig
命令Linux liloconfig命令用于设置核心载入,开机管理程序。
liloconfig是Slackware发行版专门用来调整lilo设置的程序。它通过互动式操作界面,让用户能够利用键盘上的方向键等,轻易地操控lilo的安装,设置作业,而无须下达各种参数或撰写配置文件。
语法
liloconfig
Shell
执行liloconfig命令
# liloconfig
lsmod
命令Linux lsmod命令用于显示已载入系统的模块。
执行lsmod(list modules)指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。
语法
lsmod
Shell
显示模块信息
# lsmod Module Size Used by nfsd 238935 11 lockd 64849 1 nfsd nfs_acl 2245 1 nfsd auth_rpcgss 33735 1 nfsd sunrpc 193181 10 nfsd,lockd,nfs_acl,auth_rpcgss exportfs 3437 1 nfsd xt_TCPMSS 2931 1 xt_tcpmss 1197 1 xt_tcpudp 2011 1 iptable_mangle 2771 1 ip_tables 9991 1 iptable_mangle x_tables 14299 4 xt_TCPMSS,xt_tcpmss,xt_tcpudp,ip_tables pppoe 8943 2 pppox 2074 1 pppoe binfmt_misc 6587 1 snd_ens1371 18814 0 gameport 9089 1 snd_ens1371 snd_ac97_codec 100646 1 snd_ens1371 ac97_bus 1002 1 snd_ac97_codec snd_pcm_oss 35308 0 snd_mixer_oss 13746 1 snd_pcm_oss snd_pcm 70662 3 snd_ens1371,snd_ac97_codec,snd_pcm_oss snd_seq_dummy 1338 0 snd_seq_oss 26726 0 snd_seq_midi 4557 0 snd_rawmidi 19056 2 snd_ens1371,snd_seq_midi snd_seq_midi_event 6003 2 snd_seq_oss,snd_seq_midi snd_seq 47263 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event snd_timer 19098 2 snd_pcm,snd_seq snd_seq_device 5700 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq fbcon 35102 71 tileblit 2031 1 fbcon font 7557 1 fbcon bitblit 4707 1 fbcon ppdev 5259 0 softcursor 1189 1 bitblit snd 54148 10 snd_ens1371,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device psmouse 63245 0 serio_raw 3978 0 soundcore 6620 1 snd parport_pc 25962 1 snd_page_alloc 7076 1 snd_pcm vga16fb 11385 1 intel_agp 24177 1 vgastate 8961 1 vga16fb i2c_piix4 8335 0 shpchp 28820 0 agpgart 31724 1 intel_agp lp 7028 0 parport 32635 3 ppdev,parport_pc,lp mptspi 14652 2 mptscsih 31325 1 mptspi pcnet32 28890 0 floppy 53016 0 mii 4381 1 pcnet32 mptbase 83022 2 mptspi,mptscsih scsi_transport_spi 21096 1 mptspi
Shell
minfo
命令Linux minfo命令用于显示MS-DOS文件系统的各项参数。
minfo为mtools工具指令,可显示MS-DOS系统磁盘的各项参数,包括磁区数,磁头数…等。
语法
</>minfo [-v][驱动器代号]
Shell
参数说明:
显示DOS系统参数
# minfo -v C: //显示系统参数
set
命令Linux set命令用于设置shell。
set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。
语法
set [+-abCdefhHklmnpPtuvx]
Shell
参数说明:
显示环境变量
# set BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu") BASH_VERSION='3.00.15(1)-release' COLORS=/etc/DIR_COLORS.xterm COLUMNS=99 DIRSTACK=() EUID=0 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/root HOSTNAME=hnlinux HOSTTYPE=i386 IFS=$' ' INPUTRC=/etc/inputrc KDEDIR=/usr LANG=zh_CN.GB2312 LESSOPEN='|/usr/bin/lesspipe.sh %s' LINES=34 L MAIL=/var/spool/mail/root MAILCHECK=60 OLDPWD=/home/uptech OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/crosstools/gcc-3.4.6-glibc-2.3.6/bin PIPESTATUS=([0]="2") PPID=26005 PROMPT_COMMAND='echo -ne "
Shell
modprobe
命令Linux modprobe命令用于自动处理可载入模块。
modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
语法
modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]
Shell
参数:
安装软驱模块:
[root@w3cschool.cc ~]# modprobe -v floppy
Shell
卸载软驱模块:
[root@w3cschool.cc ~]# modprobe -v -r floppy
ntsysv
命令Linux ntsysv命令用于设置系统的各种服务。
这是Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。
语法
ntsysv [--back][--level <等级代号>]
Shell
参数:
mouseconfig
命令Linux mouseconfig命令
Linux 命令大全
Linux mouseconfig命令用于设置鼠标相关参数。
mouseconfig为鼠标设置程序,可自动设置相关参数,或者用户也可以利用所提供互动模式自行设置鼠标。mouseconfig是Red Hat Linux才有的命令。
语法
mouseconfig [--back][--emulthree][--help][--expert][--kickstart][--noprobe][--test][--device <连接端口>][鼠标类型]
Shell
参数:
实例
以交互模式配置鼠标:
# mouseconfig -text
passwd
命令Linux passwd命令用来更改使用者的密码
语法
passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
Shell
必要参数:
选择参数:
修改用户密码
# passwd runoob //设置runoob用户的密码
Enter new UNIX password: //输入新密码,输入的密码无回显
Retype new UNIX password: //确认密码
passwd: password updated successfully
#
Shell
显示账号密码信息
# passwd -S runoob
runoob P 05/13/2010 0 99999 7 -1
Shell
删除用户密码
# passwd -d lx138
passwd: password expiry information changed.
pwconv
命令Linux pwconv命令用于开启用户的投影密码。
Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为”x”字符,有效的强化了系统的安全性。
语法
pwconv
Shell
开启用户的投影密码
# pwconv
rdate
命令Linux rdate命令用于显示其他主机的日期与时间。
执行rdate指令,向其他主机询问系统时间并显示出来。
语法
rdate [-ps][主机名称或IP地址...]
Shell
参数:
resize
命令Linux resize命令设置终端机视窗的大小。
执行resize指令可设置虚拟终端机的视窗大小。
语法
resize [-cu][-s <列数> <行数>]
Shell
参数:
实例
使用 C shell
[root@linux runoob]# resize -c
set noglob;
setenv COLUMNS '99';
setenv LINES '34';
unset noglob;
Shell
使用 Bourne shell
[root@hnlinux runoob]# resize -u
COLUMNS=99;
LINES=34;
export COLUMNS LINES;
Shell
设置指定大小
[root@hnlinux runoob]# resize -s 80 160
rmmod
命令Linux rmmod命令用于删除模块。
执行rmmod指令,可删除不需要的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。
语法
rmmod [-as][模块名称...]
Shell
参数:
显示已安装的模块
# lsmod Module Size Used by cramfs 39042 1 nfsd 238935 11 lockd 64849 1 nfsd nfs_acl 2245 1 nfsd auth_rpcgss 33735 1 nfsd sunrpc 193181 10 nfsd,lockd,nfs_acl,auth_rpcgss exportfs 3437 1 nfsd xt_TCPMSS 2931 0 xt_tcpmss 1197 0 xt_tcpudp 2011 0 iptable_mangle 2771 0 ip_tables 9991 1 iptable_mangle x_tables 14299 4 ……省略部分结果 pppoe 8943 0 pppox 2074 1 pppoe binfmt_misc 6587 1 snd_ens1371 18814 0 gameport 9089 1 snd_ens1371 snd_ac97_codec 100646 1 snd_ens1371 ac97_bus 1002 1 snd_ac97_codec snd_pcm_oss 35308 0
Shell
卸载模块
# rmmod -v pppoe //卸载模块pppoe
Checking ppoe for persistent data
Shell
安装模块
# insmod -v pppoe >1.log //安装模块
~# tail -b 30 1.log //显示文件信息
grpunconv
命令Linux grpunconv命令用于关闭群组的投影密码。
执行grpunconv指令可关闭群组投影密码,它会把密码从gshadow文件内,回存到group文件里。
语法
grpunconv
Shell
未关闭的情况
cat /etc/gshadow | grep cdy
cdy:123456::
Shell
关闭影子密码
cat /etc/gshadow
cat: /etc/gshadow: 没有那个文件或目录
Shell
查看密码已经复制到 /etc/group 中了。
cat /etc/group | grep cdy
cdy:123456:1000:
modinfo
命令Linux modinfo命令用于显示kernel模块的信息。
modinfo会显示kernel模块的对象文件,以显示该模块的相关信息。
语法
modinfo [-adhpV][模块文件]
Shell
参数:
显示sg模块的信息。
# modinfo sg
filename: /lib/modules/2.6.9-42.ELsmp/kernel/drivers/scsi/sg.ko
author: Douglas Gilbert
description: SCSI generic (sg) driver
license: GPL
version: 3.5.31 B0B0CB1BB59F0669A1F0D6B
parm: def_reserved_size:size of buffer reserved for each fd
parm: allow_dio:allow direct I/O (default: 0 (disallow))
alias: char-major-21-*
vermagic: 2.6.9-42.ELsmp SMP 686 REGPARM 4KSTACKS gcc-3.4
depends: scsi_mod
time
命令Linux time命令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。
例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。
语法
time [options] COMMAND [arguments]
Shell
参数:
time 指令可以显示的资源有四大项,分别是:
详细的内容如下:
1、Time Resources
E 执行指令所花费的时间,格式是:[hour]:minute:second。请注意这个数字并不代表实际的 CPU 时间。
e 执行指令所花费的时间,单位是秒。请注意这个数字并不代表实际的 CPU 时间。
S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。
U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。
P 执行指令时 CPU 的占用比例。其实这个数字就是核心模式加上使用者模式的 CPU 时间除以总时间。
2、Memory Resources
M 执行时所占用的实体记忆体的最大值。单位是 KB
t 执行时所占用的实体记忆体的平均值,单位是 KB
K 执行程序所占用的记忆体总量(stack+data+text)的平均大小,单位是 KB
D 执行程序的自有资料区(unshared data area)的平均大小,单位是 KB
p 执行程序的自有堆叠(unshared stack)的平均大小,单位是 KB
X 执行程序间共享内容(shared text)的平均值,单位是 KB
Z 系统记忆体页的大小,单位是 byte。对同一个系统来说这是个常数
3、IO Resources
F 此程序的主要记忆体页错误发生次数。所谓的主要记忆体页错误是指某一记忆体页已经置换到置换档(swap file)中,而且已经分配给其他程序。此时该页的内容必须从置换档里再读出来。
R 此程序的次要记忆体页错误发生次数。所谓的次要记忆体页错误是指某一记忆体页虽然已经置换到置换档中,但尚未分配给其他程序。此时该页的内容并未被破坏,不必从置换档里读出来
W 此程序被交换到置换档的次数
c 此程序被强迫中断(像是分配到的 CPU 时间耗尽)的次数
w 此程序自愿中断(像是在等待某一个 I/O 执行完毕,像是磁碟读取等等)的次数
I 此程序所输入的档案数
O 此程序所输出的档案数
r 此程序所收到的 Socket Message
s 此程序所送出的 Socket Message
k 此程序所收到的信号 ( Signal )数量
4、Command Info
C 执行时的参数以及指令名称
x 指令的结束代码 ( Exit Status )
-p or –portability:这个选项会自动把显示格式设定成为:
real %e user %Usys %S:这么做的目的是为了与 POSIX 规格相容。
-v or –verbose:这个选项会把所有程序中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个指令的人相当有用。
1. # time date
2. Sun Mar 26 22:45:34 GMT-8 2006
3.
4. real 0m0.136s
5. user 0m0.010s
6. sys 0m0.070s
7. #
Shell
在以上实例中,执行命令”time date”(见第1行)。
系统先执行命令”date”,第2行为命令”date”的执行结果。
第3-6行为执行命令”date”的时间统计结果,其中第4行”real”为实际时间,第5行”user”为用户CPU时间,第6行”sys”为系统CPU时间。
以上三种时间的显示格式均为MMmNN[.FFF]s。
利用下面的指令
time -v ps -aux
Shell
我们可以获得执行 ps -aux 的结果和所花费的系统资源。如下面所列的资料:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd] root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod] ...... root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux Command being timed: "ps -aux" User time (seconds): 0.05 System time (seconds): 0.06 Percent of CPU this job got: 68% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 0 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 238 Minor (reclaiming a frame) page faults: 46 Voluntary context switches: 0 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Shell
setup
命令Linux setup命令设置公用程序,是一个启动图形设置系统的命令。
setup 命令:用来配置X,打印设置,时区设置,系统服务,网络配置,配置,防火墙配置,验证配置,鼠标配置。
语法
setup
Shell
setup是一个设置公用程序,提供图形界面的操作方式。在setup中可设置7类的选项:
sndconfig
命令Linux sndconfig命令用于设置声卡。
sndconfig为声卡设置程序,支持PnP设置,可自动检测并设置PnP声卡。
语法
sndconfig [--help][--noautoconfig][--noprobe]
Shell
参数:
setenv
命令Linux setenv命令用于查询或显示环境变量。
setenv为tsch中查询或设置环境变量的指令。
语法
setenv [变量名称][变量值]
Shell
显示环境变量
setenv
Shell
设置环境变量
# setenv USER lx138
setconsole
命令Linux setconsole命令用于设置系统终端。
setconsole可用来指定系统终端。
语法
setconsole [serial][ttya][ttyb]
Shell
参数:
设置终端
# setconsole ttyS0
timeconfig
命令Linux timeconfig命令用于设置时区。
这是Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,设置系统时间所属的时区。
语法
timeconfig [--arc][--back][--test][--utc][时区名称]
Shell
参数:
# timeconfig //设置时区
ulimit
命令Linux ulimit命令用于控制shell程序的资源。
ulimit为shell内建指令,可用来控制shell执行程序的资源。
语法
ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]
Shell
参数:
显示系统资源的设置
[root@w3cschool.cc ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited pending signals (-i) 1024 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@w3cschool.cc ~]#
Shell
设置单一用户程序数目上限
[root@w3cschool.cc ~]# ulimit -u 500 //设置单一用户程序上限 [root@w3cschool.cc ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited pending signals (-i) 1024 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 500 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@w3cschool.cc ~]#
unset
命令Linux unset命令用于删除变量或函数。
unset为shell内建指令,可删除变量或函数。
语法
unset [-fv][变量或函数名称]
Shell
参数:
删除环境变量
[root@runoob.com ~]# lx="ls -lh" //设定环境变量 [root@runoob.com ~]# $lx //使用环境变量 总用量 116K -rw-r--r-- 1 root root 2.1K 2008-03-30 anaconda-ks.cfg drwx------ 3 root root 4.0K 3月 30 21:22 Desktop -rw-r--r-- 1 root root 50K 2008-03-30 install.log -rw-r--r-- 1 root root 32K 2008-03-30 install.log.syslog lrwxrwxrwx 1 root root 9 2008-03-30 qte -> /opt/qte/ [root@runoob.com ~]# set //查看当前的环境变量 BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() ……省略部分内容 PROMPT_COMMAND='echo -ne "33]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}07"' PS1='[u@h W]$ ' PS2='> ' PS4='+ ' PWD=/root QTDIR=/usr/lib/qt-3.3 SHELL=/bin/bash SSH_TTY=/dev/pts/4 SUPPORTED=zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en SYSFONT=latarcyrheb-sun16 TERM=xterm UID=0 USER=root _=-lh lx='ls -lh' [root@runoob.com ~]# unset lx //删除环境变量 [root@runoob.com ~]# set //显示当前环境变量 BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() ……省略部分内容 PROMPT_COMMAND='echo -ne "33]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}07"' PS1='[u@h W]$ ' PS2='> ' PS4='+ ' PWD=/root QTDIR=/usr/lib/qt-3.3 SHELL=/bin/bash SSH_TTY=/dev/pts/4 SUPPORTED=zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en SYSFONT=latarcyrheb-sun16 TERM=xterm UID=0 USER=root _=-lh
Shell
chkconfig
命令Linux chkconfig命令用于检查,设置系统的各种服务。
这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
语法
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
Shell
参数:
列出chkconfig所知道的所有命令。
# chkconfig -list
Shell
开启服务。
# chkconfig telnet on //开启Telnet服务
# chkconfig --list //列出chkconfig所知道的所有的服务的情况
Shell
关闭服务
# chkconfig telnet off //关闭Telnet服务
# chkconfig -list //列出chkconfig所知道的所有的服务的情况
apmd
命令Linux apmd命令用于进阶电源管理服务程序。
apmd负责BIOS进阶电源管理(APM)相关的记录,警告与管理工作。
语法
apmd [-u v V W][-p <百分比变化量>][-w <百分比值>]
Shell
参数:
记录所有的电源管理事件
# apmd -v
Shell
设置BIOS时钟
# apmd -utc //设置BIOS时钟为UTC
hwclock
命令Linux hwclock命令用于显示与设定硬件时钟。
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
语法
hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=<日期与时间>]
Shell
参数:
显示当前时间
# hwclock
2010年05月27日 星期四 18时04分31秒 -0.704214 seconds
Shell
查看版本信息
# hwclock -v
hwclock from util-linux-2.12a
mkkickstart
命令Linux mkkickstart命令
Linux 命令大全
Linux mkkickstart命令用于建立安装的组态文件。
mkkickstart可根据目前系统的设置来建立组态文件,供其他电脑在安装时使用。组态文件的内容包括使用语言,网络环境,系统磁盘状态,以及X Windows的设置等信息。
语法
mkkickstart [--bootp][--dhcp][--nonet][--nox][--version][--nfs <远端电脑:路径>]
Shell
参数:
构建一个安装组态文件:
# mkkickstart --nonet -bootp
fbset
命令Linux fbset命令用于设置景框缓冲区。
fbset指令可用于设置景框缓冲区的大小,还能调整画面之分辨率,位置,高低宽窄,色彩 深度,并可决定是否启动先卡之各项硬件特性。
语法
fbset [-ahinsvVx][-db <信息文件>][-fb <外围设备代号>][--test][显示模式]
Shell
参数:
设置画面分辨率 和桌面分辨率
# fbset -g 800 688 1024 768//画面分辨率为800*600 桌面分辨率为1024*768
Shell
启动硬件文本加速
# fbset -accel true // 启动硬件文本加速
Shell
启动广播功能
# fbset -bcast true //启动广播功能
unalias
命令Linux unalias命令用于删除别名。
unalias为shell内建指令,可删除别名设置。
语法
unalias [-a][别名]
Shell
参数:
给命令设置别名
[root@runoob.com ~]# alias lx=ls
[root@runoob.com ~]# lx
anaconda-ks.cfg Desktop install.log install.log.syslog qte
Shell
删除别名
[root@runoob.com ~]# alias lx //显示别名
alias lx='ls'
[root@runoob.com ~]# unalias lx //删除别名
[root@runoob.com ~]# lx
-bash: lx: command not found
SVGATextMode
命令Linux SVGATextMode命令
Linux 命令大全
Linux SVGATextMode命令用于加强文字模式的显示画面。
SVGATextMode可用来设置文字模式下的显示画面,包括分辨率,字体和更新频率等。
语法
SVGATextMode [-acdfhmnrsv][-t <配置文件>][模式]
Shell
参数:
gpasswd
命令Linux passwd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。
语法
gpasswd [可选项] 组名
Shell
可选项参数:
如系统有个 peter 账户,该账户本身不是 groupname 群组的成员,使用 newgrp 需要输入密码即可。
gpasswd groupname
Shell
让使用者暂时加入成为该组成员,之后 peter 建立的文件 group 也会是 groupname。所以该方式可以暂时让 peter 建立文件时使用其他的组,而不是 peter 本身所在的组。
所以使用 gpasswd groupname 设定密码,就是让知道该群组密码的人可以暂时切换具备 groupname 群组功能的。
gpasswd -A peter users
Shell
这样 peter 就是 users 群组的管理员,就可以执行下面的操作:
gpasswd -a mary users
gpasswd -a allen users
Shell
注意:添加用户到某一个组 可以使用 usermod -G group_name user_name 这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用 gpasswd 这个命令来添加操作用户:
gpasswd -a user_name group_name
ar
命令Linux ar命令用于建立或修改备存文件,或是从备存文件中抽取文件。
ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。
语法
ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]
Shell
参数:
必要参数:
选项参数:
打包文件
[root@runoob.com ~]# ls //显示当前目录文件
a.c b.c d.c install.log qte
anaconda-ks.cfg c.c Desktop
[root@runoob.com ~]# ar rv one.bak a.c b.c //打包 a.c b.c文件
ar: 正在创建 one.bak
a - a.c
a - b.c
[root@runoob.com ~]#
Shell
打包多个文件
[root@runoob.com ~]# ar rv two.bak *.c //打包以.c结尾的文件
ar: 正在创建 two.bak
a - a.c
a - b.c
a - c.c
a - d.c
[root@runoob.com ~]#
Shell
显示打包文件的内容
[root@runoob.com ~]# ar t two.bak
a.c
b.c
c.c
d.c
[root@runoob.com ~]#
Shell
删除打包文件的成员文件
[root@runoob.com ~]# ar d two.bak a.c b.c c.c
[root@runoob.com ~]# ar t two.bak
d.c
bunzip2
命令Linux bunzip2命令是.bz2文件的解压缩程序。
bunzip2可解压缩.bz2格式的压缩文件。bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同。
语法:bunzip2 [-fkLsvV][.bz2压缩文件]
参数:
解压.bz2文件
# bunzip2 -v temp.bz2 //解压文件显示详细处理信息
bzip2
命令Linux bzip2命令是.bz2文件的压缩程序。
bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
语法
bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]
Shell
参数:
解压.bz2文件
[root@w3cschool.cc ~]# bzip2 -v temp.bz2 //解压文件显示详细处理信息
Shell
压缩文件
[root@w3cschool.cc ~]# bzip2 -c a.c b.c c.c
Shell
检查文件完整性
[root@w3cschool.cc ~]# bzip2 -t temp.bz2
bzip2recover
命令Linux bzip2recover命令
Linux 命令大全
Linux bzip2recover命令用来修复损坏的.bz2文件。
bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便解压缩正常的区块。通常只适用在压缩文件很大的情况。
语法
bzip2recover [.bz2 压缩文件]
Shell
修复.bz2文件
gunzip
命令Linux gunzip命令用于解压文件。
gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为”.gz”。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。
语法
参数:
gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][文件...] 或 gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][目录]
Shell
<p>解压文件
</p>
<pre>
# gunzip ab.gz
unarj
命令Linux unarj命令用于解压缩.arj文件。
unarj为.arj压缩文件的压缩程序。
语法
unarj [eltx][.arj压缩文件]
Shell
参数:
解压.arj文件
# unarj e test.arj
compress
命令Linux compress命令是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。
语法
compress [-dfvcV] [-b maxbits] [file ...]
Shell
参数:
压缩文件
[root@runoob.com ~]# compress abc.h
[root@runoob.com ~]# ls
abc.h.Z
Shell
解压文件
[root@runoob.com ~]# compress -d abc.h.Z
[root@runoob.com ~]# ls
abc.h.
Shell
按指定压缩比例进行压缩
[root@runoob.com ~]# compress -b 7 abc.h
Shell
强制压缩文件夹
[root@runoob.com ~]# compress -rf /home/abc/
cpio
命令Linux cpio命令用于备份文件。
cpio是用来建立,还原备份档的工具程序,它可以加入,解开cpio或tra备份档内的文件。
语法
cpio [-0aABckLovV][-C <输入/输出大小>][-F <备份档>][-H <备份格式>][-O <备份档>][--block-size=<区块大小>][--force-local][--help][--quiet][--version] 或 cpio [-bBcdfikmnrsStuvV][-C <输入/输出大小>][-E <范本文件>][-F <备份档>][-H <备份格式>][-I <备份档>][-M <回传信息>][-R <拥有者><:/.><所属群组>][--block-size=<区块大小>][--force-local][--help][--no-absolute-filenames][--no-preserve-owner][--only-verify-crc][--quiet][--sparse][--version][范本样式...] 或 cpio [-0adkiLmpuvV][-R <拥有者><:/.><所属群组>][--help][--no-preserve-owner][--quiet][--sparse][--version][目的目]
Shell
参数:
制作备份文件
[root@runoob.com var]# ll //显示当前目录下的文件 总用量 164 drwxr-xr-x 2 root root 4096 2008-03-30 account drwxr-xr-x 9 root root 4096 2008-03-30 cache drwxr-xr-x 3 netdump netdump 4096 2008-03-30 crash drwxr-xr-x 3 root root 4096 2008-03-30 db drwxr-xr-x 3 root root 4096 2008-03-30 empty drwxr-xr-x 3 root root 4096 2008-03-30 ftp drwxrwx--T 2 root gdm 4096 4月 9 20:17 gdm drwxr-xr-x 25 root root 4096 2008-03-30 lib drwxr-xr-x 2 root root 4096 2004-08-13 local drwxrwxr-x 6 root lock 4096 5月 8 15:25 lock drwxr-xr-x 14 root root 4096 5月 8 15:14 log lrwxrwxrwx 1 root root 10 2008-03-30 mail -> spool/mail drwxr-xr-x 2 root root 4096 2004-08-13 nis drwxr-xr-x 2 root root 4096 2004-08-13 opt drwxr-xr-x 2 root root 4096 2004-08-13 preserve drwxr-xr-x 16 root root 4096 5月 8 15:14 run drwxr-xr-x 16 root root 4096 2008-03-30 spool drwxrwxrwt 3 root root 4096 1月 13 18:53 tmp drwx------ 2 root root 4096 2004-07-08 tux drwxr-xr-x 8 root root 4096 1月 19 19:39 www drwxr-xr-x 3 root root 4096 2008-03-30 yp [root@runoob.com var]# ls | cpio -o >123.cpio //制作备份文件 25 blocks [root@runoob.com var]# ll //显示当前目录下的文件 总用量 172 -rw-r--r-- 1 root root 1024 5月 24 13:06 123.cpio drwxr-xr-x 2 root root 4096 2008-03-30 account drwxr-xr-x 9 root root 4096 2008-03-30 cache drwxr-xr-x 3 netdump netdump 4096 2008-03-30 crash drwxr-xr-x 3 root root 4096 2008-03-30 db drwxr-xr-x 3 root root 4096 2008-03-30 empty drwxr-xr-x 3 root root 4096 2008-03-30 ftp drwxrwx--T 2 root gdm 4096 4月 9 20:17 gdm drwxr-xr-x 25 root root 4096 2008-03-30 lib drwxr-xr-x 2 root root 4096 2004-08-13 local drwxrwxr-x 6 root lock 4096 5月 8 15:25 lock drwxr-xr-x 14 root root 4096 5月 8 15:14 log lrwxrwxrwx 1 root root 10 2008-03-30 mail -> spool/mail drwxr-xr-x 2 root root 4096 2004-08-13 nis drwxr-xr-x 2 root root 4096 2004-08-13 opt drwxr-xr-x 2 root root 4096 2004-08-13 preserve drwxr-xr-x 16 root root 4096 5月 8 15:14 run drwxr-xr-x 16 root root 4096 2008-03-30 spool drwxrwxrwt 3 root root 4096 1月 13 18:53 tmp drwx------ 2 root root 4096 2004-07-08 tux drwxr-xr-x 8 root root 4096 1月 19 19:39 www drwxr-xr-x 3 root root 4096 2008-03-30 yp [root@runoob.com var]#
Shell
解压备份文件
[root@runoob.com var]# ls | cpio -i -l 123.cpio
Shell
解压缩备份文件,并列出详细信息
[root@runoob.com var]# cpio -t -I 123.cpio
123.cpio
a.c
b.c
c.c
……省略部分结果
Shell
强制解压缩
[root@runoob.com var]# cpio -i -u -I 123.cpio
Shell
解压缩时进行反向匹配,指定不解压的文件
[root@runoob.com var]# cpio -i -I 123.cpio -f *.c
//不解压.c结尾的文件
Shell
向指定的.cpio文件添加文件
[root@runoob.com var]# ls
123.cpio crash ftp local mail preserve tmp yp
account db gdm lock nis run tux
cache empty lib log opt spool www
[root@runoob.com var]# cpio -o -O 123.cpio -A
db //用户输入 按下Ctrl+D结束输入
1 block
[root@runoob.com var]#
Shell
从标准输入备份文件
[root@runoob.com test]# ls
a. a.c b.c c.c d.c f.c
[root@runoob.com test]# cpio -o >123.cpio
a.c //用户输入
b.c
c.c //按下Ctrl+D完成输入
3 block
[root@runoob.com test]#
Shell
复制文件
[root@runoob.com test]# cpio -p /root
a.c //用户输入
b.c
c.c //按下Ctrl+D完成输入
3 block
dump
命令Linux dump命令用于备份文件系统。
dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
语法
dump [-cnu][-0123456789][-b <区块大小>][-B <区块数目>][-d <密度>][-f <设备名称>][-h <层级>][-s <磁带长度>][-T <日期>][目录或文件系统] 或 dump [-wW]
Shell
参数:
备份文件到磁带
# dump -0 -u /dev/tape /home/
Shell
其中”-0″参数指定的是备份等级”-u”要求备份完毕之后将相应的信息存储到文件 /etc/dumpdates 留作记录
uuencode
命令Linux uuencode命令用于将uuencode编码后的档案还原。
早期在许多 unix 系统的传送协定只能传送七位元字元,并不支援二进位档案,像中文文字档就有用到八位元,所以无法完整地送到另一架机器上。 uuencode 指令,可以将二进位档转换成七位元的档案,传送到另一架机器上再以 uudecode 还原。最常见的是用在以电子邮件传送二进位档。uuencode 编码后的资料都以 begin 开始,以 end 作为结束。
语法
compress[必要参数][选择参数][目录或者文件]
Shell
参数说明:
必要参数:
**
选择参数:**
还原档案
# uuencode test.uud
gzexe
命令Linux gzexe命令用于压缩执行文件。
gzexe是用来压缩执行文件的程序。当您去执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。
语法
gzexe [-d][执行文件...]
Shell
参数:
压缩可执行文件
# gzexe abc
gzip
命令Linux gzip命令用于压缩文件。
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出”.gz”的扩展名。
语法
gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]
Shell
参数:
压缩文件
[root@runoob.com a]# ls //显示当前目录文件
a.c b.h d.cpp
[root@runoob.com a]# gzip * //压缩目录下的所有文件
[root@runoob.com a]# ls //显示当前目录文件
a.c.gz b.h.gz d.cpp.gz
[root@runoob.com a]#
Shell
接范例1, 列出详细的信息
[root@runoob.com a]# gzip -dv * //解压文件,并列出详细信息
a.c.gz: 0.0% -- replaced with a.c
b.h.gz: 0.0% -- replaced with b.h
d.cpp.gz: 0.0% -- replaced with d.cpp
[root@runoob.com a]#
Shell
接范例1,显示压缩文件的信息
[root@runoob.com a]# gzip -l *
compressed uncompressed ratio uncompressed_name
24 0 0.0% a.c
24 0 0.0% b.h
26 0 0.0% d.cpp
lha
命令Linux lha命令用于压缩或解压缩文件。
lha是从lharc演变而来的压缩程序,文件经它压缩后,会另外产生具有”.lzh”扩展名的压缩文件。
语法
lha [-acdfglmnpqtuvx][-a <0/1/2>/u</0/1/2>][-<a/c/u>d][-<e/x>i][-<a/u>o][-<e/x>w=<目的目录>][-<a/u>z][压缩文件][文件...] 或 lha [-acdfglmnpqtuvx][-a <0/1/2>/u</0/1/2>][-<a/c/u>d][-<e/x>i][-<a/u>o][-<e/x>w=<目的目录>][-<a/u>z][压缩文件][目录...]
Shell
参数:
缩文件
# lha -a abc.lhz a.b //压缩a.b文件,压缩后生成 abc.lhz文件
Shell
压缩目录
# lha -a abc2 /home/hnlinux
Shell
解压文件到当前目录
# lha -xiw=agis abc //解压文件abc
restore
命令Linux restore命令用来还原由dump操作所备份下来的文件或整个文件系统(一个分区)。
restore 指令所进行的操作和dump指令相反,dump操作可用来备份文件,而restore操作则是写回这些已备份的文件。
语法
restore [-cCvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] 或 restore [-chimvy][-b <区块大小>][-f <备份文件>][-s <文件编号>] 或 restore [-crvy][-b <区块大小>][-f <备份文件>][-s <文件编号>] 或 restore [-cRvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] 或 restore [chtvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...] 或 restore [-chmvxy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...]
Shell
参数:
tar
命令Linux tar命令用于备份文件。
tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
语法
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
Shell
参数:
压缩文件 非打包
# touch a.c
# tar -czvf test.tar.gz a.c //压缩 a.c文件为test.tar.gz
a.c
Shell
列出压缩文件内容
# tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c
Shell
解压文件
# tar -xzvf test.tar.gz
a.c
uudecode
命令Linuxuudecode 将 uuencode 编码后的档案还原, uudecode 只会将 begin 与 end 标记之间的编码资料还原,程序会跳过标记以外的资料。
语法
uuencode [-hv] [file1 ...]</p>
Shell
参数:
将 file.uud 还原,而还原后的档名储存在 file.uud 档中。
uuencode file.uud
Shell
可以一起还原好几个档案。
uuencode file1.uud file2.uud
unzip
命令Linux unzip命令用于解压缩zip文件
unzip为.zip压缩文件的解压缩程序。
语法
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
Shell
参数:
查看压缩文件中包含的文件:
# unzip -l abc.zip
Archive: abc.zip
Length Date Time Name
-------- ---- ---- ----
94618 05-21-10 20:44 a11.jpg
202001 05-21-10 20:44 a22.jpg
16 05-22-10 15:01 11.txt
46468 05-23-10 10:30 w456.JPG
140085 03-14-10 21:49 my.asp
-------- -------
483188 5 files
Shell
-v 参数用于查看压缩文件目录信息,但是不解压该文件。
# unzip -v abc.zip
Archive: abc.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
94618 Defl:N 93353 1% 05-21-10 20:44 9e661437 a11.jpg
202001 Defl:N 201833 0% 05-21-10 20:44 1da462eb a22.jpg
16 Stored 16 0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt
46468 Defl:N 39997 14% 05-23-10 10:30 962861f2 w456.JPG
140085 Defl:N 36765 74% 03-14-10 21:49 836fcc3f my.asp
-------- ------- --- -------
483188 371964 23% 5 files
zip
命令Linux zip 命令用于压缩文件。
zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
语法
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
Shell
参数:
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
zip -q -r html.zip /home/html
Shell
如果在我们在 /home/html 目录下,可以执行以下命令:
zip -q -r html.zip *
Shell
从压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c
zipinfo
命令Linux zipinfo命令用于列出压缩文件信息。
执行zipinfo指令可得知zip压缩文件的详细信息。
语法
zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>]
Shell
参数:
显示压缩文件信息
[root@w3cschool.cc a]# zipinfo cp.zip
Archive: cp.zip 486 bytes 4 files
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 a.c
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 b.c
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 c.c
-rw-r--r-- 2.3 unx 0 bx stor 24-May-10 18:54 e.c
4 files, 0 bytes uncompressed, 0 bytes compressed: 0.0%
[root@w3cschool.cc a]#
Shell
显示压缩文件中每个文件的信息
[root@w3cschool.cc a]# zipinfo -v cp.zip Archive: cp.zip 486 bytes 4 files End-of-central-directory record: ------------------------------- Actual offset of end-of-central-dir record: 464 (000001D0h) Expected offset of end-of-central-dir record: 464 (000001D0h) (based on the length of the central directory and its expected offset) This zipfile constitutes the sole disk of a single-part archive; its central directory contains 4 entries. The central directory is 248 (000000F8h) bytes long, and its (expected) offset in bytes from the beginning of the zipfile is 216 (000000D8h). There is no zipfile comment. Central directory entry #1: --------------------------- a.c offset of local header from start of archive: 0 (00000000h) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment. Central directory entry #2: --------------------------- b.c offset of local header from start of archive: 54 (00000036h) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment. Central directory entry #3: --------------------------- c.c offset of local header from start of archive: 108 (0000006Ch) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment. Central directory entry #4: --------------------------- e.c offset of local header from start of archive: 162 (000000A2h) bytes file system or operating system of origin: Unix version of encoding software: 2.3 minimum file system compatibility required: MS-DOS, OS/2 or NT FAT minimum software version required to extract: 1.0 compression method: none (stored) file security status: not encrypted extended local header: no file last modified on (DOS date/time): 2010 May 24 18:54:26 file last modified on (UT extra field modtime): 2010 May 24 18:54:26 local file last modified on (UT extra field modtime): 2010 May 24 10:54:26 UTC 32-bit CRC value (hex): 00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 3 characters length of extra field: 13 bytes length of file comment: 0 characters disk number on which file begins: disk 1 apparent file type: binary Unix file attributes (100644 octal): -rw-r--r-- MS-DOS file attributes (00 hex): none The central-directory extra field contains: - A subfield with ID 0x5455 (universal time) and 5 data bytes. The local extra field has UTC/GMT modification/access times. - A subfield with ID 0x7855 (Unix UID/GID) and 0 data bytes. There is no file comment.
Shell
setleds
命令Linux setleds命令用来设定键盘上方三个 LED 的状态。在 Linux 中,每一个虚拟主控台都有独立的设定。
语法
setleds [-v] [-L] [-D] [-F] [{+|-}num] [{+|-}caps] [{+|-}scroll]
Shell
参数:
将数字键打开,其馀二个灯关闭。
# setleds +num -caps -scroll
loadkeys
命令Linux loadkeys命令可以根据一个键盘定义表改变 linux 键盘驱动程序转译键盘输入过程。详细的说明请参考 dumpkeys。
语法
loadkeys [ -d --default ] [ -h --help ] [ -q --quiet ] [ -v --verbose [ -v --verbose ]...] [ -m --mktable ] [ -c --clearcompose ] [ -s --clearstrings ] [ filename... ]
Shell
参数:
定义按键组合 <pre> # loadkeys control alt keycode 88 = F80 //现确定键代码 string F80="runoob.com" //给变变量设定值 //按下 Ctrl + D键 确定输入 //效果:按下 Ctrl +Alt + F12 输出 Lx138.Com # dumpkeys --funcs-only //显示功能键 ……省略部分结果 string F3 = "\033[[C" string F4 = "\033[[D" string F5 = "\033[[E" string F6 = "\033[17~" string F7 = "\033[18~" string F8 = "\033[19~" string F9 = "\033[20~" string F10 = "\033[21~" string F11 = "\033[23~" string F12 = "\033[24~" string F13 = "\033[25~" string F14 = "\033[26~" string F15 = "\033[28~" string F16 = "\033[29~" string F17 = "\033[31~" string F18 = "\033[32~" string F19 = "\033[33~" string F20 = "\033[34~" string Find = "\033[1~" string Insert = "\033[2~" string Remove = "\033[3~" string Select = "\033[4~" string Prior = "\033[5~" string Next = "\033[6~" string Macro = "\033[M" string Pause = "\033[P" string F80 = "runoob.com"
Shell
rdev
命令Linux rdev命令可以用来查询/设置内核映像文件的根设备,RAM 磁盘大小或视频模式。
不带任何参数的 rdev 命令将输出当前根文件系统的 /etc/mtab 文件行。不带任何参数的 ramsize, vidmode, 和 rootflags 将显示帮助信息。
语法
rdev [-rsvh ] [-o offset ] [ image [value [ offset ] ] ]</p>
Shell
但是随著使用者想要设定的参数的不同,底下的方式也是一样:
rdev [ -o offset ] [ image [ root_device [ offset ] ] ]
Shell
swapdev [ -o offset ] [ image [ swap_device [ offset ] ] ]
Shell
ramsize [ -o offset ] [ image [ size [ offset ] ] ]
Shell
videomode [ -o offset ] [ image [ mode [ offset ] ] ]
Shell
rootflags [ -o offset ] [ image [ flags [ offset ] ] ]
Shell
参数:
dumpkeys
命令Linux dumpkeys命令用于显示键盘映射表,输出的内容可以被loadkeys命令识别,改变映射关系。
语法
dumpkey[选择参数]
Shell
参数说明:
显示功能键信息
# dumpkeys --funcs-only string F1 = "\033[[A" string F2 = "\033[[B" string F3 = "\033[[C" string F4 = "\033[[D" string F5 = "\033[[E" string F6 = "\033[17~" string F7 = "\033[18~" string F8 = "\033[19~" string F9 = "\033[20~" string F10 = "\033[21~" string F11 = "\033[23~" string F12 = "\033[24~" string F13 = "\033[25~" string F14 = "\033[26~" string F15 = "\033[28~" string F16 = "\033[29~" string F17 = "\033[31~" string F18 = "\033[32~" string F19 = "\033[33~" string F20 = "\033[34~" string Find = "\033[1~" string Insert = "\033[2~" string Remove = "\033[3~" string Select = "\033[4~" string Prior = "\033[5~" string Next = "\033[6~" string Macro = "\033[M" string Pause = "\033[P" root@snail-hnlinux:~#
Shell
显示驱动信息
# dumpkeys -i 键值码范围被内核支持: 1 - 255 可绑定到键值的动作最大值: 256 实际使用的键值数: 128 其中 121 已动态分配 被内核支持的动作码值范围 0x0000 - 0x00ff 0x0100 - 0x01ff 0x0200 - 0x0213 0x0300 - 0x0313 0x0400 - 0x0405 0x0500 - 0x05ff 0x0600 - 0x0603 0x0700 - 0x0708 0x0800 - 0x08ff 0x0900 - 0x0919 0x0a00 - 0x0a08 0x0b00 - 0x0bff 0x0c00 - 0x0c08 0x0d00 - 0x0dff 0x0e00 - 0x0e0a 内核支持的功能键数:256 编写定义的最大nr: 256 实际使用的编写定义nr: 68
MAKEDEV
命令Linux MAKEDEV命令用于新增 /dev/ 下的装置档案,多数分区已经将所有的档案都产生,故一般而言不太会需要用到这个命令。
语法
MAKEDEV -V
MAKEDEV [ -n ] [ -v ] update
MAKEDEV [ -n ] [ -v ] [ -d ] device ...
poweroff
命令poweroff 命令命令用于关闭计算器并切断电源。
使用权限:系统管理者。
语法
poweroff [-n] [-w] [-d] [-f] [-i] [-h]
Shell
参数说明:
关闭系统
# poweroff
bc
命令bc 命令是任意精度计算器语言,通常在linux下当计算器用。
它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
常用的运算:
语法
bc(选项)(参数)
Shell
选项值
参数
文件:指定包含计算任务的文件。
$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2+3
5
5-2
3
2+3*1
5
Shell
输入 quit 退出。
通过管道符
$ echo "15+5" | bc
20
Shell
scale=2 设小数位,2 代表保留两位:
$ echo 'scale=2; (2.777 - 1.4744)/1' | bc
1.30
Shell
bc 除了 scale 来设定小数位之外,还有 ibase 和 obase 来其它进制的运算:
$ echo "ibase=2;111" |bc
7
Shell
进制转换
#!/bin/bash
abc=192
echo "obase=2;$abc" | bc
<pre>
<p>
执行结果为:11000000,这是用bc将十进制转换成二进制。</p>
<pre>
#!/bin/bash
abc=11000000
echo "obase=10;ibase=2;$abc" | bc
Shell
执行结果为:192,这是用bc将二进制转换为十进制。
计算平方和平方根:
$ echo "10^10" | bc
10000000000
$ echo "sqrt(100)" | bc
10
tail
命令tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
命令格式:
tail [参数] [文件]
Shell
参数:
实例
要显示 notes.log 文件的最后 10 行,请输入以下命令:
tail notes.log
Shell
要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:
tail -f notes.log
Shell
此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
显示文件 notes.log 的内容,从第 20 行至文件末尾:
tail +20 notes.log
Shell
显示文件 notes.log 的最后 10 个字符:
tail -c 10 notes.log
xargs
命令xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:
find /sbin -perm +700 |ls -l #这个命令是错误的
find /sbin -perm +700 |xargs ls -l #这样才是正确的
Shell
xargs 一般是和管道一起使用。
命令格式:
somecommand |xargs -item command
Shell
参数:
xargs 用作替换工具,读取输入数据重新格式化后输出。
定义一个测试文件,内有多行文本数据:
# cat test.txt
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z
Shell
多行输入单行输出:
# cat test.txt | xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z
Shell
-n 选项多行输出:
# cat test.txt | xargs -n3
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z
Shell
-d 选项可以自定义一个定界符:
# echo "nameXnameXnameXname" | xargs -dX
name name name name
Shell
结合 -n 选项使用:
# echo "nameXnameXnameXname" | xargs -dX -n2
name name
name name
Shell
读取 stdin,将格式化后的参数传递给命令
假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:
#!/bin/bash
#sk.sh命令内容,打印出所有参数。
echo $*
Shell
arg.txt文件内容:
# cat arg.txt
aaa
bbb
ccc
Shell
xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:
# cat arg.txt | xargs -I {} ./sk.sh -p {} -l
-p aaa -l
-p bbb -l
-p ccc -l
Shell
复制所有图片文件到 /data/images 目录下:
ls *.jpg | xargs -n1 -I {} cp {} /data/images
Shell
xargs 结合 find 使用
用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:
find . -type f -name "*.log" -print0 | xargs -0 rm -f
Shell
xargs -0 将 \0 作为定界符。
统计一个源代码目录中所有 php 文件的行数:
find . -type f -name "*.php" -print0 | xargs -0 wc -l
Shell
查找所有的 jpg 文件,并且压缩它们:
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
Shell
xargs 其他应用
假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:
# cat url-list.txt | xargs wget -c
常用命令
全拼pwd: print work directory 打印当前目录 显示出当前工作目录的绝对路径
ps: process status(进程状态,类似于windows的任务管理器)
常用参数:-auxf
ps -auxf 显示进程状态
df: disk free 其功能是显示磁盘可用空间数目信息及空间结点信息。换句话说,就是报告在任何安装的设备或目录中,还剩多少自由的空间。
du: Disk usage
rpm:即RedHat Package Management,是RedHat的发明之一
rmdir:Remove Directory(删除目录)
rm:Remove(删除目录或文件)
cat: concatenate 连锁
cat file1file2>>file3 把文件1和文件2的内容联合起来放到file3中
insmod: install module,载入模块
ln -s : link -soft 创建一个软链接,相当于创建一个快捷方式
mkdir:Make Directory(创建目录)
touch: touch
man: Manual
su:Swith user(切换用户)
cd:Change directory
ls:List files
ps:Process Status
mkdir:Make directory
rmdir:Remove directory
mkfs: Make file system
fsck:File system check
uname: Unix name
lsmod: List modules
mv: Move file
rm: Remove file
cp: Copy file
ln: Link files
fg: Foreground
bg: Background
chown: Change owner
chgrp: Change group
chmod: Change mode
umount: Unmount
dd: 本来应根据其功能描述”Convert an copy”命名为”cc”,但”cc”已经被用以代表”CComplier”,所以命名为”dd”
tar:Tape archive (磁带档案)
ldd:List dynamic dependencies
insmod:Install module
rmmod:Remove module
lsmod:List module
文件结尾的”rc”(如.bashrc、.xinitrc等):Resource configuration
Knnxxx /Snnxxx(位于rcx.d目录下):K(Kill);S(Service);nn(执行顺序号);xxx(服务标识)
.a(扩展名a):Archive,static library
.so(扩展名so):Shared object,dynamically linked library
.o(扩展名o):Object file,complied result of C/C++ source file
RPM:Red hat package manager
dpkg:Debian package manager
apt:Advanced package tool(Debian或基于Debian的发行版中提供)
其他 Linux 命令缩写
bin = Binaries (二进制文件) /dev = Devices (设备) /etc = Etcetera (等等) /lib = LIBrary /proc = Processes /sbin = Superuser Binaries (超级用户的二进制文件) /tmp = Temporary (临时) /usr = Unix Shared Resources /var = Variable (变量) FIFO = First In, First Out GRUB = GRand Unified Bootloader IFS= Internal Field Seperators LILO = LInux LOader MySQL = My 是最初作者女儿的名字, SQL = Structured QueryLanguage PHP = Personal Home Page Tools = PHP HypertextPreprocessor PS = Prompt String Perl = “Pratical Extraction and Report Language”(实际的抽取和报告语言) =”Pathologically Eclectic Rubbish Lister” Python 得名于电视剧Monty Python’s Flying Circus Tcl = Tool Command Language Tk = ToolKit VT = Video Terminal YaST = Yet Another Setup Tool apache = “a patchy” server apt = Advanced Packaging Tool ar = archiver as = assembler awk = “Aho Weiberger and Kernighan”三个作者的姓的第一个字母 bash = Bourne Again SHell bc = Basic (Better) Calculator bg = BackGround biff = 作者HeidiStettner在U.C.Berkely养的一条狗,喜欢对邮递员汪汪叫。 cal = Calendar (日历) cat = Catenate (链接) cd = Change Directory chgrp = Change Group chmod = Change Mode chown = Change Owner chsh = Change Shell cmp = compare cobra = Common Object Request BrokerArchitecture comm = common cp = Copy cpio = CoPy In and Out cpp = C Pre Processor cron = Chronos 希腊文时间 cups = Common Unix Printing System cvs = Current Version System daemon = Disk And Execution MONitor dc = Desk Calculator dd = Disk Dump (磁盘转储) df = Disk Free diff = Difference dmesg = diagnostic message du = Disk Usage ed = editor egrep = Extended GREP elf = Extensible Linking Format elm = ELectronic Mail emacs = Editor MACroS eval = EVALuate ex = EXtended exec = EXECute (执行) fd = file descriptors fg = ForeGround fgrep = Fixed GREP fmt = format fsck = File System ChecK fstab = FileSystem TABle fvwm = F*** Virtual Window Manager gawk = GNU AWK gpg = GNU Privacy Guard groff = GNU troff hal = Hardware Abstraction Layer joe = Joe’s Own Editor ksh = Korn SHell lame = Lame Ain’t an MP3 Encoder lex = LEXical analyser lisp = LISt Processing = Lots of IrritatingSuperfluous Parentheses ln = Link lpr = Line PRint ls = list lsof = LiSt Open Files m4 = Macro processor Version 4 man = MANual pages mawk = Mike Brennan’s AWK mc = Midnight Commander mkfs = MaKe FileSystem mknod = Make Node motd = Message of The Day mozilla = MOsaic GodZILLa mtab = Mount TABle mv = Move nano = Nano’s ANOther editor nawk = New AWK nl = Number of Lines nm = names nohup = No HangUP nroff = New ROFF od = Octal Dump passwd = Passwd pg = pager pico = PIne’s message COmposition editor pine = “Program for Internet News &Email” = “Pine is not Elm” ping = 拟声 又 = Packet Internet Grouper pirntcap = PRINTer CAPability popd = POP Directory pr = pre printf = Print Formatted ps = Processes Status pty = pseudo tty pushd = PUSH Directory pwd = Print Working Directory rc = runcom = run command, rc还是plan9的shell rev = REVerse rm = ReMove rn = Read News roff = RunOFF rpm = RPM Package Manager = RedHat PackageManager rsh, rlogin, rvim中的 r = Remote rxvt = ouR XVT seamoneky = 我 sed = Stream Editor seq = SEQuence shar = Shell ARchive slrn = S-Lang rn ssh = Secure Shell ssl = Secure Sockets Layer stty = Set TTY su = Substitute User svn = SubVersion tar = Tape ARchive tcsh = TENEX C shell tee = T (T形水管接口) telnet = TEminaL over Network termcap = terminal capability terminfo = terminal information tex = τέχνη的缩写,希腊文art tr = traslate troff = Typesetter new ROFF tsort = Topological SORT tty = TeleTypewriter twm = Tom’s Window Manager tz = TimeZone udev = Userspace DEV ulimit = User’s LIMIT umask = User’s MASK uniq = UNIQue i = VIsual = Very Inconvenient vim = Vi IMproved wall = write all wc = Word Count wine = WINE Is Not an Emulator xargs = eXtended ARGuments xdm = X Display Manager xlfd = X Logical Font Description xmms = X Multimedia System xrdb = X Resources DataBase xwd = X Window Dump yacc = yet another compiler compiler Fish = the Friendly Interactive SHell su = Switch User MIME = Multipurpose Internet Mail Extensions ECMA = European Computer ManufacturersAssociation
Shell
本篇文章我们主要为大家介绍 AWK 是如何工作的。
AWK 工作流程可分为三个部分:
命令结构:
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
Shell
下面的流程图描述出了 AWK 的工作流程:
开始块(BEGIN)
开始块的语法格式如下:
BEGIN {awk-commands}
Shell
开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只执行一次。
一般情况下,我们可以在开始块中初始化一些变量。
BEGIN 是 AWK 的关键字,因此它必须是大写的。
**注意:**开始块部分是可选的,你的程序可以没有开始块部分。
主体块(BODY)
主体部分的语法格式如下:
/pattern/ {awk-commands}
Shell
对于每一个输入的行都会执行一次主体部分的命令。
默认情况下,对于输入的每一行,AWK 都会执行命令。但是,我们可以将其限定在指定的模式中。
注意:在主体块部分没有关键字存在。
结束块(END)
结束块的语法格式如下:
END {awk-commands}
Shell
结束块是在程序结束时执行的代码。 END 也是 AWK 的关键字,它也必须大写。 与开始块相似,结束块也是可选的。
先创建一个名为 marks.txt 的文件。其中包括序列号、学生名字、课程名称与所得分数。
1) 张三 语文 80
2) 李四 数学 90
3) 王五 英语 87
Shell
接下来,我们将使用 AWK 脚本来显示输出文件中的内容,同时输出表头信息。
$ awk 'BEGIN{printf "序号\t名字\t课程\t分数\n"} {print}' marks.txt
Shell
执行以上命令,输出结果如下:
序号 名字 课程 分数
1) 张三 语文 80
2) 李四 数学 90
3) 王五 英语 87
Shell
程序开始执行时,AWK 在开始块中输出表头信息。在主体块中,AWK 每读入一行就将读入的内容输出至标准输出流中,一直到整个文件被全部读入为止。
AWK 可以使用关联数组这种数据结构,索引可以是数字或字符串。
AWK关联数 组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。
数组使用的语法格式:
array_name[index]=value
Shell
创建数组
接下来看一下如何创建数组以及如何访问数组元素:
$ awk 'BEGIN {
sites["runoob"]="www.runoob.com";
sites["google"]="www.google.com"
print sites["runoob"] "\n" sites["google"]
}'
Shell
执行以上命令,输出结果为:
www.runoob.com
www.google.com
Shell
在上面的例子中,我们定义了一个站点(sites)数组,该数组的索引为网站英文简称,值为网站访问地址。可以使用如下格式访问数组元素:
array_name[index]
Shell
删除数组元素
我们可以使用 delete 语句来删除数组元素,语法格式如下:
delete array_name[index
Shell
下面的例子中,数组中的 google 元素被删除(删除命令没有输出):
$ awk 'BEGIN {
sites["runoob"]="www.runoob.com";
sites["google"]="www.google.com"
delete sites["google"];
print fruits["google"]
}'
Shell
多维数组
AWK 本身不支持多维数组,不过我们可以很容易地使用一维数组模拟实现多维数组。
如下示例为一个 3×3 的三维数组:
100 200 300
400 500 600
700 800 900
Shell
以上实例中,array[0][0] 存储 100,array[0][1] 存储 200 ,依次类推。为了在 array[0][0] 处存储 100, 我们可以使用如下语法:
array[“0,0”] = 100。
我们使用了 0,0 作为索引,但是这并不是两个索引值。事实上,它是一个字符串索引 0,0。
下面是模拟二维数组的例子:
$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# 输出数组元素
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'
Shell
执行上面的命令可以得到如下结果:
array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600
Shell
在数组上可以执行很多操作,比如,使用 asort 完成数组元素的排序,或者使用 asorti 实现数组索引的排序等等。
IF 语句
IF 条件语句语法格式如下:
if (condition)
action
Shell
也可以使用花括号来执行一组操作:
if (condition)
{
action-1
action-1
.
.
action-n
}
Shell
以下实例用来判断数字是奇数还是偶数:
$ awk 'BEGIN {num = 10; if (num % 2 == 0) printf "%d 是偶数\n", num }'
Shell
输出结果为:
10 是偶数
IF – ELSE 语句
IF – ELSE 条件语句语法格式如下:
if (condition)
action-1
else
action-2
Shell
在条件语句 condition 为 true 时只需 action-1,否则执行 action-2。
$ awk 'BEGIN {
num = 11;
if (num % 2 == 0) printf "%d 是偶数\n", num;
else printf "%d 是奇数\n", num
}'
Shell
输出结果为:
11 是奇数
Shell
IF – ELSE – IF
我们可以创建多个 IF – ELSE 格式的判断语句来实现多个条件的判断:
$ awk 'BEGIN {
a=30;
if (a==10)
print "a = 10";
else if (a == 20)
print "a = 20";
else if (a == 30)
print "a = 30";
}'
Shell
输出结果为:
a = 30
For
For 循环的语法如下:
for (initialisation; condition; increment/decrement)
action
Shell
for 语句首先执行初始化动作( initialisation ),然后再检查条件( condition )。如果条件为真,则执行动作( action ),然后执行递增( increment )或者递减( decrement )操作。只要条件为 true 循环就会一直执行。每次循环结束都会进条件检查,若条件为 false 则结束循环。
下面的例子使用 For 循环输出数字 1 至 5:
$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'
Shell
输出结果为:
1
2
3
4
5
Shell
While
While 循环的语法如下:
while (condition)
action
Shell
While 循环首先检查条件 condition 是否为 true ,若条件为 true 则执行动作 action。此过程一直重复直到条件 condition 为 flase 才停止。
下面是使用 While 循环输出数字 1 到 5 的例子:
$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'
Shell
输出结果为:
1
2
3
4
5
Shell
Break
break 用以结束循环:
在下面的示例子中,当计算的和大于 50 的时候使用 break 结束循环:
$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) break; else print "Sum =", sum
}
}'
Shell
输出结果为:
Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45
Shell
Continue
Continue 语句用于在循环体内部结束本次循环,从而直接进入下一次循环迭代。
下面的例子输出 1 到 20 之间的偶数:
$ awk 'BEGIN {for (i = 1; i <= 20; ++i) {if (i % 2 == 0) print i ; else continue} }'
Shell
输出结果为:
2
4
6
8
10
12
14
16
18
20
Shell
Exit
Exit 用于结束脚本程序的执行。
该函数接受一个整数作为参数表示 AWK 进程结束状态。 如果没有提供该参数,其默认状态为 0。
下面例子中当和大于 50 时结束 AWK 程序。
$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) exit(10); else print "Sum =", sum
}
}'
Shell
输出结果为:
Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45
Shell
让我们检查一下脚本执行后的返回状态:
$ echo $?
Shell
执行上面的命令可以得到如下的结果:
19
Shell
一个程序包含有多个功能,每个功能我们可以独立一个函数。
函数可以提高代码的复用性。
用户自定义函数的语法格式为:
function function_name(argument1, argument2, ...)
{
function body
}
Shell
解析:
以下实例我们实现了两个简单函数,它们分别返回两个数值中的最小值和最大值。我们在主函数 main 中调用了这两个函数。 文件 functions.awk 代码如下:
# 返回最小值 function find_min(num1, num2) { if (num1 < num2) return num1 return num2 } # 返回最大值 function find_max(num1, num2) { if (num1 > num2) return num1 return num2 } # 主函数 function main(num1, num2) { # 查找最小值 result = find_min(10, 20) print "Minimum =", result # 查找最大值 result = find_max(10, 20) print "Maximum =", result } # 脚本从这里开始执行 BEGIN { main(10, 20) }
Shell
执行 functions.awk 文件,可以得到如下的结果:
$ awk -f functions.awk
Minimum = 10
Maximum = 20
AWK 内置函数主要有以下几种:
算数函数
函数名 | 说明 | 实例 |
---|---|---|
atan2( y, x ) | 返回 y/x 的反正切。 | $ awk 'BEGIN { PI = 3.14159265 x = -10 y = 10 result = atan2 (y,x) * 180 / PI; printf "The arc tangent for (x=%f, y=%f) is %f degrees\n", x, y, result }' 输出结果为:The arc tangent for (x=-10.000000, y=10.000000) is 135.000000 degrees |
cos( x ) | 返回 x 的余弦;x 是弧度。 | $ awk 'BEGIN { PI = 3.14159265 param = 60 result = cos(param * PI / 180.0); printf "The cosine of %f degrees is %f.\n", param, result }' 输出结果为:The cosine of 60.000000 degrees is 0.500000. |
sin( x ) | 返回 x 的正弦;x 是弧度。 | $ awk 'BEGIN { PI = 3.14159265 param = 30.0 result = sin(param * PI /180) printf "The sine of %f degrees is %f.\n", param, result }' 输出结果为:The sine of 30.000000 degrees is 0.500000. |
exp( x ) | 返回 x 幂函数。 | $ awk 'BEGIN { param = 5 result = exp(param); printf "The exponential value of %f is %f.\n", param, result }' 输出结果为:The exponential value of 5.000000 is 148.413159. |
log( x ) | 返回 x 的自然对数。 | $ awk 'BEGIN { param = 5.5 result = log (param) printf "log(%f) = %f\n", param, result }' 输出结果为:log(5.500000) = 1.704748 |
sqrt( x ) | 返回 x 平方根。 | $ awk 'BEGIN { param = 1024.0 result = sqrt(param) printf "sqrt(%f) = %f\n", param, result }' 输出结果为:sqrt(1024.000000) = 32.000000 |
int( x ) | 返回 x 的截断至整数的值。 | $ awk 'BEGIN { param = 5.12345 result = int(param) print "Truncated value =", result }' 输出结果为:Truncated value = 5 |
rand( ) | 返回任意数字 n,其中 0 <= n < 1。 | $ awk 'BEGIN { print "Random num1 =" , rand() print "Random num2 =" , rand() print "Random num3 =" , rand() }' 输出结果为:Random num1 = 0.237788 Random num2 = 0.291066 Random num3 = 0.845814 |
srand( [Expr] ) | 将 rand 函数的种子值设置为 Expr 参数的值,或如果省略 Expr 参数则使用某天的时间。返回先前的种子值。 | $ awk 'BEGIN { param = 10 printf "srand() = %d\n", srand() printf "srand(%d) = %d\n", param, srand(param) }' 输出结果为:srand() = 1 srand(10) = 1417959587 |
字符串函数
函数 | 说明 | 实例 |
---|---|---|
gsub( Ere, Repl, [ In ] ) | gsub 是全局替换( global substitution )的缩写。除了正则表达式所有具体值被替代这点,它和 sub 函数完全一样地执行。 | $ awk 'BEGIN { str = "Hello, World" print "String before replacement = " str gsub("World", "Jerry", str) print "String after replacement = " str }' 输出结果为:String before replacement = Hello, World String after replacement = Hello, Jerry |
sub(regex,sub,string) | sub 函数执行一次子串替换。它将第一次出现的子串用 regex 替换。第三个参数是可选的,默认为 $0。 | $ awk 'BEGIN { str = "Hello, World" print "String before replacement = " str sub("World", "Jerry", str) print "String after replacement = " str }' 输出结果为:String before replacement = Hello, World String after replacement = Hello, Jerry |
substr(str, start, l) | substr 函数返回 str 字符串中从第 start 个字符开始长度为 l 的子串。如果没有指定 l 的值,返回 str 从第 start 个字符开始的后缀子串。 | $ awk 'BEGIN { str = "Hello, World !!!" subs = substr(str, 1, 5) print "Substring = " subs }' 输出结果为:Substring = Hello |
index( String1, String2 ) | 在由 String1 参数指定的字符串(其中有出现 String2 指定的参数)中,返回位置,从 1 开始编号。如果 String2 参数不在 String1 参数中出现,则返回 0(零)。 | $ awk 'BEGIN { str = "One Two Three" subs = "Two" ret = index(str, subs) printf "Substring \"%s\" found at %d location.\n", subs, ret }' 输出结果为:Substring "Two" found at 5 location. |
length [(String)] | 返回 String 参数指定的字符串的长度(字符形式)。如果未给出 String 参数,则返回整个记录的长度($0 记录变量)。 | $ awk 'BEGIN { str = "Hello, World !!!" print "Length = ", length(str) }' 输出结果为:Substring "Two" found at 5 location. |
blength [(String)] | 返回 String 参数指定的字符串的长度(以字节为单位)。如果未给出 String 参数,则返回整个记录的长度($0 记录变量)。 | |
substr( String, M, [ N ] ) | 返回具有 N 参数指定的字符数量子串。子串从 String 参数指定的字符串取得,其字符以 M 参数指定的位置开始。M 参数指定为将 String 参数中的第一个字符作为编号 1。如果未指定 N 参数,则子串的长度将是 M 参数指定的位置到 String 参数的末尾 的长度。 | $ awk 'BEGIN { str = "Hello, World !!!" subs = substr(str, 1, 5) print "Substring = " subs }' 输出结果为:Substring = Hello |
match( String, Ere ) | 在 String 参数指定的字符串(Ere 参数指定的扩展正则表达式出现在其中)中返回位置(字符形式),从 1 开始编号,或如果 Ere 参数不出现,则返回 0(零)。RSTART 特殊变量设置为返回值。RLENGTH 特殊变量设置为匹配的字符串的长度,或如果未找到任何匹配,则设置为 -1(负一)。 | $ awk 'BEGIN { str = "One Two Three" subs = "Two" ret = match(str, subs) printf "Substring \"%s\" found at %d location.\n", subs, ret }' 输出结果为:Substring "Two" found at 5 location. |
split( String, A, [Ere] ) | 将 String 参数指定的参数分割为数组元素 A[1], A[2], . . ., A[n],并返回 n 变量的值。此分隔可以通过 Ere 参数指定的扩展正则表达式进行,或用当前字段分隔符(FS 特殊变量)来进行(如果没有给出 Ere 参数)。除非上下文指明特定的元素还应具有一个数字值,否则 A 数组中的元素用字符串值来创建。 | $ awk 'BEGIN { str = "One,Two,Three,Four" split(str, arr, ",") print "Array contains following values" for (i in arr) { print arr[i] } }' 输出结果为:Array contains following values One Two Three Four |
tolower( String ) | 返回 String 参数指定的字符串,字符串中每个大写字符将更改为小写。大写和小写的映射由当前语言环境的 LC_CTYPE 范畴定义。 | $ awk 'BEGIN { str = "HELLO, WORLD !!!" print "Lowercase string = " tolower(str) }' 输出结果为:Lowercase string = hello, world !!! |
toupper( String ) | 返回 String 参数指定的字符串,字符串中每个小写字符将更改为大写。大写和小写的映射由当前语言环境的 LC_CTYPE 范畴定义。 | $ awk 'BEGIN { str = "hello, world !!!" print "Uppercase string = " toupper(str) }' 输出结果为:Uppercase string = HELLO, WORLD !!! |
sprintf(Format, Expr, Expr, . . . ) | 根据 Format 参数指定的 printf 子例程格式字符串来格式化 Expr 参数指定的表达式并返回最后生成的字符串。 | $ awk 'BEGIN { str = sprintf("%s", "Hello, World !!!") print str }' 输出结果为:Hello, World !!! |
strtonum(str) | strtonum 将字符串 str 转换为数值。 如果字符串以 0 开始,则将其当作十进制数;如果字符串以 0x 或 0X 开始,则将其当作十六进制数;否则,将其当作浮点数。 | $ awk 'BEGIN { print "Decimal num = " strtonum("123") print "Octal num = " strtonum("0123") print "Hexadecimal num = " strtonum("0x123") }' 输出结果为:Decimal num = 123 Octal num = 83 Hexadecimal num = 291 |
**注:**Ere 部分可以是正则表达式。
1、gsub、sub 使用
$ awk 'BEGIN{info="this is a test2012test!";gsub(/[0-9]+/,"||",info);print info}'
this is a test||test!
Shell
2、查找字符串(index 使用)
使用了三元运算符: 表达式 ? 动作1 : 动作2
$ awk 'BEGIN{info="this is a test2012test!";print index(info,"11111")?"ok":"no found";}'
no found
$ awk 'BEGIN{info="this is a test2012test!";print index(info,"is")?"ok":"no found";}'
ok
$ awk 'BEGIN{info="this is a test2012test!";print index(info,"test")?"ok":"no found";}'
ok
Shell
3、正则表达式匹配查找(match 使用)
$ awk 'BEGIN{info="this is a test2012test!";print match(info,/[0-9]+/)?"ok":"no found";}'
ok
Shell
4、截取字符串(substr使用)
从第 4 个 字符开始,截取 10 个长度字符串。
$ awk 'BEGIN{info="this is a test2012test!";print substr(info,4,10);}'
s is a tes
Shell
5、字符串分割(split使用)
$ awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}'
4
2 is
3 a
4 test
1 this
Shell
分割 info,将 info 字符串使用空格切分为动态数组 tA。注意 awk for …in 循环,是一个无序的循环。 并不是从数组下标 1…n ,因此使用时候需要特别注意。
6、格式化字符串输出(sprintf使用)
其中格式化字符串包括两部分内容: 一部分是正常字符,这些字符将按原样输出; 另一部分是格式化规定字符, 以 % 开始, 后跟一个或几个规定字符,用来确定输出内容格式。 需要特别注意的是使用 printf 时默认是不会换行的,而 print 函数默认会在每行后面加上 \n 换行符。
格式符 | 说明 |
---|---|
%d | 十进制有符号整数 |
%u | 十进制无符号整数 |
%f | 浮点数 |
%s | 字符串 |
%c | 单个字符 |
%p | 指针的值 |
%e | 指数形式的浮点数 |
%x | %X 无符号以十六进制表示的整数 |
%o | 无符号以八进制表示的整数 |
%g | 自动选择合适的表示法 |
$ awk 'BEGIN{n1=124.113;n2=-1.224;n3=1.2345; printf("%.2f,%.2u,%.2g,%X,%o\n",n1,n2,n3,n1,n1);}'
124.11,4294967295,1.2,7C,174
$ awk 'BEGIN{n1=124.113;n2=-1.224;n3=1.2645; printf("%.2f,%.2u,%.2g,%X,%o\n",n1,n2,n3,n1,n1);}'
124.11,4294967295,1.3,7C,174
Shell
**注:**看上面的 n3 输出值会发现,在使用 printf 处理时一个比较智能的功能是可以进行四舍五入保留小数点位的。
时间函数
函数名 | 说明 | 实例 |
---|---|---|
mktime( YYYY MM DD HH MM SS[ DST]) | 生成时间格式 | $ awk 'BEGIN { print "Number of seconds since the Epoch = " mktime("2014 12 14 30 20 10") }' 输出结果为:Number of seconds since the Epoch = 1418604610 |
strftime([format [, timestamp]]) | 格式化时间输出,将时间戳转为时间字符串 具体格式,见下表. | $ awk 'BEGIN { print strftime("Time = %m/%d/%Y %H:%M:%S", systime()) }' 输出结果为:Time = 12/14/2014 22:08:42 |
systime() | 得到时间戳,返回从1970年1月1日开始到当前时间(不计闰年)的整秒数 | awk 'BEGIN{now=systime();print now}' 输出结果为:1343210982 |
strftime 日期和时间格式说明符:
序号 | 描述 |
---|---|
%a | 星期缩写(Mon-Sun)。 |
%A | 星期全称(Monday-Sunday)。 |
%b | 月份缩写(Jan)。 |
%B | 月份全称(January)。 |
%c | 本地日期与时间。 |
%C | 年份中的世纪部分,其值为年份整除100。 |
%d | 十进制日期(01-31) |
%D | 等价于 %m/%d/%y. |
%e | 日期,如果只有一位数字则用空格补齐 |
%F | 等价于 %Y-%m-%d,这也是 ISO 8601 标准日期格式。 |
%g | ISO8610 标准周所在的年份模除 100(00-99)。比如,1993 年 1 月 1 日属于 1992 年的第 53 周。所以,虽然它是 1993 年第 1 天,但是其 ISO8601 标准周所在年份却是 1992。同样,尽管 1973 年 12 月 31 日属于 1973 年但是它却属于 1994 年的第一周。所以 1973 年 12 月 31 日的 ISO8610 标准周所在的年是 1974 而不是 1973。 |
%G | ISO 标准周所在年份的全称。 |
%h | 等价于 %b. |
%H | 用十进制表示的 24 小时格式的小时(00-23) |
%I | 用十进制表示的 12 小时格式的小时(00-12) |
%j | 一年中的第几天(001-366) |
%m | 月份(01-12) |
%M | 分钟数(00-59) |
%n | 换行符 (ASCII LF) |
%p | 十二进制表示法(AM/PM) |
%r | 十二进制表示法的时间(等价于 %I:%M:%S %p)。 |
%R | 等价于 %H:%M。 |
%S | 时间的秒数值(00-60) |
%t | 制表符 (tab) |
%T | 等价于 %H:%M:%S。 |
%u | 以数字表示的星期(1-7),1 表示星期一。 |
%U | 一年中的第几个星期(第一个星期天作为第一周的开始),00-53 |
%V | 一年中的第几个星期(第一个星期一作为第一周的开始),01-53。 |
%w | 以数字表示的星期(0-6),0表示星期日 。 |
%W | 十进制表示的一年中的第几个星期(第一个星期一作为第一周的开始),00-53。 |
%x | 本地日期表示 |
%X | 本地时间表示 |
%y | 年份模除 100。 |
%Y | 十进制表示的完整年份。 |
%z | 时区,表示格式为+HHMM(例如,格式要求生成的 RFC 822或者 RFC 1036 时间头) |
%Z | 时区名称或缩写,如果时区待定则无输出。 |
位操作函数
函数名 | 说明 | 实例 |
---|---|---|
and | 位与操作。 | $ awk 'BEGIN { num1 = 10 num2 = 6 printf "(%d AND %d) = %d\n", num1, num2, and(num1, num2) }' 输出结果为:(10 AND 6) = 2 |
compl | 按位求补。 | $ awk 'BEGIN { num1 = 10 printf "compl(%d) = %d\n", num1, compl(num1) }' 输出结果为:compl(10) = 9007199254740981 |
lshift | 左移位操作 | $ awk 'BEGIN { num1 = 10 printf "lshift(%d) by 1 = %d\n", num1, lshift(num1, 1) }' 输出结果为:lshift(10) by 1 = 20 |
rshift | 右移位操作 | $ awk 'BEGIN { num1 = 10 printf "rshift(%d) by 1 = %d\n", num1, rshift(num1, 1) }' 输出结果为:rshift(10) by 1 = 5 |
or | 按位或操作 | $ awk 'BEGIN { num1 = 10 num2 = 6 printf "(%d OR %d) = %d\n", num1, num2, or(num1, num2) }' 输出结果为:(10 OR 6) = 14 |
xor | 按位异或操作 | $ awk 'BEGIN { num1 = 10 num2 = 6 printf "(%d XOR %d) = %d\n", num1, num2, xor(num1, num2) }' 输出结果为:(10 bitwise xor 6) = 12 |
其他函数
函数名 | 说明 | 实例 |
---|---|---|
close(expr) | 关闭管道的文件 | $ awk 'BEGIN { cmd = "tr [a-z] [A-Z]" print "hello, world !!!" |& cmd close(cmd, "to") cmd |& getline out print out; close(cmd); }' 输出结果为:HELLO, WORLD !!! 第一条语句 cmd = “tr [a-z] [A-Z]” 在 AWK 中建立了一个双向的通信通道。第二条语句 print 为 tr 命令提供输入。&| 表示双向通信。第三条语句 close(cmd, “to”) 完成执行后关闭 to 进程。第四条语句 cmd |& getline out 使用 getline 函数将输出存储到 out 变量中。接下来的输出语句打印输出的内容,最后 close 函数关闭 cmd。 |
delete | 用于从数组中删除元素 | $ awk 'BEGIN { arr[0] = "One" arr[1] = "Two" arr[2] = "Three" arr[3] = "Four" print "Array elements before delete operation:" for (i in arr) { print arr[i] } delete arr[0] delete arr[1] print "Array elements after delete operation:" for (i in arr) { print arr[i] } }' 输出结果为:Array elements before delete operation: One Two Three Four Array elements after delete operation: Three Four |
exit | 终止脚本执行,它可以接受可选的参数 expr 传递 AWK 返回状态。 | $ awk 'BEGIN { print "Hello, World !!!" exit 10 print "AWK never executes this statement." }' 输出结果为:Hello, World !!! |
flush | 刷新打开文件或管道的缓冲区 | |
getline | 读入下一行 | 使用 getline 从文件 marks.txt 中读入一行并输出:$ awk '{getline; print $0}' marks.txt ,AWK 从文件 marks.txt 中读入一行存储到变量 0 中。在下一条语句中,我们使用 getline 读入下一行。因此AWK读入第二行并存储到 0 中。最后,AWK 使用 print 输出第二行的内容。这个过程一直到文件结束。 |
next | 停止处理当前记录,并且进入到下一条记录的处理过程。 | 当模式串匹配成功后程序并不执行任何操作:$ awk '{if ($0 ~/Shyam/) next; print $0}' marks.txt |
nextfile | 停止处理当前文件,从下一个文件第一个记录开始处理。 | 首先创建两个文件。 file1.txt 内容如下:file1:str1 file1:str2 file1:str3 file1:str4 文件 file2.txt 内容如下:file2:str1 file2:str2 file2:str3 file2:str4 现在我们来测试 nextfile 函数。$ awk '{ if ($0 ~ /file1:str2/) nextfile; print $0 }' file1.txt file2.txt 输出结果为:file1:str1 file2:str1 file2:str2 file2:str3 file2:str4 |
return | 从用户自定义的函数中返回值。请注意,如果没有指定返回值,那么的返回值是未定义的。 | 创建文件 functions.awk,内容如下:function addition(num1, num2) { result = num1 + num2 return result } BEGIN { res = addition(10, 20) print "10 + 20 = " res } 执行该文件:$ awk -f functions.awk 10 + 20 = 30 |
system | 执行特定的命令然后返回其退出状态。返回值为 0 表示命令执行成功;非 0 表示命令执行失败。 | $ awk 'BEGIN { ret = system("date"); print "Return value = " ret }' 输出结果为:Sun Dec 21 23:16:07 IST 2014 Return value = 0 |
Awk 有几个非常强力的内置变量.通常来说,分为两种类型的内置变量: – 第一种是定义的变量可以改变, 比如字段分隔(FS)与记录分隔(RS) – 第二种是可以用来数据处理或者数据总结,比如记录数(NR)与字段数目(NF) 文中 介绍了: FS,OFS, RS, ORS, NR, NR, FNR
FS: 输入字段分隔符变量
FS(Field Separator) 读取并解析输入文件中的每一行时,默认按照空格分隔为字段变量,$1,$2…等。FS 变量被用来设置每一记录的字段分隔符号。FS 可以是任意的字符串或者正则表达式.你可以使用下面两种方式来声名FS:
使用 -F 命令选项
作为设置为普通变量使用
语法:
$ awk -F 'FS' 'commands' inputfilename
或者
$ awk 'BEGIN{FS="FS";}'
Shell
FS 可以是任意字符或者正则表达式
FS 可以多次改变, 不过会保持不变直到被明确修改。不过如果想要改变字段分隔符, 最好是在读入文本之前就改变 FS, 这样改变才会在你读入的文本生效。
下面是一个使用 FS 读取 /etc/passwd 以 : 作为分隔符的例子
$ cat etc_passwd.awk
BEGIN{
FS=":";
print "Name\tUserID\tGroupID\tHomeDirectory";
}
{
print $1"\t"$3"\t"$4"\t"$6;
}
END {
print NR,"Records Processed";
}
Shell
使用结果:
$ awk -f etc_passwd.awk /etc/passwd
Name UserID GroupID HomeDirectory
gnats 41 41 /var/lib/gnats
libuuid 100 101 /var/lib/libuuid
syslog 101 102 /home/syslog
hplip 103 7 /var/run/hplip
avahi 105 111 /var/run/avahi-daemon
saned 110 116 /home/saned
pulse 111 117 /var/run/pulse
gdm 112 119 /var/lib/gdm
8 Records Processed
Shell
OFS: 输出字段分隔符变量
OFS(Output Field Separator) 相当与输出上的 FS, 默认是以一个空格字符作为输出分隔符的,下面是一个 OFS 的例子:
$ awk -F':' '{print $3,$4;}' /etc/passwd
41 41
100 101
101 102
103 7
105 111
110 116
111 117
112 119
Shell
注意命令中的 print 语句的, 表示的使用一个空格连接两个参数,也就是默认的OFS的值。因此 OFS 可以像下面那样插入到输出的字段之间:
$ awk -F':' 'BEGIN{OFS="=";} {print $3,$4;}' /etc/passwd
41=41
100=101
101=102
103=7
105=111
110=116
111=117
112=11
Shell
RS: 记录分隔符
RS(Record Separator)定义了一行记录。读取文件时,默认将一行作为一条记录。 下面的例子以 student.txt 作为输入文件,记录之间用两行空行分隔,并且每条记录的每个字段用一个换行符分隔:
$ cat student.txt Jones 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 65 Edwin 2537 78 67 45 Dayan 2415 30 47 20
Shell
然后下面的脚本就会从student.txt输出两项内容:
$ cat student.awk
BEGIN {
RS="\n\n";
FS="\n";
}
{
print $1,$2;
}
$ awk -f student.awk student.txt
Jones 2143
Gondrol 2321
RinRao 2122
Edwin 2537
Dayan 2415
Shell
在 student.awk 中,把每个学生的详细信息作为一条记录, 这是因为RS(记录分隔符)是被设置为两个换行符。并且因为 FS (字段分隔符)是一个换行符,所以一行就是一个字段。
ORS: 输出记录分隔符变量
ORS(Output Record Separator)顾名思义就相当与输出的 RS。 每条记录在输出时候会用分隔符隔开,看下面的 ORS 的例子:
$ awk 'BEGIN{ORS="=";} {print;}' student-marks
Jones 2143 78 84 77=Gondrol 2321 56 58 45=RinRao 2122 38 37 65=Edwin 2537 78 67 45=Dayan 2415 30 47 20=
Shell
上面的脚本,输入文件的每条记录被 = 分隔开。 附:student-marks 便是上面的输出.
NR: 记录数变量
NR(Number of Record) 表示的是已经处理过的总记录数目,或者说行号(不一定是一个文件,可能是多个)。下面的例子,NR 表示行号,在 END 部分,NR 就是文件中的所有记录数目。
$ awk '{print "Processing Record - ",NR;}END {print NR, "Students Records are processed";}' student-marks
Processing Record - 1
Processing Record - 2
Processing Record - 3
Processing Record - 4
Processing Record - 5
5 Students Records are processed
Shell
NF:一条记录的记录数目
NF(Number for Field)表示的是,一条记录的字段的数目. 它在判断某条记录是否所有字段都存在时非常有用。 让我们观察 student-mark 文件如下:
$ cat student-marks
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37
Edwin 2537 78 67 45
Dayan 2415 30 47
Shell
接着下面的Awk程序,打印了记录数(NR),以及该记录的字段数目: 因此可以非常容易的发现那些数据丢失了。
$ awk '{print NR,"->",NF}' student-marks
1 -> 5
2 -> 5
3 -> 4
4 -> 5
5 -> 4
Shell
FILENAME: 当前输入文件的名字
FILENAME 表示当前正在输入的文件的名字。 AWK 可以接受读取很多个文件去处理。看下面的例子:
$ awk '{print FILENAME}' student-marks
student-marks
student-marks
student-marks
student-marks
student-marks
Shell
在输入的文件的每一条记录都会输出该名字。
FNR: 当前输入文件的记录数目
当awk读取多个文件时,NR 代表的是当前输入所有文件的全部记录数,而 FNR 则是当前文件的记录数。如下面的例子:
$ awk '{print FILENAME, "FNR= ", FNR," NR= ", NR}' student-marks bookdetails
student-marks FNR= 1 NR= 1
student-marks FNR= 2 NR= 2
student-marks FNR= 3 NR= 3
student-marks FNR= 4 NR= 4
student-marks FNR= 5 NR= 5
bookdetails FNR= 1 NR= 6
bookdetails FNR= 2 NR= 7
bookdetails FNR= 3 NR= 8
bookdetails FNR= 4 NR= 9
bookdetails FNR= 5 NR= 10
Shell
附: bookdetails 与 student-marks 内容一样,作例子. 可以看出来 NR 与 FNR 的区别。
经常使用 NR 与 FNR 结合来处理两个文件,比如有两个文件:
$ cat a.txt
李四|000002
张三|000001
王五|000003
赵六|000004
$ cat b.txt
000001|10
000001|20
000002|30
000002|15
000002|45
000003|40
000003|25
000004|60
Shell
如果想作对应的话, 比如张三|000001|10
$ awk -F '|' 'NR == FNR{a[$2]=$1;} NR>FNR {print a[$1],"|", $0}' a.txt b.txt
张三 | 000001|10
张三 | 000001|20
李四 | 000002|30
李四 | 000002|15
李四 | 000002|45
王五 | 000003|40
王五 | 000003|25
赵六 | 000004|60
英文原文:http://www.thegeekstuff.com/2010/01/8-powerful-awk-built-in-variables-fs-ofs-rs-ors-nr-nf-filename-fnr/
译文 :http://shomy.top/2016/05/05/trans-8-powerful-awk-built-in-variables/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。