1. 程式人生 > >2017-12-19 2周2次課

2017-12-19 2周2次課

2017-12-19 2周2次課

2.10 環境變量PATH


  • 本章用到的命令:which (用來查找摸個命令的絕對路徑)。示例如下:

[root@hanshuo-10 ~]# which rmdir ~查詢rmdir 路徑
/usr/bin/rmdir ~ rmdir所在的路徑

  • 上例中rmdir所在的位置是在哪裏查的示例如下:

    [root@hanshuo-10 ~]# echo $PATH ~用來輸出$PATH的值
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin ~這個幾個目錄用冒號做了幾個分割,如果你的命令在這幾個目錄裏,

    敲這個命令的時候就不需要絕對路徑

  • 所有的命令都有一個絕對路徑。只要在/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin目錄下的命令,用命令的時候都不需要輸入絕對路徑。直接輸入命令即可比如用ls復制出來一個lsa出來示例如下:

    [root@hanshuo-10 ~]# cp /usr/bin/ls /tmp/lsa ~復制/usr/bin/ls到 /tmp/lsa

    [root@hanshuo-10 ~]# /tmp/lsa ~輸入絕對路徑後跟ls功能一樣
    anaconda-ks.cfg initial-setup-ks.cfg
    [root@hanshuo-10 ~]# ls ~如上條命令對比一樣的功效
    anaconda-ks.cfg initial-setup-ks.cfg
    [root@hanshuo-10 ~]# lsa ~但直接輸入lsa未找到命令
    bash: lsa: 未找到命令...

  • 上個示例中到最後直接輸入命令lsa不能用。因為該命令沒有在PATH裏/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin目錄下。添加/tmp/lsa到PATH下示例如下

    [root@hanshuo-10 ~]# PATH=$PATH:/tmp/ ~把/tmp/加入PATH中
    [root@hanshuo-10 ~]# echo $PATH ~查看PATH下是否有/tmp/
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/ ~結果

    [root@hanshuo-10 ~]# lsa ~然後在用lsa命令
    anaconda-ks.cfg initial-setup-ks.cfg ~跟ls顯示結果一樣已經可以用

  • 註意 :以上操作只是暫時的 新建個終端或者重啟系統後不生效了 。想永久生效編輯/etc/profile,這個文件不管是開機還是重新打開終端都自動加載命令的文件操作如下

    #vi /etc/profile ~編輯profile文件


    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
    else
    umask 022
    fi

    for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
    if [ "${-#*i}" != "$-" ]; then
    . "$i"
    else
    . "$i" >/dev/null
    fi
    fi
    done

    unset i
    unset -f pathmunge
    PATH=$PATH:/tmp/ 新添加的一項添加這一項lsa就永久生效
    :wq 保存退出

  • 更改完/etc/profile文件後。再打開一個終端看下是否把/tmp/添加到PATH裏面。如果添加成功就可以永久生效lsa了。

  • 想刪除PATH裏的/tmp/直接進入/etc/profile把PATH=$PATH:/tmp/刪除保存退出後就可以了。




2.11 cp命令


  • cp 是 copy (即復制)的簡寫,該命令的格式為:cp 【選項】 {來源文件} {目錄文件} 。例如把/etc/passwd復制成/tmp/hanshuo.txt,例如下所示:

    [root@hanshuo-10 ~]# cp /etc/passwd /tmp/hanshuo.txt ~復制/etc/passwd 到/tmp/hanshuo.txt

    [root@hanshuo-10 ~]# ls /tmp ~查看是否有剛才復制過來hanshuo.txt
    hanshuo
    hanshuo.txt ~結果有了

  • 以上實驗是針對文件的下面實驗目錄的,目錄復制必須加-r選項示例如下:

