1. 程式人生 > >基礎LINUX學習與配置

基礎LINUX學習與配置

src enable 小寫字母 gcc 中文 conf 個數字 man命令 zxvf

1.別名,內部命令,哈希表,外部命令,運行命令時的優先級別,以pwd為例

1.首先比較別名和內部命令的優先級

  • 運行alias enable=‘pwd‘,enable是一個內部命令,現在我們把pwd的別名命名為enable,如果出現內部命令列表,那麽說明內部命令的優先級是高於別名,如果顯示的是當前路徑,說明別名的優先級高於別名。
    技術分享圖片

2.然後比較內部命令和外部命令,哈希表的優先級

  • 首先運行命令pwd,然後通過type命令查看命令類型,如果出現的是一個哈希索引,那說明哈希表的優先級高,如果顯示pwd是一條內部命令,那麽說明內部命令優先級最高,如果出現時一條絕對路徑,說明外部命令的優先級最高。
    技術分享圖片

通過這樣我們能夠看到內部命令的優先級別是高於外部命令和哈希表的。


3.現在我們來比較哈希表和外部命令的優先級

  • 通過echo $PATH查看環境變量。
    技術分享圖片
  • 運行enable -n pwd禁用內部命令pwd,運行type pwd查看命令類型,顯示的是一條路徑,/usr/bin/pwd

  • 運行pwd 命令,然後運行type pwd 可以看到顯示的是命令在哈希表中,並指向命令的絕對路徑。
    技術分享圖片
  • 這樣似乎能證明哈希表的優先級是高於外部命令的,但是這樣並不能一定確定。我們先取消pwd的enable別名,然後把內部命令pwd 通過enable -n pwd 禁用掉行hash -r 清空哈希表,再執行pwd,會發生什麽呢?
    技術分享圖片
  • 我們發現此時通過type命令得到的仍然是一條路徑,那麽我們需要別的方法測試。
  • 因為tty是一條外部命令,我們可以用tty進行測試,運行type tty得到tty的類型,同樣是一條路徑 /usr/bin/tty。
  • 先執行一遍pwd,我們希望這條命令能夠將pwd加載到哈希表。
  • 我們可以復制tty命令到/usr/local/bin下,並命名為pwd,命令是sudo cp /usr/bin/tty /usr/local/bin/pwd。
  • 執行pwd命令,因為之前將tty復制到/usr/local/bin下,並命名為pwd,因此在絕對路徑上tty是高於pwd的,如果哈希表的優先級高於外部命令,那麽執行的結果就應該是pwd執行的結果,如果外部命令的優先級高於哈希表,那麽執行結果就應該是tty的執行結果。
    技術分享圖片
  • 這樣我們可以看到執行結果是pwd的執行結果而不是tty的執行結果,這樣說明哈希表的優先級是高於外部命令的。這時我們需要把禁用的pwd命令通過 enable pwd 命令恢復過來,然後通過rm -f /usr/local/bin/pwd刪除剛剛復制過去的tty命令。

  • 我們通過hash -r 清空一下哈希表,再運行pwd,看看會發生什麽呢?
    技術分享圖片

4.通過上面的實驗,我們可以得到別名,內部命令,外部命令,哈希表的優先級順序由高到低依次是別名,內部命令,哈希表,外部命令,前提是哈希表中裝有外部命令的哈希索引


2.安裝一些以後可能需要的軟件包

