linux常用命令的使用總結

jopen 10年前發布 | 30K 次閱讀 Linux

        用了很久的linux,總是記不全所有命令,在此做個總結,為初學者提供一個入門的文檔,也方便自己日后查詢。

1. 基本命令

1.1 echo

        echo命令即為顯示的意思,可以將其后面的數據原封不動地打印出來,例如:
[root@emma_test_server bin]# echo hello world
hello world
當然,也可以用于打印一些系統變量,需要在變量名稱前面加“$”,最為常見的即為PATH:
[root@emma_test_server bin]# echo $PATH
/usr/java/jdk1.6.0_31/bin:/usr/java/jdk1.6.0_31/jre/bin:/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
順便提一句,每個路徑之間必須用“:”來作為分隔符。如果要修改增加環境變量的話,可以之間在命令行中輸入:
[root@localhost conf]# PATH="$PATH":/root

1.2 ls

       ls命令可能是Linux系統中最最常用的命令,用戶查看當前目錄下的子目錄和文件列表。我們可以通過man ls命令來查看ls的具體用法,不過大部分參數在日常應用中不會被使用。最常見的兩個參數為 -a:用于顯示所有目錄和文件,包括隱藏的; -l:列出文件的具體信息,包括文件屬性,大小,所有者,group信息,修改如期等等:
[root@emma_test_server bin]# ls -al
total 8100
drwxr-xr-x  2 root root    4096 Aug 26  2011 .
drwxr-xr-x 27 root root    4096 May 28 02:34 ..
-rwxr-xr-x  1 root root    8992 Aug 28  2008 alsacard
在ls后面加文件名,則會只顯示該文件的信息
[root@emma_test_server bin]# ls -l vi
-rwxr-xr-x 1 root root 632912 Jun 12  2009 vi

1.3 cp, rm,mv

       cp是linux下另一個很常用的命令,基本格式為:cp [參數信息] 源文件 目標文件。需要注意的是其幾個比較重要的參數設置:
               -a:復制文件或者文件夾的所有信息,包括文件所有屬性,文件夾采用遞歸復制,其結果是復制出來的目標文件和源文件一模一樣,相當于-pdr
               -f:強制復制,即使目標文件已經存在,就覆蓋掉
               -r:遞歸復制,用于文件夾
               -d:如果源文件為鏈接文件,則復制鏈接屬性。默認不加參數時,會復制鏈接的原始文件
               -p:與源文件的屬性一起復制,而不是采用默認屬性。如果沒有-p,文件的所有者,group,以及執行權限都可能改變
               -s:復制成鏈接文件,即目標文件是一個鏈接文件(符號鏈接)
               -l:硬鏈接
               -u:如果目標文件已經存在,而且比源文件新,則不會更新
       rm是Linux的刪除命令,只需要記住在刪除文件夾的時候,使用 rm -rf 目標文件夾。參數說明和cp的說明一致
       mv是Linux的移動或者重命名命令,格式為:mv -ru source1 soucre2 source3 目標文件夾

1.4 查看文件內容的命令

       cat:從文件的第一行開始,將整個文件顯示出來。這個命令并不太好用,因為如果文件很長,根本來不及看。-A參數可以顯示出一些平時看不到的特殊字符,比如回車會顯示成$。
       tac:功能和cat一樣,不同的是用反序的方式顯示文件。例如,它會先顯示文件的最后一行,然后倒數第二行
       more,less:用于翻頁查看,本人覺得如果用戶查找的話,還沒有vim好用
       head,tail:用戶顯示文件的開頭和末尾幾行,其中tail比較好用,tail -f 目標文件,可以用于查看實時更新的文件,比如log文件。

1. 5 查看文件類型:

       基本命令為file,例如:
[root@emma_test_server conf]# file httpd.conf
httpd.conf: ASCII English text

1. 6 用戶與權限:

       Linux下的文件有一個文件擁有者和組的屬性,如果要改變其用戶屬性,可以用chown命令。 基本格式為 chown username:groupname filename。
       另外,每一個文件都有10個屬性,例如drwxrwxrwx,其中第一個字母代表文件類型,如果是d表示是文件夾,如果是-表示是文件,如果是l表示是鏈接文件等等。而后面的9個屬性可以分為三組rwx,分別代表擁有者,用戶組以及其他人的read,write,excute屬性。
       那么當我們創建了一個新文件的時候(創建新文件一般用命令:touch 文件名)。其默認屬性是怎么樣的呢?
  • 當建立文件時:(-rw-rw-rw)-(-----w--w-)== (-rw-r--r--)
  • 當建立文件夾時:(drwxrwxrw)-(-----w--w-)== (drwxr-xr-x)                
       這兩個式子中第一個括號內表示創建出來文件或者文件夾的原始屬性,第二個參數表示umask,第三個括號表示創建出來的默認屬性。
       我們可以用umask命令查看系統當前的設置:
[root@emma_test_server conf]# umask
0022
[root@emma_test_server conf]# umask -S u=rwx,g=rx,o=rx
        我們可以看到,默認情況下,系統會自動mask掉文件的對于組成員和其他人的w屬性。當然,我們也可以設置umask,如命令umask 002。

1.7 文件查找:

  • which命令可以用于查找可執行文件       
[root@emma_test_server conf]# which httpd
/usr/sbin/httpd
  • whereis和locate命令可以用于快速查找文件,但由于讀取的是數據庫,而不是掃描硬盤,所以可能會讀取到已經刪除了的文件,因為數據庫不會實時更新。默認每天執行一次。也可以手動更新,用updatedb命令。
  • find命令可以掃描硬盤,查找文件,但是比較耗時。用法為:find [PATH] [option] [action]。最常用的方法如下:
[root@emma_test_server conf]# find /usr/local/apache2/ -name httpd.conf -exec ls -l {} \; -rw-r--r-- 1 root root 18974 Nov 15 08:29 /usr/local/apache2/conf/httpd.conf
-rw-r--r-- 1 root root 13346 Nov  5 10:45 /usr/local/apache2/conf/original/httpd.conf
[root@emma_test_server conf]# find /usr/local/apache2/ -name httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/original/httpd.conf
[root@emma_test_server conf]# find /usr/local/apache2/ -size +10000k
/usr/local/apache2/htdocs/emma-2011-09-28.log
/usr/local/apache2/htdocs/emma-2011-09-27.log
/usr/local/apache2/htdocs/emma-2011-12-28.log
/usr/local/apache2/htdocs/emma-2011-09-09.log
/usr/local/apache2/htdocs/emma-2011-09-12.log
/usr/local/apache2/htdocs/emma-2011-10-27.log
/usr/local/apache2/htdocs/emma-2011-11-18.log
/usr/local/apache2/htdocs/emma-2011-10-28.log
/usr/local/apache2/htdocs/emma-2011-11-04.log
/usr/local/apache2/htdocs/emma-2011-10-21.log
/usr/local/apache2/logs/access_log


1.8 文件鏈接:

        文件鏈接用ln命令,基本格式為ln -s src des。-s參數表示符號鏈接,如果沒有-s參數,默認采用硬鏈接。需要注意的是,符號鏈接可以用于文件或者目錄,但是如果源文件被刪除,符號鏈接會找不到文件而報錯。硬鏈接只能用于文件,不能用于目錄,如果源文件被刪除,硬鏈接依舊能找到該文件。

1. 9 文件壓縮:

        Linux下壓縮文件最常用的就是gzip命令了,壓縮文件使用gzip source,解壓縮命令則為gzip -d source.gz。另外還有bzip2命令,用法相同,只是壓縮后的文件后綴名為bz2。
        相對于gzip和bzip2,Linux下的tar命令更為強大,它不僅可以提供壓縮命令,還可以將很多文件打包到一個文件內。當然,一開始的時候tar只具有打包功能,你會發現打包后的文件與源文件大小之和沒區別。現在的Linux大部分都支持tar的壓縮功能,使用參數-z或者-j來壓縮。其命令參數為:
  • -c創建壓縮文件
  • -x解壓縮文件
  • -z用gzip壓縮
  • -j用bzip2壓縮
  • -v在壓縮過程中顯示被壓縮的文件
  • -f后面直接接壓縮后的文件名             
        一般來說,壓縮的時候用 tar -czvf EmmaDeploy.tar.gz EmmaDeploy;解壓縮的時候用tar -zxvf EmmaDeploy.tar.gz

1. 10 歷史命令與執行:
        Linux下提供查詢曾經使用過的命令的查詢,如下,顯示最近執行過的10條命令
[root@emma_test_server mm]# history 10
 1001  cd /usr/local/mm
 1002  ls
 1003  vim relin_deploy.py
 1004  export
 1005  locate -a
 1006  locale -a
 1007  export
 1008  ulimit -a
 1009  history
 1010  history 10
         可以用!!來執行上一條執行過的命令,當然,我們一般用方向鍵就可以實現同樣的功能:
[root@emma_test_server mm]# !!
history 10
 1002  ls
 1003  vim relin_deploy.py
 1004  export
 1005  locate -a
 1006  locale -a
 1007  export
 1008  ulimit -a
 1009  history
 1010  history 10
 1011  history 10