[root@hanshuo-10 ~]# ls /tmp/ ~查看tmp裏有哪些目錄
hanshuo11
hanshuo2
hanshuo.txt
lsa
[root@hanshuo-10 ~]# cp -r /tmp/hanshuo2/ /tmp/han11/ ~復制/tmp/hanshuo2/ /tmp/han11/ 註意:約定目錄後面必須加/
[root@hanshuo-10 ~]# ls /tmp/ ~復制完成查看
han11 ~復制結果
hanshuo11
hanshuo2
hanshuo.txt
lsa


  • -i :這是個安全選項,如果遇到一個已存在的文件,會詢問是否覆蓋,使用的cp命令其實是cp -i ,可以通過which命令查看示例如下

    [root@hanshuo-10 ~]# which cp
    alias cp='cp -i'
    /usr/bin/cp >>>>>>cp 的絕對路徑


2.12 mv命令


  • mv 是move的縮寫,它是把文件挪動地方,如果在同一個目錄下相當於改名字

  • 重命名如下所示

    [root@hanshuo-10 ~]# ls
    anaconda-ks.cfg hanshuo3 initial-setup-ks.cfg
    [root@hanshuo-10 ~]# mv hanshuo3 hanshuo31 >>>>>>hanshuo3更改名字為hanshuo31
    [root@hanshuo-10 ~]# ls
    anaconda-ks.cfg hanshuo31 initial-setup-ks.cfg

  • 給文件挪動地方如下所示

    [root@hanshuo-10 ~]# cd /tmp/ >>>>>>>進入tmp下
    [root@hanshuo-10 tmp]# ls >>>>>>用ls查看tmp下的文件和目錄
    han11
    hanshuo11
    hanshuo2
    hanshuo.txt

用mv把hanshuo.txt移動到han11目錄如下

[root@hanshuo-10 tmp]# mv hanshuo.txt han11/

[root@hanshuo-10 tmp]# ls han11/
hanshuo.txt

  • 如果復制同一個文件到一個目錄的話他會提示是否覆蓋,如果不想讓他提示是否需要覆蓋,因為它跟cp一樣都帶個-i選項,直接用絕對路徑移動即可如下:

[root@hanshuo-10 tmp]# mv hanshuo.txt han11/ >>>>>>復制hanshuo.txt到han11裏
mv:是否覆蓋"han11/hanshuo.txt"? n >>>>>>>以前han11裏有個hanshuo.txt所以會詢問是否覆蓋

[root@hanshuo-10 tmp]# which mv .>>>>>>查看mv的絕對路徑 、/usr/bin/mv
alias mv='mv -i'
/usr/bin/mv
[root@hanshuo-10 tmp]# /usr/bin/mv hanshuo.txt han11/ >>>>>用絕對路徑直接移動不會提示是否覆蓋


2.13 文檔查看cat/more/less/head/tail


  • cat 查看文件內容並將其顯示在屏幕上,用法cat後面直接跟文件名即可

  • tac 可以倒敘查看一個文件文件的內容跟cat相反

  • wc -l 查看文件的行數

  • less 的作用跟more一樣但是不如less功能多,按空格可以翻頁,在使用less查看某個文件時,你可以按下/鍵,並輸入一個字符串(如root),然後回車,這樣就可以直接查找這個文件裏包含root的字符串了,如果查找多個字符串,可以直接按n 鍵,另外,也可以用?代替/鍵來搜索字符串,唯一不同的是,/是在當前行向下搜索,而?號是在當前向上搜索,g鍵到首行G鍵到末行,ctrl+B網上翻頁,

  • head 用於顯示文件的前10行,後面直接跟文件名。如果加個n選項,則顯示文件的前幾行,示例命令如下:

    [root@hanshuo-10 ~]# head /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    [root@hanshuo-10 ~]# head -n 2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin

    註意:選項-n後面無空格也可以,也可以省略字母n,-後面直接跟數字即可

  • tail 用於顯示文件的最後10行,跟head 向反 ,命令選項一樣

    另外,命令tail的-f選項也常用,它可以顯示動態文件的後10行。如果文件內容在不斷增加,使用-f選項非常的方便。不如:tail -f /var/log/messages 可以動態,實時查看文件/var/log/messages中的內容。


2017-12-19 2周2次課