天天看點

Linux常用指令

Linux常用指令

本文記錄一些在Linux系統下比較常用的指令。

首先介紹下Linux下指令生效的順序:

  1. 第一順位:執行絕對路徑或者相對路徑的指令
  2. 第二順位:執行别名
  3. 第三順位:執行Bash的内部指令
  4. 第四順位:執行按照

    $PATH

    環境變量設定定義的目錄順序的第一個指令

cp

該指令用于複制檔案,copy之意,它還可以把多個檔案一次性地複制到一個目錄下,它的常用參數如下:

  • -a:将檔案的特性一起複制
  • -p:連同檔案的屬性一起複制,而非使用預設方式,與-a相似,常用于備份
  • -i:若目标檔案已經存在時,在覆寫時會先詢問操作的進行
  • -r:遞歸持續複制,用于目錄的複制行為
  • -u:目标檔案與源檔案有差異時才會複制

例:

  • cp source dest

    複制檔案
  • cp -r sourceFolder targetFolder

    遞歸複制整個檔案夾

mv

該指令用于移動檔案、目錄或更名,move之意,它的常用參數如下:

  • -f:force強制的意思,如果目标檔案已經存在,不會詢問而直接覆寫
  • -i:若目标檔案已經存在,就會詢問是否覆寫
  • -u:若目标檔案已經存在,且比目标檔案新,才會更新

注:該指令可以把一個檔案或多個檔案一次移動一個檔案夾中,但是最後一個目标檔案一定要是“目錄”。

  • mv file1 file2 file3 dir

    把檔案file1、file2、file3移動到目錄dir中
  • mv file1 file2

    把檔案file1重命名為file2

rm

該指令用于删除檔案或目錄,remove之間,它的常用參數如下:

  • -f :就是force的意思,忽略不存在的檔案,不會出現警告消息
  • -i :互動模式,在删除前會詢問使用者是否操作
  • -r :遞歸删除,最常用于目錄删除,它是一個非常危險的參數

例如:

  • rm -i file

    删除檔案file,在删除之前會詢問是否進行該操作
  • rm -fr dir

    強制删除目錄dir中的所有檔案

tar

tar是linux上常用的打包、壓縮、解壓縮工具,它的參數很多,這裡列舉常用的壓縮與解壓縮參數。

參數:

  • -c

    : 建立壓縮檔案的參數
  • -x

    : 解壓縮壓縮檔案的參數
  • -z

    : 用

    gzip

    壓縮
  • -j

    bzip2

    解壓檔案
  • -Z

    compress

  • -v

    : 壓縮的過程中顯示檔案
  • -f

    : 置頂文檔名,在

    -f

    後面立即接檔案名,不能再加參數

打包與解包

  • 将整個/home/www/images 目錄下的檔案全部打包
    tar -cvf images.tar images ← 僅打包,不壓縮
               
  • 解包到指定的目錄
    tar -xvf filename.tar -C 指定目錄
               

壓縮與解壓縮

gzip壓縮

  • 打包後,以gzip壓縮,在參數f後面的壓縮檔案名是自己取的,習慣上用tar來做,如果加z參數,則以tar.gz 或tgz來代表gzip壓縮過的tar檔案
    tar -zcvf images.tar.gz images
               
  • 将 images.tar.gz 解壓
    tar -zxvf images.tar.gz
               
  • 解壓縮到指定的目錄
    tar -zxvf images.tar.gz -C 指定的目錄
               

bzip2壓縮

  • 打包後,以bzip2壓縮
    tar -jcvf images.tar.bz2 images
               
  • 将 images.tar.bz2 解壓
    tar -jxvf images.tar.bz2
               
  • tar -jxvf images.tar.bz2 -C 指定的目錄
               

不同壓縮方式的壓縮率比較

  • tar -zcvf test.tar.gz test

  • tar -jcvf test.tar.bz2 test

  • zip -ry test.zip test

    zip指令要加上兩個選項
    • -r

      :表示遞歸目錄,不然隻壓出來一個空目錄。
    • -y

      :表示保持符号連結,而不用把符号連結指向的檔案也壓進來。

結果比較:

ll -h test.*

-rw-r--r-- 1 liwenhao staff 45M  8  6 20:12 test.tar.bz2
-rw-r--r-- 1 liwenhao staff 47M  8  6 20:12 test.tar.gz
-rw-r--r-- 1 liwenhao staff 50M  8  6 20:13 test.zip
           