1.安裝man的中文包

  • 1.采用網路安裝的方法*
    首先要在網絡上下載man中文壓縮包,命令如下:
    weget http://manpages-zh.googlecode.com/files/manpages-zh-1.5.1.tar.gz
    然後解壓,命令如下:
    tar zxvf manpages-zh-1.5.1.tar.gz
    然後用cd命令打開:
    cd manpages-zh-1.5.1.tar.gz
    然後運行make命令安裝:
    make install
    如果沒有安裝gcc編譯器,需要先安裝gcc,我們采用本地yum源的方法,命令如下:
    sudo yum install gcc
    然後再運行make install 即可完成安裝。但這時運行man,發現沒有中文包,因為,我們沒有添加中文包的路徑到man命令。這時需要修改配置文件:
    vim /usr/bin/zhman
    然後追加下面的代碼
    #!/bin/bash
             #name=zhman
             export LANG=zh_CN
             man -M /usr/local/zhman/share/man/zh_CN $1
         如果希望所有用戶都能執行man命令,就需要修改權限為,所有人可執行如下
         `chmod 777 /usr/bin/zhman`
  • 2.采用本地光盤安裝
    光盤安裝需要一張下載有man軟件包的光盤,並把它掛載,命令如下:
    mount /dev/cdrom media
    然後安裝軟件包命令如下:
    rpm -ivh /media/man-pages-zh-CN-1.5.2-4.el7.noarch.rpm
    然後和上面一樣,添加中文包路徑,修改權限即可。

  • 3采用yum源安裝,命令如下:
    yum install manpages-zh
    如果找不到中文包,可以用下面的命令搜索一下:
    yum list |grep man.*zh
    如果還沒有,可以用下面的命令更新本地yum源:
    yum -y update
    然後執行下面的安裝命令
    sudo yum install 加中文包名

2.安裝tree

  • 1.采用yum安裝
    sudo yum -y install tree
    2.通過網絡安裝方法和安裝man一樣。

3.一些基本命令的操作

  • 顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄
    ls -d /etc/[a-Z][a-Z]*
  • 顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數字,其它為任意字符的文件或目錄
    ls -d /etc/rc[0-6]*
  • 顯示/etc目錄下,所有以.d結尾的文件或目錄
    ls -d /etc/*.d
  • 顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄
    ls -d /etc/[m,n,r,p]*.conf
  • 只顯示/root下的隱藏文件和目錄
    ls -d .* /root
  • 只顯示/etc下的非隱藏目錄
    ls -d /etc/*/
  • 顯示/etc目錄下所有以k開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄
    ls -d /etc/k*[0-9]*[[:lower:]]
  • 顯示/proc目錄下名字由任意三位數字組成的文件或目錄
    ls -d /proc/*[0-9]*[0-9]*[0-9]*
  • 顯示/var/log目錄下文件名包含符號及數字的文件或目錄
    ls -d /var/log/*[[:punct]]*[0-9]*
  • 顯示/usr/share/man目錄下所有以m開頭,以一個數字和x結尾的文件或目錄
    ls -d /usr/share/man/m*[0-9]*
  • 顯示/etc目錄下,所有以一個大寫字母開頭,以兩個數字結尾的文件或目錄
    ls -d /etc/[[:upper:]]*[0-9][0-9]
  • 顯示/etc目錄下,文件名至少包含一個小寫字母和一個數字並以.conf結尾的文件或目錄
    ls -d /etc/*[[:lower:]]*[0-9].conf
  • 只顯示用戶家目錄下的非隱藏目錄
    ls -d ~/*/
  • 定義別名命令baketc,將/etc/目錄下所有文件,備份到/testdir獨立的子目錄下,並要求子目錄格式為 backupYYYY-mm-dd,備份過程可見
    alias baketc=‘mkdir -p /testdir/backup$(date +%F);cp -av /etc/*/testdir/backup$(date +%F)‘
  • 創建/testdir/rootdir目錄,並復制/root下所有文件到該目錄內,要求保留原有權限
    alias opp=‘mkdir -p /testdir/rootdir;cp -ar /root/* /testdir/rootdir‘
  • 如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
    mkdir -p /test/{3,4} 5/{6,7}
  • 使用一條命令創建/testdir/dir8/x, /testdir/dir8/y, /testdir/dir8/x/a, /testdir/dir8/x/b, /testdir/dir8/x/c, /testdir/dir8/y/a, /testdir/dir8/y/b
    mkdir -p /testdir/dir8/{x/{a,b,c},y/{a,b}}
  • 使用一條命令創建 /testdir/dir9/x, /testdir/dir10/y, /testdir/dir9/x/a, /testdir/dir10/y/b
    mkdir -p /testdir/dir{11,12,13}
  • 使用一條命令創建/testdir/dir11, /testdir/dir12, /testdir/dir13, /testdir/dir12/dir14, /testdir/dir13/dir15
    mkdir -p /testdir/{11,12/14,13/15}

基礎LINUX學習與配置