linux获取命令帮助方式:

(1) COMMAND--help/-h      #简要列出用法及选项等,shell内建命令通常不支持此选项

(2)使用手册(manual)               #常用方法      

    man COMMAND

    常用手册页:/usr/share/man/

        man1:用户命令

        man2:系统调用

        man3:C库调用

        man4:设备文件及特殊文件

        man5:配置文件格式

        man8:管理类的命令

 

    man命令的配置文件: /etc/man.config     

    MANPATH /PATH/TO/SOMEWHERE : 指明新的手册文件搜索位置

    man -M /PATH/TO/SOMEWHERECOMMAND:到指定位置下搜索COMMAND命令手册

 

    查找命令所在的man手册:whatis COMMAND

    注意:有些命令在多个章节中都存在帮助手册:

[root@localhost ~]# whatis read
read                 (1p)  - read a line from standard input
read                 (2)  - read from a file descriptor
read                 (3p)  - read from a file
read [builtins]      (1) - bash built-in commands, see bash(1)

 

    查看相关章节:man # COMMAND

    [root@localhost ~]# man 2 read

              

(3) 信息页

    info COMMAND

(4) 程序自身的帮助文档

    README

    INSTALL

    ChangeLog

(5) 程序官方文档

    官方站点:Documentation

(6) 发行版的官方文档

    红帽官方站点文档:www.redhat.com/docs

(7)google

    keyword filetype:pfd / keywordsite:redhat.com

(8)www.slideshare.net

 

 

bash的一些基础命令:

1、关机或重启:

    halt, poweroff,

    reboot

        -f:强制,不调用shutdown

        -p:切断电源

    shutdown:

        shutdown [option]... TIME [MESSAGE]

        -r:reboot

        -h:halt

        -c:cencel


        TIME:

            now:立刻

            +m:相对时间表示法,从命令提交开始多久之后,+3

            hh:mm :绝对时间表示,指明具体时间

 

2、会话查看

    whoami:显示当前登录的有效用户

    who:显示系统当前所有的登录会话

    w: 显示系统当前所有的登录会话以及用户正在做什么(显示用户的行为信息)

 

3、时间管理命令:

    date [OPTION]... [+FORMAT]

        FORMAT:格式符号

            %D ;08/05/15

            %F :2015-08-15

            %T :23:53:48

        设置时间:

            date [MMDDhhmm[[CC]YY][.ss]]

                MM:月份  DD:几号 hh:小时 YY:两位年份 CCYY:四位年份   .ss:秒钟

            date -s '2015-08-15 16:09:30'

       

      date练习:    

 [root@localhost ~]# date 0815170115.21
 [root@localhost ~]# date +%A             #date +%a为简写, Sat
 Saturday
 [root@localhost ~]# date +%u
 6            # day of week (1..7); 1 is Monday
 [root@localhost ~]# date +%w
 6            # day of week (0..6); 0 is Sunday
 [root@localhost ~]# date +%d/%m/%Y       #与date +%x效果一样
 08/15/2015
 [root@localhost ~]# date +%H:%M:%S       #与date +%T效果一样
 23:53:48

 

    cal:日历

        cal MONTH

        cal YEAR

        cal MONTH YEAE

 

    linux的两种时钟:

        系统时钟:有linux内核通过CPU的工作频率进行及时

        硬件时钟:

        hwclock:显示硬件时钟:

            -s  将hwclock 同步到 system clock

            -w 将system clock 同步到 hwclock

 

4、目录及文件相关命令:

 

    主目录:家目录 ,HOME

        root:/root

        普通用户:/home/USERNAME

                 /home/letitbe

        ~:用户的主目录

    cd:

        cd 或 cd ~:回到当前用户的主目录

        cd ~USERNAME:切换至指定用户的家目录

        cd -:返回上一次的目录

        . / ..

        相关环境变量:

            PWD:保存了当前目录路径

            OLDPWD:上一次所在目录的路径

 

    pwd:显示当前目录路径

 

    ls:显示指定路径下的文件列表;

        ls [OPTION]... [DIR]

            -a,--all:显示所有文件,包括隐藏文件

            -l:长格式

                -rw-r--r--. 1 root root 44800Aug 14 12:42 install.log

                    最左侧的第一位:文件类型,如-,d,l,b,c,p,s

                    后面的9位,访问权限:perm

                数字:文件被硬链接的次数

                左root:文件的属主,ower

                右root:文件属组,group

                44800:文件大小,size

                Aug 14 12:42:文件最近一次被修改时间

                install.log:文件名

            -d:仅显示目录属性

            -h:以kb等易读形式显示文件大小

            -r,--reverse:逆序显示

            -R,--recursive:递归,显示当前目录下的子目录的文件

 

        练习: 显示/etc目录下的所有目录

  