可以看到:

壓縮率:bzip2 > gzip > zip

tar打包絕對路徑

備份mysql時,想把之前的檔案壓縮,但是用

tar czvf /data/backup/test.tar.gz /data/a/b/directory

打開一看,裡面的内容是把整個絕對路徑都放進去了。

如果想實作相對路徑,這樣寫就可以解決了

tar czvf /data/backup/test.tar.gz /data/a/b/directory
改成
tar czvf /data/backup/test.tar.gz -C /data/a/b directory
           

C是臨時切換工作目錄,-P是絕對路徑,在這裡隻用到-C參數就行了。

ps

該指令用于将某個時間點的程序運作情況選取下來并輸出,process之意,它的常用參數如下:

  • -A :所有的程序均顯示出來
  • -a :顯示 同一終端下 的所有程式
  • -u :有效使用者的相關程序
  • -x :一般與a參數一起使用,可列出較完整的資訊
  • -l :較長,較詳細地将PID的資訊列出
  • -e :等于

    "-A"

  • -f :顯示程式間的關系

其實我們隻要記住ps一般使用的指令參數搭配即可,它們并不多,如下:

  • ps aux

    檢視系統所有的程序資料
  • ps ax

    檢視不與terminal有關的所有程序
  • ps -lA

  • ps axjf

    檢視連同一部分程序樹狀态

檢視某個程序:

  • ps –ef|grep tomcat

    檢視所有有關tomcat的程序
  • ps -ef|grep --color java

    高亮要查詢的關鍵字

kill

該指令用于向某個工作(jobnumber)或者是某個PID(數字)傳送一個信号,它通常與ps和jobs指令一起使用,它的基本文法如下:

kill -signal PID

signal的常用參數(最前面的數字為信号的代号,使用時可以用代号代替相應的信号)如下:

  • 1:SIGHUP,啟動被終止的程序
  • 2:SIGINT,相當于輸入ctrl+c,中斷一個程式的進行
  • 9:SIGKILL,強制中斷一個程序的進行
  • 15:SIGTERM,以正常的結束程序方式來終止程序
  • 17:SIGSTOP,相當于輸入ctrl+z,暫停一個程序的進行
  • 以正常的結束程序方式來終于第一個背景工作,可用jobs指令檢視背景中的第一個工作程序

    kill -SIGTERM %1

    或者

    kill -15 %1

  • 重新改動程序ID為PID的程序,PID可用ps指令通過管道指令加上grep指令進行篩選獲得

    kill -SIGHUP PID

    kill -1 PID

  • 終止線程号位19979的程序

    kill -9 19979

killall

該指令用于向一個指令啟動的程序發送一個信号,它的一般文法如下:

killall [-iIe] [command name]

它的參數如下:

  • -i :互動式的意思,若需要删除時,會詢問使用者
  • -e :表示後面接的command name要一緻,但command name不能超過15個字元
  • -I :指令名稱忽略大小寫

killall -SIGHUP syslogd

重新啟動syslogd

file

該指令用于判斷接在file指令後的檔案的基本資料,因為在Linux下檔案的類型并不是以字尾為分的,是以這個指令對我們來說就很有用了,它的用法非常簡單,基本文法如下:

file filename

file ./test

ln

ln是linux中又一個非常重要指令,它的功能是為某一個檔案在另外一個位置建立一個同步的連結.當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們隻要在某個固定的目錄,放上該檔案,然後在 其它的目錄下用ln指令連結(link)它就可以,不必重複的占用磁盤空間。

指令格式:

ln [參數][源檔案或目錄][目标檔案或目錄]

指令功能:

Linux檔案系統中,有所謂的連結(link),我們可以将其視為檔案的别名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是産生一個特殊的檔案,該檔案的内容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。

  • 軟連結:
    1. 軟連結,以路徑的形式存在。類似于Windows作業系統中的快捷方式
    2. 軟連結可以 跨檔案系統 ,硬連結不可以
    3. 軟連結可以對一個不存在的檔案名進行連結
    4. 軟連結可以對目錄進行連結
  • 硬連結:
    1. 硬連結,以檔案副本的形式存在。但不占用實際空間。
    2. 不允許給目錄建立硬連結
    3. 硬連結隻有在同一個檔案系統中才能建立

