命令总结之系统篇
- 更新时间:2017年6月11日
-由于资料过多可能会分很多篇章
alias
功能说明:设置命令的别名。
语 法:alias[别名]=[指令名称]
参 数 :若不加任何参数,则列出目前所有的别名设置
说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。
[root@localhost ~]# alias ty=ls #为ls设置别名
[root@localhost ~]# ty -al #别名
总用量 5
drwxr-xr-x 4 tnak tnak 4096 4月 27 14:20 .
drwxr-xr-x 4 root root 4096 4月 27 12:34 ..
-rw-r--r-- 1 root root 255 4月 26 12:44 abc.sh
drwxr-xr-x 2 root root 4096 4月 26 13:44 ar_test
[root@localhost ~]# alias yy='ls -ar' #设置别名,可以是命令带参数
unalias
unalias
功能说明:删除别名。
语 法:unalias [-a][别名]
参 数:
-a 删除全部的别名
[root@localhost ~]# unalias ty #删除别名
[root@localhost ~]# database]$ unalias -a #删除全部的别名
bc
bc 命令:Linux简单的计算器,能进行进制转换与计算。能转换的进制包括十六进制、十进制、八进制、二进制等。可以使用的运算符号包括(+)加法、(-)减法、(*)乘法、(/)除法、(^)指数、(%)余数
参数
-h, --help
帮助
-i, --interactive
强制交互模式
-l, --mathlib
加载强大的数学库
-w, --warn
发出警告
-s, --standard
严格按照posix bc标准
-q, --quiet
不输出任何信息
-v, --version
查看版本
互动式的数学运算
[root@localhost ~]# 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'.
4+5 #加
9
34%7 #求余
6
7^2+1.09*12 #比较复杂一点的数学运算
62.08
quit #退出
互动式的进制换算
[root@localhost ~]# 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'.
obase=16 #16进制
14
E
obase=7 #7进制
10
13
9
12
quit
非互动式的运算
[root@localhost ~]# echo "1+1" |bc #加法
2
[root@localhost ~]# echo 'obase=2; 12'|bc #转换成2进制
1100
[root@localhost ~]# echo 'obase=2; 5^2'|bc #运算结果转换成2进制
11001
[root@localhost ~]# echo 'obase=2; ibase=9; 2301'|bc #9进制转换成2进制
11010100110
chvt
chvt - 修改虚拟终端的前台环境,Ctrl+Alt+Fn ,这个n就是你要切换的虚拟终端的号,然后可以再按Ctrl+Alt+F7回到图形界面
[root@localhost ~]# chvt 1 #想切换到tty1,也就是一号终端
[root@localhost ~]# chvt 7 #回到桌面
clock . hwclock
clock 命令:设置或者显示硬件时间的近似值
必要参数
--adjust 自动调整硬件时钟时间
--debug 运行时,输出详细的处理过程
--directisa 不通过设备文件/etc/rtc,直接对硬件时钟进行存取
--getepoch 输出硬件时钟的数值到标准输出
--hctosys 时钟同步,使系统时钟和硬件时钟同步
--se--date 设置硬件时间
--show 显示硬件时钟到标准输出
--systohc 系统时间写入硬件时钟
--test 进行测试
--utc 将硬件时钟的时间设置为UTC
选择参数
-setepoch-epoch=<年份> 设置硬件时钟的年份
--version 显示版本信息
[root@localhost ~]# clock #显示硬件时钟时间
2013年05月04日 星期六 14时24分37秒 -0.019069 seconds
[root@localhost ~]# clock --utc #显示utc硬件时钟时间
2013年05月04日 星期六 22时24分50秒 -0.000655 seconds
[root@localhost ~]# clock --set --date="05/04/2013 14:30:01" #设置硬件时钟时间
[root@localhost ~]# clock
2013年05月04日 星期六 14时30分06秒 -0.000904 seconds
df
- df - 报告文件系统磁盘空间的使用情况 \
[root@localhost ~]# df #列出各文件系统的磁盘空间使用情况
[root@localhost ~]# df -ia #列出各文件系统ionde使用情况
[root@localhost ~]# df -T #列出文件系统的类型
[root@localhost ~]# df -h #目前磁盘空间和使用情况 以更易读的方式显示
[root@localhost ~]# df -k #以单位显示磁盘的使用情况
[root@localhost ~]# df -h --total #显示所有文件系统的磁盘使用情况汇总
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 356G 45G 293G 14% /
tmpfs 3.9G 68K 3.9G 1% /dev/shm
/dev/sda1 485M 40M 420M 9% /boot
/dev/mapper/VolGroup-lv_home 84G 27G 54G 33% /home
/dev/mapper/VolGroup-mytest 15G 166M 14G 2% /mnt/mytest
total 459G 72G 365G 17%
[root@localhost ~]# df -t ext4 #显示ext4系统类型的信息
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root 373083968 47049784 307086592 14% /
/dev/sda1 495844 40339 429905 9% /boot
/dev/mapper/VolGroup-lv_home 87730488 27407812 55866232 33% /home
/dev/mapper/VolGroup-mytest 15481840 169460 14525948 2% /mnt/mytest
[root@localhost ~]# df -x ext3 #打印除 ext3 外所有的文件系统
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root 373083968 47049796 307086580 14% /
tmpfs 3988852 68 3988784 1% /dev/shm
/dev/sda1 495844 40339 429905 9% /boot
/dev/mapper/VolGroup-lv_home 87730488 27407812 55866232 33% /home
/dev/mapper/VolGroup-mytest 15481840 169460 14525948 2% /mnt/mytest
dirname
- 显示指定路径除了文件名之外的路径前缀
[root@localhost ~]#dirname /home/tank/test.bz2
/home/tank
date
- 打印或设置系统日期和时间
根据指定格式显示当前时间或设置系统时间.
-d, --date=STRING
显示由 STRING 指定的时间, 而不是当前时间
-f, --file=DATEFILE
显示 DATEFILE 中每一行指定的时间, 如同将 DATEFILE 中的每行作为 --date 的参数一样
-I, --iso-8601[=TIMESPEC] 按照 ISO-8601 的日期/时间格式输出时间.
TIMESPEC=`date' (或者不指定时)仅输出日期,等于 `hours', `minutes', 或`seconds' 时按照指定精度输出日期及时间.
-r, --reference=FILE
显示 FILE 的最后修改时间
-R, --rfc-822
根据 RFC-822 指定格式输出日期
-s, --set=STRING
根据 STRING 设置时间
-u, --utc, --universal
显示或设置全球时间(格林威治时间)
--help
显示本帮助文件并退出
--version
显示版本信息并退出
格式 FORMAT 控制着输出格式. 仅当选项指定为全球时间时本格式才有效。 分别解释如下:
%%
文本的 %
%a
当前区域的星期几的简写 (Sun..Sat)
%A
当前区域的星期几的全称 (不同长度) (Sunday..Saturday)
%b
当前区域的月份的简写 (Jan..Dec)
%B
当前区域的月份的全称(变长) (January..December)
%c
当前区域的日期和时间 (Sat Nov 04 12:02:33 EST 1989)
%d
(月份中的)几号(用两位表示) (01..31)
%D
日期(按照 月/日期/年 格式显示) (mm/dd/yy)
%e
(月份中的)几号(去零表示) ( 1..31)
%h
同 %b
%H
小时(按 24 小时制显示,用两位表示) (00..23)
%I
小时(按 12 小时制显示,用两位表示) (01..12)
%j
(一年中的)第几天(用三位表示) (001..366)
%k
小时(按 24 小时制显示,去零显示) ( 0..23)
%l
小时(按 12 小时制显示,去零表示) ( 1..12)
%m
月份(用两位表示) (01..12)
%M
分钟数(用两位表示) (00..59)
%n
换行
%p
当前时间是上午 AM 还是下午 PM
%r
时间,按 12 小时制显示 (hh:mm:ss [A/P]M)
%s
从 1970年1月1日0点0分0秒到现在历经的秒数 (GNU扩充)
%S
秒数(用两位表示)(00..60)
%t
水平方向的 tab 制表符
%T
时间,按 24 小时制显示(hh:mm:ss)
%U
(一年中的)第几个星期,以星期天作为一周的开始(用两位表示) (00..53)
%V
(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (01..52)
%w
用数字表示星期几 (0..6); 0 代表星期天
%W
(一年中的)第几个星期,以星期一作为一周的开始(用两位表示) (00..53)
%x
按照 (mm/dd/yy) 格式显示当前日期
%X
按照 (%H:%M:%S) 格式显示当前时间
%y
年的后两位数字 (00..99)
%Y
年(用 4 位表示) (1970...)
%z
按照 RFC-822 中指定的数字时区显示(如, -0500) (为非标准扩充)
%Z
时区(例如, EDT (美国东部时区)), 如果不能决定是哪个时区则为空
默认情况下,用 0 填充数据的空缺部分. GNU 的 date 命令能分辨在 `%'和数字指示之间的以下修改.
`-' (连接号) 不进行填充 `_' (下划线) 用空格进行填充
[root@localhost ~]#date #显示日期和时间
2013年 05月 04日 星期六 14:35:33 CST
[root@localhost ~]# date -s '14:35:40' #设置时间
2013年 05月 04日 星期六 14:35:40 CST
[root@localhost ~]# date +%m%d%H%M%S
0819150511
[root@localhost ~]#date 0819150511
Fri Aug 19 15:05:00 EST 2011
#date -s //设置当前时间,只有root权限才能设置,其他只能查看。
#date -s 20061010 //设置成20061010,这样会把具体时间设置成空00:00:00
#date -s 12:23:23 //设置具体时间,不会对日期做更改
#date -s "12:12:23 2006-10-10″ //这样可以设置全部时间
[root@localhost ~]#date -d "20150305" +%s #时间转时间戳
1425484800
[root@localhost ~]# date -d '1970-01-01 UTC 1425484800 seconds' #时间戳转时间
2015年 03月 05日 星期四 00:00:00 CST
[root@localhost ~]# date +%Y%m%d #获取当前日期格式为yyyymmdd
20150410
[root@localhost ~]# date -d "1 day ago" +"%Y%m%d" #获取前一天的日期格式为yyyymmdd
20150409
# date +%Y%m%d #显示前天年月日
# date +%Y%m%d --date="+1 day" #显示前一天的日期
# date +%Y%m%d --date="-1 day" #显示后一天的日期
# date +%Y%m%d --date="-1 month" #显示上一月的日期
# date +%Y%m%d --date="+1 month" #显示下一月的日期
# date +%Y%m%d --date="-1 year" #显示前一年的日期
# date +%Y%m%d --date="+1 year" #显示下一年的日期
# date -s #设置当前时间,只有root权限才能设置,其他只能查看。
# date -s 20080523 #设置成20080523,这样会把具体时间设置成空00:00:00
# date -s 01:01:01 #设置具体时间,不会对日期做更改
# date -s “01:01:01 2008-05-23″ #这样可以设置全部时间
# date -s “01:01:01 20080523″ #这样可以设置全部时间
# date -s “2008-05-23 01:01:01″ #这样可以设置全部时间
# date -s “20080523 01:01:01″ #这样可以设置全部时间
# date -d "2015-11-15 23:00:01"
Mon Nov 15 23:00:01 PST 2015
# date -d "2015/11/15 23:0:2"
Mon Nov 15 23:00:02 PST 2015
# date -d "2015/11/15T23:0:2"
Mon Nov 15 08:00:02 PST 2015
# echo "2015-11-15 23:00:01" > date.txt
# echo "2015/11/15 23:00:02" >> date.txt
# cat date.txt
2015-11-15 23:00:01
2015/11/15 23:00:02
# date -f date.txt
Mon Nov 15 23:00:01 PST 2015
Mon Nov 15 23:00:02 PST 2015
# date -r date.txt
Mon Nov 15 21:14:36 PST 2015
# date -I
2015-11-15
# date -Ihours
2015-11-15T21-0800
# date -Iminutes
2015-11-15T21:16-0800
# date -Iseconds
2015-11-15T21:16:24-0800
# date -R
Mon, 15 Nov 2015 21:47:08 -0800
# date -u
Tue Nov 16 05:47:13 UTC 2015
# date +"Today is %A."
Today is Monday.
# date +"Date:%b. %e, %G"
Date:Nov. 15, 2015
# date +"Date: %b.%e, %G"
Date: Nov.15, 2015
# date +"%x %X"
11/15/2015 09:50:21 PM
# date +"%Y-%m-%d %H:%M:%S"
2015-11-15 21:51:32
# date +"%Y-%m-%d %I:%M:%S %p"
2015-11-15 09:51:55 PM
echo
- 显示一行文本
[root@localhost ~]#echo "11111" #输出11111
[root@localhost ~]#echo -n "11111" #输出11111,不带尾部回车
/home/test/etc> echo The back-up files are: *.bak #可以使用模式匹配,通配符,正则匹配
The back-up files are: 0001.bak 0028.bak 0085.bak 0111.bak
[root@localhost ~]# echo -e "a\nb\nc"
a
b
c
enable
enable命令Shell内建命令 enable命令用于临时关闭或者激活指定的shell内部命令。若要执行的文件名称与shell内建命令相同,可用enable -n来关闭shell内建命令。若不加-n选项,enable可重新启动关闭的命令
linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令。因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable命令我们就能做到了
参数:
-n:关闭指定的内部命令;
-a:显示所有激活的内部命令;
-f:从指定文件中读取内部命令。
[root@localhost ~]# enable -a #显示所有激活的内部命令
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
exit
- 各种退出
[root@localhost ~]# exit #退出当前用户,返回上一个用户
exit
[root@localhost ~]#
logout
- 用户退出系统,其功能和login命令对应
[root@localhost ~]# logout
free
命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存
-b 显示内存的单位为字节
-k 显示内存的单位为 KB
-m 显示内存的单位为 M
-o 忽略缓冲区调节列
-t 总和信息
-s<时间> 每隔指定时间执行一次命令,单位为s
-h 以可读形式显示容量,需要free -V显示版本大于3.3
-V 版本信息
[root@localhost ~]#free -s 3 #每3秒执行一次
total used free shared buffers cached
Mem: 508176 353360 154816 0 63580 231656
-/+ buffers/cache: 58124 450052
Swap: 521212 0 521212
total used free shared buffers cached
Mem: 508176 353368 154808 0 63580 231656
-/+ buffers/cache: 58132 450044
Swap: 521212 0 521212
^C
[root@localhost ~]# free -m #以M为单位
total used free shared buffers cached
Mem: 496 345 151 0 62 226
-/+ buffers/cache: 56 439
Swap: 508 0 508
[root@localhost ~]# free -k #以K为单位
total used free shared buffers cached
Mem: 508176 353360 154816 0 63580 231656
-/+ buffers/cache: 58124 450052
Swap: 521212 0 521212
[root@localhost ~]#free -h
total used free shared buffers cached
Mem: 7.8G 6.6G 1.1G 0B 88M 3.7G
-/+ buffers/cache: 2.8G 4.9G
Swap: 7.8G 0B 7.8G
hostname
- 用来显示或者设置当前系统的主机名,主机名被许多网络程序使用,来标识主机。
-a,--alias
显示主机的别名(如果使用了的话).
-d,--domain
显示DNS域名.不要使用命令 domainname 来获得DNS域名,因为这会显示NIS域名而非DNS域名.可使用 dnsdomainname 替换之.
-F,--file filename
从指定文件中读取主机名.注释(以一个`#'开头的行)可忽略.
-f,--fqdn,--long
显示FQDN(完全资格域名).一个FQDN包括一个短格式主机名和DNS域名.除非你正在使用bind或 者NIS来作主机查询,否则你可以在/etc/hosts文件中修改FQDN和DNS域名(这是FQDN的一 部分).
-h,--help
打印用法信息并退出.
-i,--ip-address
显示主机的IP地址(组).
-n,--node
显示DECnet节点名.如果指定了参数(或者指定了 --file name ),那么root也可以设置一个新的节点名.
-s,--short
显示短格式主机名.这是一个去掉第一个圆点后面部分的主机名.
-V,--version
在标准输出上打印版本信息并以成功的状态退出.
-v,--verbose
详尽说明并告知所正在执行的.
-y,--yp,--nis
显示NIS域名.如果指定了参数(或者指定了 --file name ),那么root也可以设置一个新的NIS域.
[root@localhost ~]#hostname #显示主机名
hnlinux
[root@localhost ~]#hostname -s #显示短主机名
localhost
[root@localhost ~]# hostname -a #显示主机别名
localhost
[root@localhost ~]#hostname -i #显示主机IP地址
127.0.0.1
[root@localhost ~]#hostname -d #显示主机域名
localdomain
[root@localhost ~]#hostname -y #显示NIS/YP域名
(none)
[root@localhost ~]#hostname apple #设置主机名称
[root@localhost ~]#hostname
apple
hexdump
可用参数
[-bcCdovx] [-e format_string] [-f format_file] [-n length] [-s skip] file ...
参数含义
-b 单字节八进制显示,十六进制显示偏移量,每行显示16个字符,每字符用三位显示,不足补零,列间以空格分隔
-c 单字节字符显示,十六进制显示偏移量,每行显示16个字符,每字符三位显示,不足补空格,列间以空格分隔
-C 标准十六进制+ascii码显示,十六进制显示偏移量,每行16个字符,每字符两位显示,不足补0,结尾显示当前16位数据的ascii码值,以|框住
-d 双字节十进制显示,十六进制显示偏移量,每行8组(16字节)每组5位,不足补零,列间以空格分隔,以无符号10进制数值显示
-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"'
-f 根据format file中的格式进行输出,忽略formatfile中空行及以#开始的行会
-n length 只显示length个字节的数据
-o 双字节八进制显示。十六进制显示偏移量,每行8组数据,每数据占两字节,6列,不足补零,以空格分隔
-s offset 跳过从开始的offset个字节,默认输入十进制,以0x或0X开始按16进制处理,否则如以0开始按八进制处理,如果以b/k/m结尾,则原数值乘以512/1024/1048576
-v 显示所有数据,如果不包含这一选项,对于同上一行完全相同的数据,hexdump会以*代替显示
-x 两位十六进制显示.十六进制显示偏移量,每行8组数据,每数据占两字节,4列,不足补零,以空格分隔
每个格式字符串由三部分组成,每个由空格分隔,第一个形如a/b,b表示对每b个输入字节应用format1格式,a表示对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。format1和format2中可以使用类似printf的格式字符串,如:
%02d:两位十进制
%03x:三位十六进制
%02o:两位八进制
%c:单个字符等
还有一些特殊的用法:
%_ad:标记下一个输出字节的序号,用十进制表示
%_ax:标记下一个输出字节的序号,用十六进制表示
%_ao:标记下一个输出字节的序号,用八进制表示
%_p:对不能以常规字符显示的用.代替
同一行如果要显示多个格式字符串,则可以跟多个-e选项
[root@localhost ~]#echo /etc/passwd | hexdump
0000000 652f 6374 702f 7361 7773 0a64
000000c
[root@localhost ~]#echo /etc/passwd | od -x
0000000 652f 6374 702f 7361 7773 0a64
0000014
[root@localhost ~]#echo /etc/passwd | xxd
0000000: 2f65 7463 2f70 6173 7377 640a /etc/passwd.
[root@localhost ~]#echo /etc/passwd | hexdump -C #规范的十六进制和ASCII码显示
00000000 2f 65 74 63 2f 70 61 73 73 77 64 0a |/etc/passwd.|
0000000c
[root@localhost ~]#echo /etc/passwd | hexdump -b #单字节八进制显示
0000000 057 145 164 143 057 160 141 163 163 167 144 012
000000c
[root@localhost ~]#echo /etc/passwd | hexdump -c #单字节字符显示
0000000 / e t c / p a s s w d \n
000000c
[root@localhost ~]#echo /etc/passwd | hexdump -d #双字节十进制显示
0000000 25903 25460 28719 29537 30579 02660
000000c
[root@localhost ~]# echo /etc/passwd | hexdump -o #双字节八进制显示
0000000 062457 061564 070057 071541 073563 005144
000000c
[root@localhost ~]#echo /etc/passwd | hexdump -x #双字节十六进制显示
0000000 652f 6374 702f 7361 7773 0a64
000000c
[root@localhost ~]#echo /etc/passwd | hexdump -v
0000000 652f 6374 702f 7361 7773 0a64
000000c
history
- history 命令可以用来显示曾执行过的命令,也可以根据显示的治疗来重新执行需要的命令
n 显示n个最近的记录
-a 添加记录
-r 读取记录,但不会添加内容记录
-w 覆盖原有的history 文件
-c 清除记录
-d<编号>[n] 删除指定n条记录
-n<文件> 读取指定文件
-r<文件> 读取文件但不记录
-w<文件> 覆盖原有文件
[root@localhost ~]# history #查看所有执行过的命令
1 ls
2 pwd
3 fc -l
4 history
[root@localhost ~]# history 2 #显示2条
4 history
5 history 2
[root@localhost ~]#!4 #执行编号是4的命令,注意感叹号
history
1 ls
2 pwd
3 fc -l
4 history
5 history 2
6 history
[root@localhost ~]# history -c #清除历史记录
!$ 引用前一个命令的最后一个参数
[root@localhost ~]#ls -all
总用量 1060
drwxrwxr-x. 15 tank tank 4096 8月 6 16:26 .
drwx------. 60 tank tank 4096 8月 15 16:13 ..
-rw-r--r-- 1 root root 2466 7月 23 18:02 1.html
drwxr-xr-x 7 tank tank 4096 7月 17 03:02 ckeditor
drwxr-xr-x. 2 tank tank 4096 5月 29 00:08 database
[tank@localhost workspace]$ !$ #取得-all
-all
bash: -all: command not found
[root@localhost ~]# ! -N #执行倒数第N条命令
[root@localhost ~]#!! #执行上一条命令
hash
- hash 命令:用来显示和清除哈希表,执行命令的时候,系统将先查询哈希表。
必要参数
-l 显示哈希表
-r 清除哈希表
-d<名称> 清除哈希表
-p<路径> 向哈希表中增加内容
-t<命令> 显示命令的完整路径
[root@localhost ~]#hash -l #显示哈希表
builtin hash -p /usr/sbin/fbset fbset
builtin hash -p /bin/df df
builtin hash -p /usr/bin/quota quota
builtin hash -p /usr/bin/du du
builtin hash -p /sbin/e2fsck e2fsck
builtin hash -p /bin/uname uname
builtin hash -p /bin/ls ls
[root@localhost ~]#hash -t df #显示df命令的完整路径
/bin/df
[root@localhost ~]#hash -p /usr/bin/halt halt #向哈希表中增加 halt
[root@localhost ~]#hash -r #清空hash表
[root@localhost ~]#hash
hits command
7 /usr/bin/ldd
2 /usr/bin/last
4 /sbin/chkconfig
1 /bin/sh
1 /bin/uname
4 /bin/ls
lscpu
- 查看 CPU 信息
主要参数:
-h, --help 显示帮助信息
-p, --parse <list> 打印出可读的格式,而不是一个可解析格式
-s, --sysroot <dir> 指定系统根目录
-x, --hex 打印十六进制数
[root@localhost ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Stepping: 9
CPU MHz: 1600.000
BogoMIPS: 6786.67
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
lsblk
- 列出所有的块设备,而且还能显示他们之间的依赖关系
参数:
-a, --all 显示所有设备
-b, --bytes 以bytes方式显示设备大小
-d, --nodeps 不显示 slaves 或 holders
-D, --discard print discard capabilities
-e, --exclude <list> 排除设备 (default: RAM disks)
-f, --fs 显示文件系统信息
-h, --help 显示帮助信息
-i, --ascii use ascii characters only
-m, --perms 显示权限信息
-l, --list 使用列表格式显示
-n, --noheadings 不显示标题
-o, --output <list> 输出列
-P, --pairs 使用key="value"格式显示
-r, --raw 使用原始格式显示
-t, --topology 显示拓扑结构信息
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 232.9G 0 disk
├─sda1 8:1 0 46.6G 0 part /
├─sda2 8:2 0 1K 0 part
├─sda5 8:5 0 190M 0 part /boot
├─sda6 8:6 0 3.7G 0 part [SWAP]
├─sda7 8:7 0 93.1G 0 part /data
└─sda8 8:8 0 89.2G 0 part /personal
sr0 11:0 1 1024M 0 rom
ntpdate
- 使用网络计时协议(NTP)设置日期和时间。此命令仅应用于 AIX 4.2 或后期版本
语法:
ntpdate [ -b] [ -d] [ -s] [ -u] [ -aKeyid] [ -eAuthenticationDelay] [ -kKeyFile] [ -oVersion] [ -pSamples] [ -tTimeOut] Server...
描述:
通过轮询指定的确定正确时间的 NTP 服务器, ntpdate 命令设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NTP 时钟过滤器和选择算法来选择最好的样本。
此 ntpdate 命令使用以下方法进行时间调整:
如果它确定时钟偏差超过 0.5 秒,它通过调用 settimeofday 子例程设置时钟时间。在引导时间,这是一个首选的方法。
如果它确定时钟偏差小于 0.5 秒,它通过调用 adjtime 子例程和偏移量来调整时钟时间。此方法倾向于用牺牲一些稳定性来保持漂移时钟更加准确。 当不是通过运行一个守护程序而是从 cron 命令有规则的运行 ntpdate 命令时,每一小时或两小时执行一次可以保证足够的走时精度,从而避免调整时钟。
注意事项:
使用很多服务器可以大幅度改善 ntpdate 命令的可靠性与精度。尽管能使用单一服务器,但您能通过提供至少三个或四个服务器以获得更好的性能。
如果一个类似 xntpd 守护程序的 NTP 服务器守护程序正在同一主机上运行,命令将拒绝 ntpdate 设置日期。
你必须有 root 权限才能在主机上运行这个命令。
参数:
-aKeyid 使用 Keyid 来认证全部数据包。
-b 通过调用 settimeofday 子例程来增加时钟的时间。
-d 指定调试方式。判断 ntpdate 命令会产生什么结果(不产生实际的结果)。结果再现在屏幕上。这个标志使用无特权的端口。
-eAuthenticationDelay 指定延迟认证处理的时间秒数。
-kKeyFile 当不使用缺省值 /etc/ntp.keys 文件时,为包含密钥的文件指定一个不同的名称。 请参阅文件KeyFile的描述。
-oVersion 当轮询它的发出数据包时,指定使用的 NTP 版本实现。 Version 的值可以是 1,2,3。缺省值是 3。
-pSamples 指定从每个服务器获取的样本的数目。 Samples 的值在 1 和 8 之间,并包括 1 和 8。它的缺省值是 4。
-s 指定日志操作 syslog 设施的使用,而不是使用标准输出。 当运行 ntpdate 命令和 cron 命令时,它是很有用的。
-tTimeOut 指定等待响应的时间。给定 TimeOut 的值四舍五入为 0.2 秒的倍数。缺省值是 1 秒。
-u 指定使用无特权的端口发送数据包。 当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。防火墙是一个系统或者计算机,它控制从外网对专用网的访问。
[root@localhost ~]# ntpdate time.twc.weather.com #同步时间
4 Jun 14:31:53 ntpdate[20219]: step time server 65.212.71.102 offset -127.017619 sec
nc
- 功能说明:功能强大的网络工具
语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参 数:
-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
端口扫描
[root@localhost ~]# nc -v -w 2 192.168.1.34 -z 21-24
nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused
Connection to 192.168.2.34 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused
传文件
[root@localhost ~]# nc -l 1234 > test.txt #192.168.1.10
[root@ubuntu zhangy]# nc 192.168.2.34 < test.txt #192.168.1.11
简单聊天工具
[root@localhost ~]# nc -l 1234 #192.168.1.10 开启端口
[root@localhost ~]#nc 192.168.2.34 1234 #192.168.1.11连接端口
建立从本地1234端口到host.example.com的80端口连接,5秒超时
[root@localhost ~]# nc -p 1234 -w 5 blog.51yip.com 80
u为UDP连接
[root@localhost ~]# nc -u 192.168.1.102 53
模拟HTTP Headers
[root@localhost ~]# nc blog.51yip.com 80
rz
- 工具说明
在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件. 对于RHEL5, rz/sz默认没有安装所以需要手工安装.
sz: 将选定的文件发送(send)到本地机器;
rz:运行该命令会弹出一个文件选择窗口, 从本地选择文件上传到服务器(receive).
下载安装包lrzsz-0.12.20.tar.gz: http://www.ohse.de/uwe/software/lrzsz.html
2) 软件安装
首先通过sftp工具把安装文件上传到/tmp目录下.
# cd /tmp
# tar zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20
# ./configure && make && make install
上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下, 下面创建软链接, 并命名为rz/sz:
# cd /usr/bin
# ln -s /usr/local/bin/lrz rz
# ln -s /usr/local/bin/lsz sz
3) 使用说明
打开SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录; 然后在用SecureCRT登陆linux终端的时候:
# sz filename (发送文件到客户端,zmodem接收可以自行启动)
# rz (从客户端上传文件到linux服务端)
ssh
- ssh 用于登录远程主机, 并且在远程主机上执行命令. 它的目的是替换 rlogin 和 rsh, 同时在不安全的网络之上, 两个互不 信任的主机之间, 提供加密的, 安全的通信连接. X11 连接和任意 TCP/IP 端口均可以通过此安全通道转发(forward).当用户通过 连接并登录主机 hostname 后, 根据所用的协议版本, 用户必须通过下述方法之一向远程主机证明他/她的身份:
参数
-a
禁止转发认证代理的连接.
-A
允许转发认证代理的连接. 可以在配置文件中对每个主机单独设定这个参数.
代理转发须谨慎. 某些用户能够在远程主机上绕过文件访问权限 (由于代理的 UNIX 域 socket), 他们可以通过转发的连接访问本地代理. 攻击者不可能从代理获得密钥内容, 但是他们能够操作这些密钥, 利用加载到代理上 的身份信息通过认证.
-b bind_address
在拥有多个接口或地址别名的机器上, 指定收发接口.
-c blowfish|3des|des
选择加密会话的密码术. 3des 是默认算法. 3des (triple-des) 用三支不同的密钥做加密-解密-加密三次运算, 被认为比较可靠. blowfish 是一种快速的分组加密术(block cipher), 非常安全, 而且速度比 3des 快的多. des 仅支持 客户端, 目的是能够和老式的不支持 3des 的协议第一版互操作. 由于其密码算法上的弱点, 强烈建议避免使用.
-c cipher_spec
另外, 对于协议第二版, 这里可以指定一组用逗号隔开, 按优先顺序排列的密码术. 详见 Ciphers
-e ch|^ch|none
设置 pty 会话的 escape 字符 (默认字符: `~' ) . escape 字符只在行首有效, escape 字符后面跟一个点 (`.' ) 表示结束连接, 跟一个 control-Z 表示挂起连接(suspend), 跟 escape 字符自己 表示输出这个字符. 把这个字符设为 ``none 则禁止 escape 功能, 使会话完全透明.
-f
要求 在执行命令前退至后台. 它用于当 准备询问口令或密语, 但是用户希望它在后台进行. 该选项隐含了 -n 选项. 在远端机器上启动 X11 程序的推荐手法就是类似于 ssh -f host xterm 的命令.
-g
允许远端主机连接本地转发的端口.
-i identity_file
指定一个 RSA 或 DSA 认证所需的身份(私钥)文件. 默认文件是协议第一版的 $HOME/.ssh/identity 以及协议第二版的 $HOME/.ssh/id_rsa 和 $HOME/.ssh/id_dsa 文件. 也可以在配置文件中对每个主机单独指定身份文件. 可以同时使用多个 -i 选项 (也可以在配置文件中指定多个身份文件).
-I smartcard_device
指定智能卡(smartcard)设备. 参数是设备文件, 能够用它和智能卡通信, 智能卡里面存储了用户的 RSA 私钥.
-k
禁止转发 Kerberos 门票和 AFS 令牌. 可以在配置文件中对每个主机单独设定这个参数.
-l login_name
指定登录远程主机的用户. 可以在配置文件中对每个主机单独设定这个参数.
-m mac_spec
另外, 对于协议第二版, 这里可以指定一组用逗号隔开, 按优先顺序排列的 MAC(消息验证码)算法 (message authentication code). 详情以 MACs 为关键字查询.
-n
把 stdin 重定向到 /dev/null (实际上防止从 stdin 读取数据). 在后台运行时一定会用到这个选项. 它的常用技巧是远程运行 X11 程序. 例如, ssh -n shadows.cs.hut.fi emacs 将会在 shadows.cs.hut.fi 上启动 emacs, 同时自动在加密通道中转发 X11 连接. 在后台运行. (但是如果 要求口令或密语, 这种方式就无法工作; 参见 -f 选项.)
-N
不执行远程命令. 用于转发端口. (仅限协议第二版)
-o option
可以在这里给出某些选项, 格式和配置文件中的格式一样. 它用来设置那些没有命令行开关的选项.
-p port
指定远程主机的端口. 可以在配置文件中对每个主机单独设定这个参数.
-q
安静模式. 消除所有的警告和诊断信息.
-s
请求远程系统激活一个子系统. 子系统是 SSH2 协议的一个特性, 能够协助 其他应用程序(如 sftp)把SSH用做安全通路. 子系统通过远程命令指定.
-t
强制分配伪终端. 可以在远程机器上执行任何全屏幕(screen-based)程序, 所以非常有用, 例如菜单服务. 并联的 -t 选项强制分配终端, 即使 没有本地终端.
-T
禁止分配伪终端.
-v
冗详模式. 使 打印关于运行情况的调试信息. 在调试连接, 认证和配置问题时非常有用. 并联的 -v 选项能够增加冗详程度. 最多为三个.
-x
禁止 X11 转发.
-X
允许 X11 转发. 可以在配置文件中对每个主机单独设定这个参数.
应该谨慎使用 X11 转发. 如果用户在远程主机上能够绕过文件访问权限 (根据用户的X授权数据库), 他就可以通过转发的连接访问本地 X11 显示器. 攻击者可以据此采取行动, 如监视键盘输入等.
-C
要求进行数据压缩 (包括 stdin, stdout, stderr 以及转发 X11 和 TCP/IP 连接 的数据). 压缩算法和 gzip(1) 的一样, 协议第一版中, 压缩级别 ``level 用 CompressionLevel 选项控制. 压缩技术在 modem 线路或其他慢速连接上很有用, 但是在高速网络上反而 可能降低速度. 可以在配置文件中对每个主机单独设定这个参数. 另见 Compression 选项.
-F configfile
指定一个用户级配置文件. 如果在命令行上指定了配置文件, 系统级配置文件 (/etc/ssh/ssh_config ) 将被忽略. 默认的用户级配置文件是 $HOME/.ssh/config
-L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-D port
指定一个本地机器 ``动态的 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.
-1
强制 只使用协议第一版.
-2
强制 只使用协议第二版.
-4
强制 只使用 IPv4 地址.
-6
强制 只使用 IPv6 地址.
[root@localhost ~]#ssh 192.168.1.108 #当前用户登录远程主机
[root@localhost ~]#ssh 192.168.1.108 -l tank #以tank用户登录远程主机
[root@localhost ~]#ssh tank@192.168.1.108 -p 2222 #指定端口登录
[root@localhost ~]#ssh -D 7575 tank@192.168.1.108 #通过代理登录
[root@localhost ~]#ssh 192.168.1.2 date #远程执行命令
Sun Jul 29 14:07:32 EDT 2001
[root@localhost ~]#ssh-copy-id -i .ssh/id_rsa.pub 10.90.0.136 #发送公钥
source
- source 命令:常用于重新执行刚修改的初始化文件。如/etc/profile , bash_profile, bashrc?通过 source命令 在不重启的情况下生效。
source 又称:“点命令”是一个点符号。如: abc env?来执行脚本
[root@localhost ~]# source /etc/profile #执行/etc/profile文件
shred
- 用法:shred [选项]... 文件...
长选项必须使用的参数对于短选项时也是必需使用的。
-f, --force 必要时修改权限以使目标可写
-n, --iterations=N 覆盖N 次,而非使用默认的3 次
--random-source=文件 从指定文件中取出随机字节
-s, --size=N 粉碎数据为指定字节的碎片(可使用K、M 和G 作为单位)
-u, --remove 覆盖后截断并删除文件
-v, --verbose 显示详细信息
-x, --exact 不将文件大小增加至最接近的块大小
-z, --zero 最后一次使用0 进行覆盖以隐藏覆盖动作
--help 显示此帮助信息并退出
--version 显示版本信息并退出
[root@localhost ~]# shred test.sh #粉碎文件
[root@localhost ~]#shred -u test.sh #粉碎文件,并删除
strace
- -c 统计每一系统调用的所执行的时间,次数和出错的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-h 输出简要的帮助信息.
-i 输出系统调用的入口指针.
-q 禁止输出关于脱离的消息.
-r 打印出相对时间关于,,每一个系统调用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级.
-ttt 微秒级输出,以秒了表示时间.
-T 显示每一调用所耗的时间.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制形式输出非标准字符串
-xx 所有字符串以十六进制形式输出.
-a column
设置返回值的输出位置.默认 为40.
-e expr
指定一个表达式,用来控制如何跟踪.格式如下:
[qualifier=][!]value1[,value2]...
qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:
-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none.
注意有些shell使用!来执行历史记录里的命令,所以要使用\\.
-e trace=set
只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
-e trace=file
只跟踪有关文件操作的系统调用.
-e trace=process
只跟踪有关进程控制的系统调用.
-e trace=network
跟踪与网络有关的所有系统调用.
-e strace=signal
跟踪所有与系统信号有关的 系统调用
-e trace=ipc
跟踪所有与进程通讯有关的系统调用
-e abbrev=set
设定 strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all.
-e raw=set
将指 定的系统调用的参数以十六进制显示.
-e signal=set
指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号.
-e read=set
输出从指定文件中读出 的数据.例如:
-e read=3,5
-e write=set
输出写入到指定文件中的数据.
-o filename
将strace的输出写入文件filename
-p pid
跟踪指定的进程pid.
-s strsize
指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
-u username
以username 的UID和GID执行被跟踪的命令
[root@localhost ~]#strace -o output.txt -T -tt -e trace=all -p 28979
上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
[root@localhost ~]#strace -f -F -o ~/dcop-strace.txt dcopserver
这里 -f -F选项告诉strace同时跟踪fork和vfork出来的进程,-o选项把所有strace输出写到~/dcop-strace.txt里 面,dcopserver是要启动和调试的程序。再次出现错误之后,我检查了错误输出文件dcop-strace.txt,文件里有很多 系统调用的记录。
[root@localhost ~]#strace -o whoami-strace.txt whoami #帮助查看库依赖问题
open("/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/i686/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686/mmx", 0xbffff190) = -1 ENOENT (No such file or directory)
open("/lib/i686/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686", 0xbffff190) = -1 ENOENT (No such file or directory)
open("/lib/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/mmx", 0xbffff190) = -1 ENOENT (No such file or directory)
open("/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib", {st_mode=S_IFDIR|0755, st_size=2352, ...}) = 0
open("/usr/lib/i686/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/i686/mmx", 0xbffff190) = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
如果你已经知道你要找什么,你可以让strace只跟踪一些类型的系统调用。例如,你需要看看在configure脚本里面执行的程序,你需要监视的系统调 用就是execve。让strace只记录execve的调用用这个命令:
[root@localhost ~]#strace -f -o configure-strace.txt -e execve ./configure
startx
- 启动图形界面
[root@www ~]# startx #进入图形界面
screen
[root@localhost ~]#screen #创建一个screen会话
[root@localhost ~]#screen -S test #创建一个带名字的screen会话,并且attached模式
[root@localhost ~]#screen -dm test1 #并默认是detached模式,也就是建好之后不会连上去。
[root@localhost ~]#screen -d -r test2 #结束当前screen并回到test2这个screen
[root@localhost ~]#screen -ls #查看所有会话
There are screens on:
8504.test2 (Detached)
8010..hatch (Detached)
8060.test1 (Detached)
6275.test (Attached)
6199.pts-3.hatch (Detached)
5 Sockets in /var/run/screen/S-root.
[root@localhost ~]#screen -r 8060(or test1) #恢复到以前的离线screen进程
[root@localhost ~]# Ctrl+a+d #按Ctrl+a,然后再按d即可保留Screen
[detached] #这时会显示出这个提示,说明已经保留好Screen了
[root@localhost ~]#exit #如果你工作完成的话,这样就表示成功退出了
[screen is terminating]
[root@localhost ~]# Ctrl+a+n #下一个screen 会话
[root@localhost ~]# Ctrl+a+p #上一个screen 会话
[root@localhost ~]# Ctrl+a+c #创建新的screen 会话
shutdown
[root@localhost ~]#shutdown –h now #关机
[root@localhost ~]#shutdown –h 23:00 #晚上11点关机
[root@localhost ~]#shutdown –r now #重启
[root@localhost ~]#shutdown –r +30 'reboot now' #30分钟后重启,并且提示reboot now
tty
用法:tty [选项]...
[root@localhost ~]# tty #显示当前终端
/dev/pts/4
time
[root@localhost ~]#time [options] COMMAND [arguments]
[root@localhost ~]# time ls -al #查看执行ls -al所要的时间
type
type 命令被用于判断另外一个命令是否是内置命令
主要参数:
-a 显示一个名字的所有可能
-t 判断一个名字当前是否是alias、keyword、function、builtin、file
-p 查看一个外部命令的执行路径
-P 查看内部命令路径
[root@localhost ~]#type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
[root@localhost ~]#type httpd
httpd is /usr/sbin/httpd
[root@localhost ~]#type -at ls
alias
file
[root@localhost ~]#type -t ls
alias
[root@localhost ~]#type httpd
httpd is /usr/sbin/httpd
[root@localhost ~]#type -p nginx
/usr/sbin/nginx
[root@localhost ~]#type -P kill
/bin/kill
xargs
- xargs 又称管道命令,构造参数等。是给命令传递参数的一个过滤器,也是组合多个命令的一个工具 它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理 。简单的说 就是把 其他命令的给它的数据 传递给它后面的命令作为参数
主要参数
-i 用 {} 代替 传递的数据
-I string 用string来代替传递的数据-n[数字] 设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-P n 允许的最大线程数量为n
-s[大小] 设置传递参数的最大字节数(小于131072字节)
-x 大于 -s 设置的最大长度结束 xargs命令执行
[root@localhost ~]#ls |grep .php |xargs -i mv {} {}.bak #将当前目录下php文件,改名字
[root@localhost ~]#ls |grep .php |xargs -I {} mv {} {}.bak #与上例相同
[root@localhost ~]#find ./ -name "*.tmp" | xargs -i rm -rf {} #删除当前文件夹下的,tmp文件
which
- 查找环境变量中的文件
-a 查找全部内容,而非第一个文件
-n <文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p <文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
[root@localhost ~]# which find
/usr/bin/find
whereis
- 命令的语法:whereis [-bmsu] [BMS 目录名 -f ] 文件名
whereis命令的各选项含义如下:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径
[root@localhost ~]# whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx /usr/share/man/man3/nginx.3pm.gz
whatis
- 命令是用于查询一个命令执行什么功能,并将查询结果打印到终端上。
whatis命令在用catman -w命令创建的数据库中查找command参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令
[root@localhost fastdfs]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
uname
- 用法:uname [选项]...
输出一组系统信息,如果不跟随选项,则视为只附加-s 选项。
-a, --all 以如下次序输出所有信息。其中若-p 和
-i 的探测结果不可知则被省略:
-s, --kernel-name 输出内核名称
-n, --nodename 输出网络节点上的主机名
-r, --kernel-release 输出内核发行号
-v, --kernel-version 输出内核版本
-m, --machine 输出主机的硬件架构名称
-p, --processor 输出处理器类型或"unknown"
-i, --hardware-platform 输出硬件平台或"unknown"
-o, --operating-system 输出操作系统名称
[root@localhost ~]# uname -a #显示系统信息
Linux localhost.localdomain 2.6.18-238.12.1.el5 #1 SMP Tue May 31 13:23:01 EDT 2011 i686 i686 i386 GNU/Linux
[root@localhost ~]# uname -m #显示系统类型,一般情况下,i386,i686是32位系统,X86,X86_64是64位系统
i686
[root@localhost ~]# uname -n #查看主机名
localhost.localdomain
[root@localhost ~]# uname
Linux
init
- init是Linux系统操作中不可缺少的程序之一。
所谓的init进程,它是一个由内核启动的用户级进程。
内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)
# 0 - 停机(千万不能把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 - 没有用到
# 5 - X11 (xwindow)
# 6 - 重新启动 (千万不要把initdefault 设置为6 )
这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于
/etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)
[root@localhost ~]#init 0 #关机
[root@localhost ~]#init 6 #重启
yum
- yum 命令:用于添加/删除/更新RPM包,自动解决包的依赖问题以及系统更新升级
参数
-e 静默执行
-t 忽略错误
-R[分钟] 设置等待时间
-y 自动应答yes
--skip-broken 忽略依赖问题
--nogpgcheck 忽略GPG验证
check-update 检查可更新的包
clearn 清除全部
clean packages 清除临时包文件(/var/cache/yum 下文件)
clean headers 清除rpm头文件
clean oldheaders 清除旧的rpm头文件
deplist 列出包的依赖
list 可安装和可更新的RPM包
list installed 已安装的包
list extras 已安装且不在资源库的包
info 可安装和可更新的RPM包 信息
info installed 已安装包的信息(-qa 参数相似)
install[RPM包] 安装包
localinstall 安装本地的 RPM包
update[RPM包] 更新包
upgrade 升级系统
search[关键词] 搜索包
provides[关键词] 搜索特定包文件名
reinstall[RPM包] 重新安装包
repolist 显示资源库的配置
resolvedep 指定依赖
remove[RPM包] 卸载包
安装
[root@localhost ~]# yum install php53 #安装php5.3
[root@localhost ~]# yum groupinstall "MySQL Server" #安装mysql数据库组
更新和升级
[root@localhost ~]# yum update #全部更新
[root@localhost ~]# yum update php53 #更新php
[root@localhost ~]# yum check-update #检查可更新的程序
[root@localhost ~]# yum upgrade php53 #升级php53
[root@localhost ~]# yum groupupdate "MySQL Server" #升级mysql服务组
查找和显示
[root@localhost ~]# yum info php53 #查看php53的安装信息
[root@localhost ~]# yum list #列出所有可安装的程序包
[root@localhost ~]# yum list php53 #列出所有php53的程序包
[root@localhost ~]# yum groupinfo "MySQL Server" #查看mysql服务组的,相关安装包
[root@localhost ~]# yum deplist php53 #查看php53依赖情况
删除
[root@localhost ~]# yum remove php53 #删除php53
[root@localhost ~]# yum groupremove "MySQL Server" #删除mysql服务组
清除缓存
[root@localhost ~]# yum clean packages #清除缓存目录下的软件包
[root@localhost ~]# yum clean headers #清除缓存目录下的 headers
[root@localhost ~]# yum clean oldheaders #清除缓存目录下旧的 headers
[root@localhost ~]# yum clean, yum clean all #清除所有
[root@localhost ~]# yum search iftop #搜索安装包
[root@localhost ~]# yum history #查看历史记录,然后根据Id可以用undo撤销指定的yum操作
Loaded plugins: fastestmirror, priorities, security
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
12 | root | 2016-04-29 15:01 | Install | 1
11 | root | 2016-04-29 14:54 | O, U | 3
10 | root | 2016-01-11 14:44 | Install | 1
9 | root | 2015-12-29 10:06 | Install | 1 <
8 | root | 2015-06-01 19:02 | Install | 10 >
7 | root | 2015-06-01 18:46 | Install | 1
6 | root | 2015-06-01 17:38 | Install | 1
5 | root | 2015-06-01 17:32 | I, U | 21
4 | root | 2015-06-01 17:19 | I, U | 33
3 | root | 2015-06-01 17:16 | I, U | 64
2 | root | 2015-06-01 17:14 | Install | 1 <
1 | System | 2015-06-01 16:10 | Install | 776 >
[root@localhost ~]# yum makecache #生成缓存
[root@localhost ~]# yum provides */rz
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
local/filelists_db | 6.3 MB 00:00 ...
lrzsz-0.12.20-27.1.el6.x86_64 : The lrz and lsz modem communications programs
Repo : local
匹配来自于:
Filename : /usr/bin/rz
rpm
- rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。以下的例子都以example-1.2.3-1.i386.rpm代表对象软件包的名称
参数与选项
一、安装选项
命令格式:
rpm -i ( or --install) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 将要安装的RPM包的文件名
详细选项:
-h (or --hash) 安装时输出hash记号 (``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项
-v 显示附加信息
-vv 显示更加详细的信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安
装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
二、删除选项
命令格式:
rpm -e ( or --erase) options pkg1 ... pkgN
参数
pkg1 ... pkgN :要删除的软件包
详细选项
--test 只执行删除的测试
--noscripts 不运行预安装和后安装脚本程序
--nodeps 不检查依赖性
通用选项
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装
程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
三、升级选项
命令格式
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm
参数
file1.rpm ... fileN.rpm 软件包的名字
详细选项
-h (or --hash) 安装时输出hash记号 (``#'')
--oldpackage 允许"升级"到一个老版本
--test 只进行升级测试
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--percent 以百分比的形式输出安装的进度。
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
四、查询
命令格式:
rpm -q ( or --query) options
参数:
pkg1 ... pkgN :查询已安装的软件包
详细选项
-p (or ``-'') 查询软件包的文件
-f 查询属于哪个软件包
-a 查询所有安装的软件包
--whatprovides 查询提供了 功能的软件包
-g 查询属于 组的软件包
--whatrequires 查询所有需要 功能的软件包
信息选项
显示软件包的全部标识
-i 显示软件包的概要信息
-l 显示软件包中的文件列表
-c 显示配置文件列表
-d 显示文档文件列表
-s 显示软件包中文件列表并显示每个文件的状态
--scripts 显示安装、卸载、校验脚本
--queryformat (or --qf) 以用户指定的方式显示查询信息
--dump 显示每个文件的所有已校验信息
--provides 显示软件包提供的功能
--requires (or -R) 显示软件包所需的功能
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
五、校验已安装的软件包
命令格式:
rpm -V ( or --verify, or -y) options
参数
pkg1 ... pkgN 将要校验的软件包名
软件包选项
-p Verify against package file
-f 校验所属的软件包
-a Verify 校验所有的软件包
-g 校验所有属于组 的软件包
详细选项
--noscripts 不运行校验脚本
--nodeps 不校验依赖性
--nofiles 不校验文件属性
通用选项
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
六、校验软件包中的文件
语法:
rpm -K ( or --checksig) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 软件包的文件名
Checksig--详细选项
--nopgp 不校验GPG签名
通用选项
-v 显示附加信息
-vv 显示调试信息
--rcfile 设置rpmrc文件为
七、其它RPM选项
--rebuilddb 重建RPM资料库
--initdb 创建一个新的RPM资料库
--quiet 尽可能的减少输出
--help 显示帮助文件
--version 显示RPM的当前版本
最后更新 2016-12-21 16:45:36
合作编辑者如下:张映,糖醋冰块cat,cwj8031
[root@localhost ~]# rpm -ivh ipchains-1.3.6-1.i386.rpm #安装包,并显示详细进度
[root@localhost ~]# rpm -i ftp://ftp.xxx.xxx #在线安装
[root@localhost ~]# rpm -Va #校验所有的rpm包,查找丢失的文件
[root@localhost ~]# rpm -qf /usr/bin/who #查找一个文件属于哪个rpm包
[root@localhost ~]# rpm -qpi mon-0.37j-1.i386.rpm #列出一个rpm包的描述信息
[root@localhost ~]# rpm -qpl mon-0.37j-1.i386.rpm #列出一个rpm包的文件信息
[root@localhost ~]# rpm -Uvh ipchains-1.3.6-1.i386.rpm #升级包
[root@localhost ~]# rpm -q httpd #查看httpd的安装包
[root@localhost ~]# rpm -e httpd #移除安装包
[root@localhost ~]# rpm -qi httpd #得到httpd安装包的信息
Name : httpd Relocations: (not relocatable)
Version : 2.2.3 Vendor: CentOS
Release : 45.el5.centos.1 Build Date: 2011年05月04日 星期三 18时54分56秒
Install Date: 2011年06月29日 星期三 08时05分34秒 Build Host: builder10.centos.org
Group : System Environment/Daemons Source RPM: httpd-2.2.3-45.el5.centos.1.src.rpm
Size : 3281960 License: Apache Software License
Signature : DSA/SHA1, 2011年05月04日 星期三 20时31分28秒, Key ID a8a447dce8562897
URL : http://httpd.apache.org/
Summary : Apache HTTP 服务器
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@localhost ~]# rpm -ql httpd #列出httpd中有哪些文件
[root@localhost ~]# rpm -qa #列出所有已安装的包
[root@localhost ~]# rpm -qa |grep http* #获取已经安装的以http为前缀的包
script
- Script可用于记录当前用户的操作记录,默认写在typescript文件中。
用法:usage: script [-a] [-f] [-q] [-t] [file]
参数:
-a:追加到输出文件
-f:输出到指定文件
-q:安静模式,不显示Script started…这些信息
-t:指定时间文件和日志文件,格式:-t time.log action.log,用于回放操作。
[tank@localhost ~]$ script -a test.log #生成一个log文件,记录log
Script started, file is test.log
[tank@localhost ~]$ lll
bash: lll: command not found
[tank@localhost ~]$ pwd
/home/tank
[tank@localhost ~]$ exit #结束记录,这根ssh的退出有点像.
exit
Script done, file is test.log
[tank@localhost ~]$ cat test.log #查看一下,记录的log
Script started on 2014年08月18日 星期一 19时52分48秒
[tank@localhost ~]$ lll
bash: lll: command not found
[tank@localhost ~]$ pwd
/home/tank
[tank@localhost ~]$ exit
exit
Script done on 2014年08月18日 星期一 19时52分54秒
man
-C, --config-file=文件 使用该用户设置文件
-d, --debug 输出调试信息
-D, --default 将所有选项都重置为默认值
--warnings[=警告] 开启 groff 的警告
主要运行模式:
-f, --whatis 等同于 whatis
-k, --apropos 等同于 apropos
-K, --global-apropos search for text in all pages
-l, --local-file
把“手册页”参数当成本地文件名来解读
-w, --where, --path, --location
输出手册页的物理位置
-W, --where-cat, --location-cat
输出 cat 文件的物理位置
-c, --catman 由 catman 使用,用来对过时的 cat
页重新排版
-R, --recode=编码 output source page encoded in ENCODING
寻找手册页:
-L, --locale=区域
定义本次手册页搜索所采用的区域设置
-m, --systems=系统 use manual pages from other systems
-M, --manpath=路径 设置搜索手册页的路径为“路径”
-S, -s, --sections=列表 使用以半角冒号分隔的章节列表
-e, --extension=扩展
将搜索限制在扩展类型为“扩展”的手册页之内
-i, --ignore-case 查找手册页时不区分大小写字母
(默认)
-I, --match-case 查找手册页时区分大小写字母。
--regex show all pages matching regex
--wildcard show all pages matching wildcard
--names-only make --regex and --wildcard match page names only,
not descriptions
-a, --all 寻找所有匹配的手册页
-u, --update 强制进行缓存一致性的检查
--no-subpages don't try subpages, e.g. 'man foo bar' => 'man
foo-bar'
控制格式化的输出:
-P, --pager=PAGER 使用 PAGER 程序显示输出文本
-r, --prompt=字符串 给 less pager 提供一个提示行
-7, --ascii 显示某些 latin1 字符的 ASCII 翻译形式
-E, --encoding=编码 use selected output encoding
--no-hyphenation, --nh turn off hyphenation
--no-justification, --nj turn off justification
-p, --preprocessor=字符串 字符串表示要运行哪些预处理器:
e - [n]eqn, p - pic, t - tbl,
g - grap, r - refer, v - vgrind
-t, --troff 使用 groff 对手册页排版
-T, --troff-device[=设备] 使用 groff 的指定设备
-H, --html[=浏览器] 使用 www-browser 或指定浏览器显示 HTML
输出
-X, --gxditview[=分辨率] 使用 groff 并通过 gxditview (X11)
来显示:
-X = -TX75, -X100 = -TX100, -X100-12 = -TX100-12
-Z, --ditroff 使用 groff 并强制它生成 ditroff
-?, --help give this help list
--usage give a short usage message
-V, --version print program version
[root@linux ~]# man ifconfig #查看ifconfig手册
info
- 相关命令:man
- 用法: info [OPTION]... [MENU-ITEM...]
以 Info 格式阅读文档。
选项:
-k, --apropos=STRING 在所有手册页的索引中查找 STRING。
-d, --directory=DIR 将 DIR 添加至 INFOPATH。
--dribble=FILENAME 将用户的击键条目在 FILENAME 中。
-f, --file=FILENAME 指定想浏览的 Info 文件。
-h, --help 显示此帮助并退出。
--index-search=STRING 跳转至索引条目 STRING 所指的节点。
-n, --node=NODENAME 在首个浏览过的 Info 文件中指定节点。
-o, --output=FILENAME 将选中的节点全输出至 FILENAME。
-R, --raw-escapes 输出“原始”的 ANSI 转义符(默认)。
--no-raw-escapes 将转义符输出为普通文本。
--restore=FILENAME 从 FILENAME 中读取初始击键条目。
-O, --show-options, --usage 跳转至命令行选项节点。
--subnodes 递归输出菜单项。
--vi-keys 使用类似于 vi 和 less 的按键绑定。
--version 显示版本信息并退出。
-w, --where, --location 打印 Info 文件在系统中的位置。
如果存在第一个非选项参数,它将是个用于起始的菜单条目;
所有在 INFOPATH 变量后跟着的“dir”文件都会搜索此条目。
如果不存在此参数,info 合并所有“dir”文件并显示结果。
任何后续参数都被认为是与初始浏览
节点有关的菜单项名称。
在帮助信息中按 h 获取有关按键绑定的内容。
范例:
info 显示顶级目录菜单
info info 显示 Info readers 的普通手册
info info-stnd 显示此 Info 程序特定手册
info emacs 从顶级目录浏览 emacs 节点
info emacs buffers 在 emacs 手册页中浏览 buffers 节点
info --show-options emacs 浏览与 emacs 的命令行选项有关的节点
info --subnodes -o out.txt emacs 将整个手册页输出至 out.txt
info -f ./foo.info 显示文件 ./foo.info,而不是查找目录
[root@linux ~]# info ifconfig #查看ifconfig手册
help
- help命令用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。
- 而对于外部命令的帮助信息只能使用man或者info命令查看。
[root@localhost ~]# help cd
快捷键
Ctrl + l清屏,相当于clear命令
Ctrl + o执行当前命令,并重新显示本命令
Ctrl + s阻止屏幕输出,锁定
Ctrl + q允许屏幕输出
Ctrl + c终止命令
Ctrl + z挂起命令
Ctrl + a光标移到命令行首,相当于Home
Ctrl + e光标移到命令行尾,相当于End
Ctrl + f光标向右移动一个字符
Ctrl + b光标向左移动一个字符
Alt + f光标向右移动一个单词尾
Alt + b光标向左移动一个单词首
Ctrl + xx光标在命令行首和光标之间移动
Ctrl + u从光标处删除至命令行首
Ctrl + k从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w从光标处向左删除至单词首
Alt + d从光标处向右删除至单词尾
Ctrl + d删除光标处的一个字符
Ctrl + h删除光标前的一个字符
Ctrl + y将删除的字符粘贴至光标后
Alt + c从光标处开始向右更改为首字母大写的单词
Alt + u从光标处开始,将右边一个单词更改为大写
Alt + l从光标处开始,将右边一个单词更改为小写
Ctrl + t交换光标处和之前的字符位置
Alt + t交换光标处和之前的单词位置
Alt + N提示输入指定字符后,重复显示该字符N次
注意:Alt组合快捷键经常和其它软件冲突
gnometerminal
应用程序>附件>终端
支持多个“标签”shell的图形化终端模拟器
CtrlShiftn 创建新窗口
CtrlShiftq关闭当前窗口
CtrlShiftt 创建一个标签页
CtrlShiftw 关闭一个标签页
CtrlPaUp/PgUn切换到下一个/前一个标签页
CtrlShiftc 复制选中的文本
CtrlShiftv 把文本粘帖到当前光标处
有些目录文件创建时跟命令或者其他有冲突,可以添加一个完整的路径,这样就可以成功创
建,删除也一样。
tr
- 用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
-c, -C, --complement 首先补足SET1
-d, --delete 删除匹配SET1 的内容,并不作替换
-s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的
重复,在替换时会被统一缩为一个字符的长度
-t, --truncate-set1 先将SET1 的长度截为和SET2 相等
--help 显示此帮助信息并退出
--version 显示版本信息并退出
SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:
\NNN 八进制值为NNN 的字符(1 至3 个数位)
\\ 反斜杠
\a 终端鸣响
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
字符1-字符2 从字符1 到字符2 的升序递增过程中经历的所有字符
[字符*] 在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
[字符*次数] 对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
[:alnum:] 所有的字母和数字
[:alpha:] 所有的字母
[:blank:] 所有呈水平排列的空白字符
[:cntrl:] 所有的控制字符
[:digit:] 所有的数字
[:graph:] 所有的可打印字符,不包括空格
[:lower:] 所有的小写字母
[:print:] 所有的可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有呈水平或垂直排列的空白字符
[:upper:] 所有的大写字母
[:xdigit:] 所有的十六进制数
[=字符=] 所有和指定字符相等的字符
仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。
仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式
补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:]
以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不
替换也不删除,否则在替换或展开后使用SET2 缩减。
[root@localhost zhangy]# echo "TANK" |tr A-Z a-z #大写字母转小写
tank
[root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z #小写字线转大写
TANK ZHANG
[root@localhost zhangy]# cat aaa.txt #原文件
aaa
bbb
[root@localhost zhangy]# cat aaa.txt|tr 'a' 'c' #字母c替换字母a
ccc
bbb
[root@localhost zhangy]# cat aaa.txt|tr -d 'a' #删除所有字母a
bbb
[root@localhost zhangy]# cat aaa.txt|tr -d '\n\t' 删除文件file中出现的换行'\n'、制表'\t'字符
aaabbb
[root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z] #删除重复的字母
a
b
[root@localhost zhangy]# cat aaa.txt|tr -s '\n' #删除空行
aaa
bbb
[root@localhost zhangy]# cat aaa.txt |tr -s '\011' '\040' #用空格符\040替换制表符\011
aaa
bbb
# tr a c < test #将test文件中的a变成c