bash的基礎特性

bash的基本特性

1、命令歷史
        history  查看以前所使用的命令
        HISTFILE(環境變量)  指定命令歷史的存儲文件

    [root@localhost tmp]# echo $HISTFILE --會讀取存放歷史命令的文件
    /root/.bash_history

        實例:修改環境變量 HISTFILE

    [root@localhost tmp]# export HISTFILE=/root/aa 
    [root@localhost tmp]# echo $HISTFILE
    /root/aa

        HISTSIZE 指定bash進程能顯示的條目數 (最多存儲多少條命令)
        HISTFILESIZE 存儲文件最多能存儲的條目數

        實例:設置存儲文件最多能存儲的條目數爲1500,設置bash進程能顯示的條目數爲1200,如下

        

    [root@localhost tmp]# export HISTSIZE=1200
    [root@localhost tmp]# export HISTFILESIZE=1500
    [root@localhost tmp]# echo $HISTSIZE 
    1200
    [root@localhost tmp]# echo $HISTFILESIZE 
    1500

        HISTCONTROL  設定歷史命令的記錄模式

    [root@localhost tmp]# echo $HISTCONTROL 
    ignoredups (忽略重複的歷史命令)

        注:ignoredups   忽略重複的歷史命令
                ignorespace  忽略空白字符開頭的歷史命令

                ignoreboth   忽略前面兩者
        history [選項]
                -d 刪除指定的條目下的命令歷史
                -c 清楚整個命令歷史7等等入
                # (代表倒數多少行命令歷史)
                -a 將內存中緩存的命令歷史追加到命令的歷史文件
                !+#  便捷使用 執行第#行的命令
                !! 雙歎號 是執行上一條命令
                !clear(一定要是唯一的字符串,匹配最近一次歷史命令)
                !$ 上條命令的最後一段

        注:bash的一個特性,只要不是exit退出,所有的命令緩存都會存儲在內存當中,而並不是直接寫入硬盤的文件中,使用-a既可將內存中緩存的命令歷史追加到命令的歷史文件。

2、命令補全
        PATH環境變量,記錄應用程序所存放的目錄
        兩次tab鍵 補全命令是在PATH下面逐級尋找,如果找不到就會出現 command not found

3、路徑補全
        cd /etc/syscon   兩次tab補全(就是bash的特性,不是環境變量設置)
4、命令執行狀態結果
        echo $?
        0 代表成功(正確) 狀態碼
        1-255 代表各種不成功(錯誤)的狀態碼

5、命令自身的輸出結果

    [root@localhost tmp]# ttt
    -bash: ttt: command not found
    [root@localhost tmp]# echo $?
    127

6、bash的基礎特性---文件名的通配
    作用:應對對文件名記憶的不夠全面
    文件名通配  元字符
            * 匹配任意長度的任意字符(理解爲所有字符)

    實例:有如下目錄,使用不同的通配方式得出不同的結果。

                1、pad

                2、pd
                3、paad
                4、pa
    結果 (括號爲能匹配到的目錄編號)  
               *pa* (1,3,4)
                *pa  (4)
                p*a  (4)
                pa*  (1,3,4)         
             匹配任意單個字符
                p?d (1)
                p? (2,4)
           [ ] 匹配指定集合內的任意單個字符
                [0-9] 表示任意單個數值
                [a-z] 表示任意單個小寫字母
                [A-Z] 表示任意單個大寫字母
                [0-9a-zA-Z] 集合中的任意單個字符 (範圍可自定義)
            [^] 匹配集合外的任意單個字符
                [^0-9] 除去0-9以外的任意單個字符
                [^a-z] 除去a-z以外的任意字符
                [^A-Z] 除去A-Z以外的任意字符    
    6個小練習(答案在本文博客的最後,請先思考):

    練習1:顯示/var目錄下所有l(是字母L)開頭,以一個小寫字母結尾,且中間出現一位數字的文件或目錄;

    練習2:顯示/etc/目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄;

    練習3:   顯示/etc/目錄下,以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄;

    練習4:複製/etc/下,所有以m開頭,以非數字結尾的文件或目錄至/tmp/jiuren目錄中;

    練習5:複製/etc目錄下,所有以.d結尾的文件或目錄至/tmp/jiuren2目錄中;

    練習6:複製/etc目錄下,所有以.conf結尾,以m,n,r,p開頭的文件或目錄至/tmp/jiuren3目錄中;