這裡有兩點要注意:

  1. ln指令會保持每一處連結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案都會發生相同的變化;
  2. ln的連結又分軟連結和硬連結兩種,軟連結就是ln –s 源檔案 目标檔案,它隻會在你標明的位置上生成一個檔案的鏡像,不會占用磁盤空間,硬連結 ln 源檔案 目标檔案,沒有參數-s, 它會在你標明的位置上生成一個和源檔案大小相同的檔案,無論是軟連結還是硬連結,檔案都保持同步變化。

    ln指令用在連結檔案或目錄,如同時指定兩個以上的檔案或目錄,且最後的目的地是一個已經存在的目錄,則會把前面指定的所有檔案或目錄複制到該目錄中。若同時指定多個檔案或目錄,且最後的目的地并非是一個已存在的目錄,則會出現錯誤資訊。

  3. 指令參數:
    必要參數:
    -b 删除,覆寫以前建立的連結
    -d 允許超級使用者制作目錄的硬連結
    -f 強制執行
    -i 互動模式,檔案存在則提示使用者是否覆寫
    -n 把符号連結視為一般目錄
    -s 軟連結(符号連結)
    -v 顯示詳細的處理過程
    選擇參數:
    -S "-S<字尾備份字元串> "或 "--suffix=<字尾備份字元串>”
    -V "-V<備份方式>"或"--version-control=<備份方式>"
    --help 顯示幫助資訊
    --version 顯示版本資訊
               

使用執行個體

執行個體1:給檔案建立軟連結

指令:

ln -s log2013.log link2013

輸出:

[root@localhost test]# ll

-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log

[root@localhost test]# ln -s log2013.log link2013

[root@localhost test]# ll

lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log

-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
           

說明:

為log2013.log檔案建立軟連結link2013,如果log2013.log丢失,link2013将失效

執行個體2:給檔案建立硬連結

ln log2013.log ln2013

[root@localhost test]# ll

lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log

-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log

[root@localhost test]# ln log2013.log ln2013

[root@localhost test]# ll

lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log

-rw-r--r-- 2 root bin      61 11-13 06:03 ln2013

-rw-r--r-- 2 root bin      61 11-13 06:03 log2013.log
           

為log2013.log建立硬連結ln2013,log2013.log與ln2013的各項屬性相同

删除軟連接配接

目錄的軟連接配接要謹慎删除,有可能把原檔案目錄下的檔案給删除了。
  1. 先建立一個軟連接配接
    [[email protected] test]# ls -il
    總計  0
    1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
    1491139 -rw-r–r– 2  root root 0 07-14 14:17 file2
    1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2hand
    #建立file1和file1soft軟連接配接
    [[email protected] test]# ln -s file1  file1soft
    [[email protected] test]# ls -il
    總計 0
    1491138 -rw-r–r– 1 root  root 48 07-14 14:17 file1
    1491140 lrwxrwxrwx 1 root root 5 07-14 14:24  file1soft -> file1
    1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2
    1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
               
  2. 删除上面建立的軟連接配接
    [[email protected] test]# ls -il
    總計  0
    1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
    1491140 lrwxrwxrwx 1  root root 5 07-14 14:24 file1soft -> file1
    1491139 -rw-r–r– 2 root root 0  07-14 14:17 file2
    1491139 -rw-r–r– 2 root root 0 07-14 14:17  file2hand
    #删除軟連接配接
    [[email protected] test]# rm -rf file1soft
    [[email protected] test]#  ls -il
    總計 0
    1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
    1491139  -rw-r–r– 2 root root 0 07-14 14:17 file2
    1491139 -rw-r–r– 2 root root 0 07-14  14:17 file2hand
               

删除軟連結 确實是用rm 但是!!!

rm -fr xxxx/ 加了個/ 這個是删除檔案夾

rm -fr xxxx 沒有/ 這個是删除軟連結

cat指令

該指令用于檢視文本檔案的内容,後接要檢視的檔案名,通常可用管道與more和less一起使用,進而可以一頁頁地檢視資料。例如:

cat text | less

檢視text檔案中的内容

注:這條指令也可以使用less text來代替

chgrp指令

該指令用于改變檔案所屬使用者組,它的使用非常簡單,它的基本用法如下:

chgrp [選項] [組] [檔案]

  • -R

    :處理指定目錄以及其子目錄下的所有檔案
  • -v

    :運作時顯示詳細的處理資訊
  • --dereference

    :作用于符号連結的指向,而不是符号連結本身
  • --no-dereference

    :作用于符号連結本身

chgrp -vR users ./dir

遞歸地把dir目錄下中的所有檔案和子目錄下所有檔案的使用者組修改為users