[root@localhost~]# cd /etc
[root@localhostetc]# ls -d */
alternatives/       cron.monthly/   init/            openldap/  ppp/       rc.d/       ssl/         yum/
audisp/             cron.weekly/    init.d/          opt/       profile.d/  rpm/       statetab.d/  yum.repos.d/
audit/              dbus-1/         iproute2/        pam.d/     rc0.d/     rsyslog.d/  sudoers.d/
bash_completion.d/  default/        kdump-adv-conf/  pkcs11/   rc1.d/      rwtab.d/    sysconfig/

 

    tree:以树的形式列出目录的所有内容

        -d :只显示目录

        -L level:指定显示的层级目录

        -P pattern:只显示匹配的层级目录

 

    mkdir:

        -p, --parents

              no error if existing, make parentdirectories as needed

        -v, --verbose

              print a message 'for' eachcreated directory

        -m, --mode=MODE

          set file mode (as in chmod), nota=rwx - umask

  

    rmdir:删除空目录

        -v:显示过程

        -p:递归删除空目录

 

        练习:

            (1) 如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a, /tmp/x/y2/b

                    mkdir /tmp/x/{y1,y2}/{a,b}

            (2) 如何创建x_m, y_m, x_n, y_n

                   mkdir -pv {x,y}_{m,n}

            (3) 如何创建/tmp/bin, /tmp/sbin, /tmp/usr, /tmp/usr/bin, /tmp/usr/sbin

                   mkdir -pv /tmp/{usr/,}{bin,sbin}或

                   mkdir -pv/tmp/{usr/{bin,sbin},sbin,bin}


    cat:文件查看命令

        cat [OPTION]... [FILE]

            -E:显示行介绍符$

            -n:显示出文件每一行及对应行号

        文件内容类型查看命令:file

            file /PATH/TO/SOMEWHERE

 

    echo:回显命令

        -n:禁止自动添加换行符号

        -e:允许使用转义符

            \n:换行

            \t:制表符

        echo "$VAR_NAME":变量会替换,弱引用

        echo '$VAR_NAME':变量不会替换,强引用

 

    head

        -c #:指定获取前#字节

        -n #:指定获取前#行

 

    tail

        -c #:指定获取前#字节

        -n/-# #:指定获取前#行

        -f: output appended data as the filegrows,跟踪显示文件新追加的内容    

 

    touch:文件或目录的时间戳管理工具

        文件组成:metadata(元数据),data(数据)

 

        三个时间戳:

            access time:访问时间,atime,读取文件内容

            midify time:修改时间,mtime,改变文件内容(数据)

            change time:改变时间,ctime,元数据发生改变(属性)

            (atime及mtime的改变都会导致ctime的改变)

        touch:

            -c: 如果文件不存在,则不予创建

            -a:only atime

            -m: only mtime

            -t STAMP:

                [[CC]YY]MMDDhhmm[.ss]

            touch -a -t 201508171224.30

 

    stat:显示目录或文件的元数据(属性)           

 [root@localhost ~]# stat /root
 File: `/root'
 Size: 4096            Blocks: 8          IO Block: 4096   directory
 Device: 803h/2051d      Inode: 391682      Links: 13
 Access: (0550/dr-xr-x---)  Uid: (   0/    root)   Gid: (   0/    root)
 Access: 2015-08-05 00:31:44.018734163+0800
 Modify: 2015-08-05 01:17:30.383728888+0800
 Change: 2015-08-05 01:17:30.383728888+0800

    cp: 复制

        cp SRC DEST

           -i:当存在同名文件覆盖前提示,当(root用户默认别名),普通用户没有

        cp SRC... DEST

            SRC...:多个文件

                 DEST必须存在,且为目录,其他情形均会出错

        cp SRC DEST

            SRC是目录:

                此时使用选项:-r(递归复制目录及目录下的所有内容)

            -a,--archive :归档复制,保留文件的原有属性

                相当于-dR --preserve=all

            -d: --no-dereference -R:copydirectories recursively

            --preserve[=ATTR_LIST]

            -p:--preserve=mode,ownership,timestamp

            -v:verbose

        (复制时有时候会改变文件原来的属性,如对符号链接文件的复制)

 

    mv: 移动或重命名

        如果源和目都在同一目录下,目的目录不存在则为重命名,存在则为移动

        i:交互式

        -f:强制

 

    rm:删除

        -r:递归

        -f:强制

        rm -rf:强制递归删除

 

5、文本处理工具:

    wc:

        -l:行数

        -m: 单词

        -c:字节数   

 

    cut:  

        -d:分隔符

        -f:显示的第几字段, -f 1,3  -f 1-3 -f 1-3,7

        --output-delimiter=STRING

 

    sort:

        -f: 忽略字符大小写

        -r:逆序

        -k:以某字段进行排序

        -t:指定分隔符

        -n:以数值大小进行排序(默认以字符对应的ASCII码进行排序)

        -u: uniq,排序后去重

 

    uniq命令:

        uniq [option]... [file]...

        -c : 显示每行重复出现的次数

        -d : 只显示重复过行

        -u : 仅显示未重复过的行

 

    注意:连续且完全相同才算做重复

 

   练习:以冒号分隔,取出/etc/passwd文件的第6至10行,并将这些信息按第3个字段的数值大小进行排序,

          最后仅显示各自的第1个字段。

  #法一:
  [root@localhost~]# head -10 /etc/passwd | tail -5 | sort -t: -k3 -n | cut -d: -f1
  #法二:
  [root@localhost~]# sed -n '6,10p' /etc/passwd | sort -t: -k3 -n | cut -d: -f1                           
  sync
  shutdown
  halt
  mail
  uucp