2. 文字處理中的命令:

        在介紹文字處理之前,必須先科普下什么叫做純文本文件。所謂純文本文件就是指無論采用何種文字編輯器打開,都能顯示文件,看到內容,而不是呈現一堆亂碼。例如,用windows下的word保存的.doc文件就不是純文本文件,用vim打開會呈現一堆亂碼。
        Linux下的文字編輯工具非常多,筆者覺得最好用的還是vim,下面介紹下vim的使用方法。vim的編輯有三種模式:
  • 一般模式,在使用vim source之后進入vim編輯器所處的模式,左下角沒有INSERT字樣
  • 編輯模式,在使用i,a等按鈕進入編輯模式,左下角會顯示INSERT字樣,可以插入字符
  • 命令行模式,按下:,/,?之后進入命令行模式。 
        在一般模式下,比較有用的命令為:
  • h,j,k,l表示上下左右移動光標
  • gg移動到第一行
  • nG表示移動到第n行,n為數字
  • G表示移動到最后一行
  • n加回車,向下移動n行,n為數字
  • 搜索:/word,向下搜索word字符串,?word,向上搜索字符串。n下一個,N上一個
  • 刪除:x刪除后一個字符,X刪除前一個字符,dd刪除一行,ndd向下刪除n行,d1G 刪除光標到第一行的數據,dG刪除光標到末尾的數據
  • 復制:yy復制一行,nyy復制n行,y1G 復制光標到第一行的數據,yG復制光標到末尾的數據
  • 粘帖:p粘帖到下一行,P粘帖到上一行
  • :w寫入文件,:q退出文件,:q!強行退出

3. Shell的使用中另一些常用命令:

       env打印所有的環境變量:
[root@chn-setemma /usr/local/tongban/logs]# env
ICU_DATA=/usr/local/emma_weibo_crawl/3rdParty/ICU/icu/data/SOLARIS/
DB2INSTANCE=db2admin
MANPATH=:/opt/compilers/man
TOMCAT_HOME=/usr/local/web-socket/tomcat
       set打印除了環境變量外的所有變量。

       unset name消除變量。
       自己定義的變量只會在自己的環境中使用,不會影響到同時登錄到該機器的其他人。另外,一旦用戶登出,則變量會自動失效,下次登錄的時候需要重新定義。如果想在登錄后自動加載一些變量,則必須修改登錄配置文件。

       打印當前shell的PID:
[root@chn-setemma /usr/local/tongban/logs]# echo $$
23559

        export 變量名,將變量變為環境變量,那么子程序就可以使用該變量。注意此處的環境變量的意思是讓子進程可以訪問,export之后,該變量就會被保存到父進程的內存中,而子進程可以訪問父進程的內存。但是與父進程平行的另一個用戶的shell不能訪問export出來的變量。另外,命令行數據的變量,甚至于環境變量都是針對此次登錄的時候可見,一旦注銷,所有的變量都會消失。因此,對于一些在每次登錄的時候都需要的環境變量來說,需要將它們寫在啟動配置文件里面。
       系統配置文件:/etc/profile,  /etc/bashrc,   /etc/profile.d/*.sh,  用戶配置文件:~/.bash_profile, ~/.bash_login, ~/.profile,  ~/.bashrc。如果需要所有用戶都是用的變臉最好聲明在/etc/profile中,而只有自己使用的變量聲明在~/.bashrc中。


        declaretypeset一樣,用于聲明變量屬性,例如declare -i sum=100+200,那么echo $sum則會輸出300。有比如,declare -x sum,則sum變為環境變量

        ulimit可以打印單個用戶登錄時,對系統的使用權限的上限,例如打開文件的數量,文件大小,cpu時間等等
[root@emma_test_server mm]# ulimit -a core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 40960
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 40960
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

       此處需要介紹一下Linux的小命令操作符"`",這個是鍵盤1左邊的那個鍵。在兩個`之間的命令作為一個子命令會被獨立運行并傳回結果。例如:最常用的就是`date --date="2 days ago" +%Y%m%d`放在另一個命令中間來獲取時間,起一個小命令的作用

4. 管道相關:

         Linux中管道用|來表示,即將前一句命令的處理結果傳輸到下一句命令來處理。下面例舉幾個管道常用的命令:
  • tee: ls -l /home | tee ~/homefile | more.  tee可以在不改變原來的輸出的情況下,重定向另一個輸出文件。
  • wc:ls -l /home | wc 用與計算行數
  • sort:cat /etc/passwd | sort -t ':' -k 3:-t后面接的是分隔符,-k后面接的是分割之后根據第幾個field進行排序
  • uniq:cat /etc/passwd |sort | uniq:uniq表示重復的數據只顯示一次
  • cut:echo $PATH | cut -d ':' -f 5: 將結果進行分割,-d后面接分隔符,-f后面接要取得幾個field
  • grep:搜索命令


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!