美文网首页LINUX学生会linux学习
命令总结之系统篇第一章

命令总结之系统篇第一章

作者: 数据革命 | 来源:发表于2017-06-11 16:12 被阅读53次

    命令总结之系统篇

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

    相关文章

      网友评论

        本文标题:命令总结之系统篇第一章

        本文链接:https://www.haomeiwen.com/subject/bkihqxtx.html