chown指令

該指令用于改變檔案的所有者,與chgrp指令的使用方法相同,隻是修改的檔案屬性不同。

chmod指令

該指令用于改變檔案的權限,一般的用法如下:

chmod [-R] xyz 檔案或目錄

-R:進行遞歸的持續更改,即連同子目錄下的所有檔案都會更改

同時,chmod還可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(設定)跟rwx搭配來對檔案的權限進行更改。

chmod 755 file

把file的檔案權限改變為-rxwr-xr-x,r表示讀、w表示寫、x表示可執行。

chmod g+w file

向file的檔案權限中加入使用者組可寫權限。

chmod +x file

讓檔案可執行。

權限代号:

  • r:讀權限,用數字4表示
  • w:寫權限,用數字2表示
  • x:執行權限,用數字1表示

關于搜尋的指令

1 find

  1. find是最常見和最強大的查找指令,你可以用它找到任何你想找的檔案。(避免大範圍的搜尋,會非常浪費系統資源,建議不在直接在"/"目錄下搜尋)
  2. 格式:find [搜尋範圍] [搜尋條件]
    • find /home -name 檔案名
    • find /home -iname 檔案名 (不區分大小寫)
    • find /home -user 檔案名 (所有者檔案)
    • find /home -nouser 檔案名(沒有所屬者的檔案,liunx中,每個檔案都有所屬者,如果沒有,那麼一般都是垃圾檔案,但還是有特例的,比如核心産生的檔案,就沒有所屬者,一般在proc和sys目錄下;還有外來檔案,也就是U盤拷入的檔案也會忽略所有者。)
    • find . -type f -mmin -10 搜尋目前目錄中,所有過去10分鐘中更新過的普通檔案。如果不加-type f參數,則搜尋普通檔案+特殊檔案+目錄。
    • find 目錄 -size 檔案大小 (注意:檔案大小用小寫k和大寫M。)

如果什麼參數也不加,find預設搜尋目前目錄及其子目錄,并且不過濾任何結果(也就是傳回所有檔案),将它們全都顯示在螢幕上。

2 locate

locate指令其實是"find -name"的另一種寫法,但是要比後者快得多,原因在于它不搜尋具體目錄,而是搜尋一個資料庫(/var/lib/locatedb),這個資料庫中含有本地所有檔案資訊。Linux系統自動建立這個資料庫,并且每天自動更新一次,是以使用locate指令查不到最新變動過的檔案。為了避免這種情況,可以在使用locate之前,先使用updatedb指令,手動更新資料庫。 locate指令的使用執行個體:

  • locate /etc/sh

    ,搜尋etc目錄下所有以sh開頭的檔案。
  • locate ~/m

    ,搜尋使用者主目錄下,所有以m開頭的檔案。
  • locate -i ~/m

    ,搜尋使用者主目錄下,所有以m開頭的檔案,并且忽略大小寫。

3 whereis

whereis指令隻能用于程式名的搜尋,而且隻搜尋二進制檔案(參數-b)、man說明檔案(參數-m)和源代碼檔案(參數-s)。如果省略參數,則傳回所有資訊。 whereis指令的使用執行個體:

whereis grep

4 which

which指令的作用是,在PATH變量指定的路徑中,搜尋某個系統指令的位置,并且傳回第一個搜尋結果。也就是說,使用which指令,就可以看到某個系統指令是否存在,以及執行的到底是哪一個位置的指令。 which指令的使用執行個體:

which grep

grep

搜尋檔案中的資訊,一般為字元串,與正規表達式結合使用 grep [選項] 字元串 檔案名 (字元串使用 "" 包圍,結果為行記錄) -i 忽略大小寫 -v 排除指定字元串

find與grep的差別:

  • find:在 系統 中搜尋符合條件的 檔案名,使用 通配符(完全)比對
  • grep:在 檔案 當中搜尋符合條件的 字元串,使用 正規表達式 (包含)比對

time

time 可以統計指令執行的時間,包括程式的實際運作時間(real time),以及程式運作在使用者态的時間(user time)和核心态的時間(sys time)。

time git pull

則是統計更新代碼花費多長時間

alias

alias指令用來設定指令的别名。我們可以使用該指令可以将一些較長的指令進行簡化。使用alias時,使用者必須使用單引号''将原來的指令引起來,防止特殊字元導緻錯誤。