linux 系統管理相關的常用命令(補充)

    ①關機命令
        halt
        init 0
        shutdown -h
    ②重啓相關命令
        init 6
        reboot
        shutdown -r
    ③日期相關的命令
        date [選項]
           +%F 顯示完整日期    full date; same as %Y-%m-%d
           2015-04-02
           +%D 短格式的日期    date; same as %m/%d/%y
           04/02/15
           +%Y 只顯示長格式的年 如2015
           +%y 只顯示短格式的年 如15
           +%T 顯示時間 時/分/秒
           +%H 只顯示小時
           +%M 只顯示分鐘
           +%S 只顯示秒
           +%s 時間戳

            注:時間戳:從unix元年(1970年1月0點0時0分0秒)到現在經歷了多少秒
           +%m 月份
           +%d 天
           [root@localhost etc]# date +%s
            1427961551
        cal 日曆軟件(顯示日曆命令)

            -1  查看一個月內的日曆
            -3  查看三個月內的日曆
            -h  關閉高亮顯示
            -j   查看羅馬日曆
            -m 已星期一開頭,顯示日曆
            -s  已星期日開頭,顯示日曆
            -y  查看12個月的日曆


答案1:(6個小練習的答案)

[root@localhost tmp]# ls -d /var/l*[0-9]*[a-z]
ls: cannot access /var/l*[0-9]*[a-z]: No such file or directory
[root@localhost tmp]# mkdir -vp /var/like001like
mkdir: created directory `/var/like001like'
[root@localhost tmp]# ls -d /var/l*[0-9]*[a-z]
/var/like001like

答案2:

[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]
ls: cannot access /etc/[0-9]*[^0-9]: No such file or directory
[root@localhost ~]# mkdir -v /etc/123qwerty456asdfg
mkdir: created directory `/etc/123qwerty456asdfg'
[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]
/etc/123qwerty456asdfg

答案3:注:1-3小題中默認沒有題中所需目錄或文件,自己創建測試既可。

[root@localhost tmp]# ls -d /etc/[^a-zA-Z][a-zA-Z]*
ls: cannot access /etc/[^a-zA-Z][a-zA-Z]*: No such file or directory
[root@localhost tmp]# mkdir -v /etc/8aconf5345wrwer
mkdir: created directory `/etc/8aconf5345wrwer'
[root@localhost tmp]# ls -d /etc/[^a-zA-Z][a-zA-Z]*
/etc/8aconf5345wrwer

答案4:

[root@localhost tmp]# mkdir -v /tmp/jiuren
mkdir: created directory `/tmp/jiuren'
[root@localhost tmp]# cp -r /etc/m*[^0-9] /tmp/jiuren/
[root@localhost tmp]# ls /tmp/jiuren/
magic    mail.rc    man.config  mcelog      mke2fs.conf  motd  my.cnf
mailcap  makedev.d  maven       mime.types  modprobe.d   mtab

答案5:

[root@localhost tmp]# mkdir -v /tmp/jiuren2
mkdir: created directory `/tmp/jiuren2'
[root@localhost tmp]# cp -r /etc/*.d /tmp/jiuren2/
[root@localhost tmp]# ls /tmp/jiuren2/
bash_completion.d  ld.so.conf.d    profile.d  request-key.d
cgconfig.d         logrotate.d     rc0.d      rsyslog.d
chkconfig.d        lsb-release.d   rc1.d      rwtab.d
cron.d             makedev.d       rc2.d      setuptool.d
depmod.d           modprobe.d      rc3.d      statetab.d
dracut.conf.d      oddjobd.conf.d  rc4.d      sudoers.d
event.d            pam.d           rc5.d      xinetd.d
init.d             popt.d          rc6.d      yum.repos.d
latrace.d          prelink.conf.d  rc.d

答案6:

[root@localhost tmp]# mkdir -v /tmp/jiuren3
mkdir: created directory `/tmp/jiuren3'
[root@localhost tmp]# cp -r /etc/[m,n,r,p]*.conf /tmp/jiuren3/
[root@localhost tmp]# ls /tmp/jiuren3/
mke2fs.conf    numad.conf                    request-key.conf
nfsmount.conf  pm-utils-hd-apm-restore.conf  resolv.conf
nsswitch.conf  prelink.conf                  rsyslog.conf
ntp.conf       readahead.conf



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章