命令总结之系统篇第一章

命令总结之系统篇

  • 更新时间: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

    1. 工具说明

在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组合快捷键经常和其它软件冲突
gnome­terminal
应用程序­>附件­>终端 
支持多个“标签”shell的图形化终端模拟器
Ctrl­Shift­n 创建新窗口
Ctrl­Shift­q关闭当前窗口
Ctrl­Shift­t 创建一个标签页
Ctrl­Shift­w 关闭一个标签页
Ctrl­PaUp/PgUn切换到下一个/前一个标签页
Ctrl­Shift­c 复制选中的文本
Ctrl­Shift­v 把文本粘帖到当前光标处
有些目录文件创建时跟命令或者其他有冲突,可以添加一个完整的路径,这样就可以成功创
建,删除也一样。

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容