alias指令的作用隻局限于該次登入的操作。若要每次登入都能夠使用這些指令别名,則可将相應的alias指令存放到bash的初始化檔案

/etc/bashrc

中。

alias 的基本使用方法為:

alias 新的指令='原指令 -選項/參數'

alias l=‘ls -lsh'

将重新定義ls指令,現在隻需輸入l就可以列目錄了。直接輸入 alias 指令會列出目前系統中所有已經定義的指令别名。

要删除一個别名,可以使用 unalias 指令,如 unalias l。

檢視系統已經設定的别名:

alias egrep='egrep --color'
alias fgrep='fgrep --color'
alias grep='grep --color'
alias hpush='bash /Users/liwenhao/Desktop/github/hpush.sh'
alias ll='ls -l'
alias ls='ls -F --show-control-chars --color=auto'
alias vi='vim'
           

tail

tail

指令從指定點開始将檔案寫到标準輸出。使用tail指令的-f選項可以友善的查閱正在改變的日志檔案,

tail -f filename

會把filename裡最尾部的内容顯示在螢幕上,并且不但重新整理,使你看到最新的檔案内容.

  1. 指令格式;
    tail[必要參數][選擇參數][檔案]   
               
  2. 指令功能:用于顯示指定檔案末尾内容,不指定檔案時,作為輸入資訊進行處理。常用檢視日志檔案。
  3. -f 循環讀取
    -q 不顯示處理資訊
    -v 顯示詳細的處理資訊
    -c <數目> 顯示的位元組數
    -n <行數> 顯示行數
    --pid=PID 與-f合用,表示在程序ID,PID死掉之後結束.
    -q, --quiet, --silent 從不輸出給出檔案名的首部
    -s, --sleep-interval=S 與-f合用,表示在每次反複的間隔休眠S秒
               
  4. 舉例
    # 寫到1.log,且背景運作
    ping www.baidu.com > 1.log 2>&1 &
    # 循環檢視尾部日志
    tail -f 1.log
    # 殺死 ping程序
    killall ping
               

執行多個指令

  • 後一個指令依賴于前一個指令的輸出,可以是用管道(|)

    ls | wc -l

    :目前目錄檔案個數
  • 後一個指令必須等前一個指令運作成功後在運作,可以使用雙與号(&&)

    aa && ls

    :隻運作aa,ls不運作
  • 後一個指令必須等前一個指令運作完,不關心是否成功,使用單與号(&)

    aa & ls

    :aa和ls都運作,但是ls必須等aa運作完。
  • 并行執行多個指令,使用兩個豎号(||)

    aa || ls

    :aa和ls并行執行,互不影響。

執行shell腳本

當我們寫完一個腳本的時候,它是不可以被直接運作的。我們可以通過:

  1. 通過Bash調用執行腳本 :

    bash hello.sh

  2. 首先賦予執行權限:

    chmod 755 hello.sh

    ,然後就可以通過相對路徑

    ./hello.sh

    或者通過絕對路徑

    /root/hello.sh

    來執行。

Shell特殊變量:

$0

,

$#

$*

$@

$?

$$

和指令行參數

變量名隻能包含數字、字母和下劃線,因為某些包含其他字元的變量有特殊含義,這樣的變量被稱為特殊變量。

例如,

$$

表示目前Shell程序的ID,即pid,看下面的代碼:

$echo $$
           

運作結果

29949
           

特殊變量清單:

變量 含義

$0

目前腳本的檔案名

$n

傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。

$#

傳遞給腳本或函數的參數個數。

$*

傳遞給腳本或函數的所有參數。

$@

傳遞給腳本或函數的所有參數。被雙引号(" ")包含時,與 $* 稍有不同,下面将會講到。

$?

上個指令的退出狀态,或函數的傳回值。

$$

目前Shell程序ID。對于 Shell 腳本,就是這些腳本所在的程序ID。

指令行參數

運作腳本時傳遞給腳本的參數稱為指令行參數。指令行參數用

$n

表示,例如,

$1

表示第一個參數,

$2

表示第二個參數,依次類推。

請看下面的腳本:

#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
           

運作結果:

$./test.sh Zara Ali
           
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
           

$*

$@

的差別

$*

$@

都表示傳遞給函數或腳本的所有參數,不被雙引号(" ")包含時,都以

"$1"

"$2"

"$n"

的形式輸出所有參數。

但是當它們被雙引号(" ")包含時,

"$*"

會将所有的參數作為一個整體,以"

$1

$2

$n

"的形式輸出所有參數;

"$@"

會将各個參數分開,以

"$1"

"$2"

"$n"

下面的例子可以清楚的看到

$*

$@

的差別:

#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
echo "print each param from \$*"
for var in $*
do
    echo "$var"
done
echo "print each param from \$@"
for var in $@
do
    echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
    echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
    echo "$var"
done
           

執行 ./test.sh "a" "b" "c" "d",看到下面的結果:

$*=  a b c d
"$*"= a b c d
$@=  a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
           

退出狀态

$?

可以擷取上一個指令的退出狀态。所謂退出狀态,就是上一個指令執行後的傳回結果。

退出狀态是一個數字,一般情況下,大部分指令執行成功會傳回 0,失敗傳回 1。

不過,也有一些指令傳回其他值,表示不同類型的錯誤。

下面例子中,指令

$./test.sh Zara Ali

成功執行輸出:

File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$
           

$?

也可以表示函數的傳回值。

PATH環境變量

下面的第一種方式關機後會失效,相當于臨時環境變量,後面兩種都是寫進了系統配置,是以會永久生效。

  1. 直接用export指令

    export PATH=$PATH:/usr/local/src/node-v0.10.24/node_modules/node-sass/bin

  2. 修改profile檔案:
    • vi /etc/profile

    • 然後在檔案裡面加入

      export PATH=$PATH:/usr/local/src/node-v0.10.24/node_modules/node-sass/bin

    • 執行指令

      source /etc/profile

      生效
  3. 修改.bashrc檔案
    • vi /root/.bashrc

    • 在裡面加入

      export PATH=$PATH:/usr/local/src/node-v0.10.24/node_modules/node-sass/bin

    • source /root/.bashrc

如果修改了

/etc/profile

,那麼編輯結束後執行

source profile

(

source /etc/profile

) 或 執行點指令

. ./profile

,PATH的值才會立即生效,不然就隻有等下一次開機。

這個方法的原理就是再執行一次/etc/profile shell腳本,注意如果用sh /etc/profile是不行的,因為sh是在子shell程序中執行的,即使PATH改變了也不會反應到目前環境中,但是source是在目前 shell程序中執行的,是以我們能看到PATH的改變。

有時我們可能不小心将PATH環境變量設定錯誤導緻指令失效,可以參考下面兩種方式解決。

  1. 如果是通過指令行設定的,可以通過重新開機或者離開本次登入(退出本次shell)
  2. 如果是因為修改配置檔案導緻無法使用,可以執行

    export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

    指令暫時使用這些目錄下的指令,如

    vi

    ls

    cd

    ,從新修改配置檔案。

指令行快捷鍵

  1. 光标移動
    • Ctrl + f – 向右移動一個字元,當然多數人用→
    • Ctrl + b – 向左移動一個字元, 多數人用←
    • ESC + f – 向右移動一個單詞,MAC下建議用ALT + →
    • ESC + b – 向左移動一個單詞,MAC下建議用ALT + ←
    • Ctrl + a – 跳到行首
    • Ctrl + e – 跳到行尾
  2. 删除
    • Ctrl + d – 向右删除一個字元
    • Ctrl + h – 向左删除一個字元
    • Ctrl + u – 删除目前位置字元至行首(輸入密碼錯誤的時候多用下這個)
    • Ctrl + k – 删除目前位置字元至行尾
    • Ctrl + w – 删除從光标到目前單詞開頭
  3. 指令切換
    • Ctrl + p – 上一個指令,也可以用↑
    • Ctrl + n – 下一個指令,也可以用↓
  4. 其他快捷鍵
    • Ctrl + y – 插入最近删除的單詞
    • Ctrl + c – 終止操作
    • Ctrl + d – 目前操作轉到背景
    • Ctrl + l – 清屏 (有時候為了好看)
    • ctrl + z - 把指令放入背景,這個指令謹慎使用
    • ctrl + r - 曆史指令搜尋
    • Alt + f - 光标向前(Forward)移動到下一個單詞
    • Alt + b - 光标往回(Backward)移動到前一個單詞
    • Ctrl + w - 删除從光标位置前到目前所處單詞(Word)的開頭
    • Alt + d - 删除從光标位置到目前所處單詞的末尾
    • Ctrl + y - 粘貼最後一次被删除的單詞

參考文檔:

  1. Linux的五個查找指令
  2. 初窺Linux 之 我最常用的20條指令
上一篇: QuickSort