有些人仍然會有這中愚蠢的想法,他們認爲使用Linux就必須使用Linux shell命令。胡說!你能夠不懂得任何Linux命令,好比說ps,grep,ls等,可是你仍然可使用不少現代的Linux桌面發行版。
Linux的系統管理員與桌面用戶不同,他們不像桌面用戶同樣使用Cinnamon, GNOME, Unity, 或者 KDE,他們全部的時間都是用Linux命令。
對於桌面用戶來說,如果瞭解一部分Linux命令,你能夠更好的使用Linux,體驗它的魅力,下面列舉出了一些:正則表達式
Shell 基礎:
你能夠經過打開Linux的terminal(終端)來執行Shell命令。Shell的種類有不少種,例如CSH,Bourne Shell,Korn Shell。在如今的大多數Linux發行版中,默認的Shell通常都是Bourne again shell(bash).
想看看你的Shell是哪種,執行下面的命令shell
在Linux中,$符號表明一個shell 變量。全部的shell都用這種方式使用變量。有一些shell變量在你的系統啓動的時候就有了默認值。例如,$SHELL;$LOGNAME是你的登陸名,而$PATH變量指明瞭你的shell命令的搜索範圍。
echo命令的做用就是打印出你的輸入。若是你的輸入具備shell的特殊意義,例如shell變量,他就輸出變量的值。
一個重要的地方是,你要注意文本的大小寫。例如,ls,是DOS的dir命令的Linux版本。這個命令列出當前工做目錄下的文件列表。若是你輸入的是LS,你獲得的只能是「找不到命令」的錯誤信息。
另外在Linux shell命令中一個重要的地方是,你能夠將命令串起來。這是Unix/Linux從第一天開始就有的巧妙的特色。最簡單的將命令連起來的辦法就是使用「|」,咱們稱之爲「pipe」。第一個命令的輸出就是下一個命令的輸入。
Linux命令有本身的語法規則:
基本的語法就像這樣:
例如:
這行命令的意義是輸出當前目錄的全部文件的文件名,l表明「long」,a表明「all」,有了l選項,你會發現,輸出的內容比較豐富,不僅包括文件名,還有文件的訪問權限,全部者,所屬組等。你會發現這個命令會在屏幕上輸出大量的信息,若是當前目錄的文件比較多的話。
如今就是「pipe」出場的時候了。
你會在屏幕上看到以下信息:編程
你也能夠在大多數Linux命令中使用通配符。通配符就是能夠表明文件名中任何未知的字符或字符串。例如,*就表明任意字符串,?表明單個字符。例如:
這個命令會列出在當前工做目錄下全部的以小寫a開頭的文件,好比說abc.txt,alpha.jpg等等。
這條命令會列出全部以小寫a開頭隔一個未知字符以小寫cd結尾的全部文件。例如adcd,axcd,可是不會列出adfdcd,也不會列出axcd.txt。安全
一些經常使用的命令
man:若是你想了解每個命令表明什麼含義以及他的用法,你就可使用man(意義爲manual)命令,例如:
man輸出的內容是爲系統管理員和開發者編寫的,若是你想了解更多命令的用法,你能夠去找網絡上的Linux命令文檔,有一個很是方便的就是丹尼爾·巴雷特的Linux的袖珍指南。
在之前若是你真的想學習Linux和Unix你必須閱讀man手冊。而在2012年的今天,面對如此好用的圖形界面,這句話顯得不是那麼的重要,可是若是你想了解Linux更深,閱讀man手冊仍然是一個好的開始。
su 和sudo: su命令的做用是切換用戶,這也被稱爲超級用戶,由於在有些系統中su命令可使你以系統的全部權限用戶root登陸。除非你是系統管理員,不然我毫不推薦你使用su切換到root,由於這可能給你帶來不少麻煩。
一個相對安全的多的辦法是使用sudo命令,這個命令能夠上你以root權限運行一個命令。
這兩個命令都須要系統密碼。在大多數Linux的桌面發行版中這兩個是相同的,就是你係統的第一個用戶設置的密碼。
grep:grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。 例如:
返回在password文件中全部的含有foo的行
grep -i "foo" /etc/passwd
-i選項是忽略大小寫,這就意味着若某一行含有FOO或FOo也會被搜索到。
grep還支持遞歸搜索:
這條命令將會搜索/home/sjvn目錄及其子目錄下全部的包含「foo」的行
grep也一般與其餘命令串連起來使用,例如:
列出當前目錄下任何以foo開頭的文件或目錄。例如以下文件將被匹配:foo,foobar,foolish.txt等等。
ps:報告進程的狀態。此命令將顯示哪些程序正在運行。我使用PS和grep比其餘任何命令使用的都要多。
如今假如你有一個程序運行出了錯誤,你不能再桌面上把他關掉,(我看準你了,火狐),我運行以下命令就能查看他的進程id:
·第一,他找出全部當前在個人電腦上運行的程序
·而後grep命令找出這些文件中叫「firefox」的,顯示到屏幕上。
·每一行都有一個進程id數字。有了,如今我就能夠是用...
kill:這條命令就想他的名字同樣,他能夠幹掉指定的進程。幹掉運行錯誤的firefox或者其餘我想幹掉的進程。
這將會幹掉全部進程id爲1234的程序。爲了確保這個程序已經被幹掉(強行終止),我使用下面的命令
clear: 若是你以爲你的屏幕上有太多的東西,看起來很討厭,可使用clear命令清空。
文件/目錄命令
cp:cp表明copy,就是複製,他能夠複製一個或多個文件到指定的一個或多個目錄下。
一個一般的用法是:
把fred.txt中的內容複製到當前文件夾中名爲ethel.txt中
cp fred.txt /home/sjvn/docs/fred.txt
把fred.txt複製到指定文件中。
cp *.txt /home/sjvn/docs/
複製當前目錄下全部以.txt結尾的文件到指定的目錄下。
cp -r /home/sjvn/docs/* /home/sjvn/backup
遞歸的複製在/home/sjvn/docs/目錄下的全部文件到指定的文件夾。
hostname: 顯示你當前登陸進去的計算機的名稱。
mv:mv(意義爲move)顧名思義就是移動,能夠移動指定文件到指定位置。固然這個命令有的時候還能夠用來實現重命名。
例如:
這條命令的做用你能夠簡單的認爲是重命名fred.txt爲ethel.txt。
固然此命令還有其餘用法,此處再也不一一羅列,用法與cp相似,只是這條命令再也不保留原文件。
rm:rm表明remove,是刪除的意思,因此我運行:
我將刪除fred.txt。
我強烈推薦你在執行rm命令的時候使用-i選項。這兒選項將在你執行命令的時候詢問你是否要真的刪除文件。就像這樣:
rm -i fred.txt
系統信息
uname: uname -a命令用一行簡短的給你總結的電腦的基本信息。這一般包括你的電腦名稱,Linux內核版本,你的發行版名稱等。bash
對於更詳細的信息,你可使用cat命令,他能夠顯示你的Linux電腦中的文本信息。
cat /proc/cpuinfo
展現你的CPU的重要的統計。
cat /proc/version
展現你的當前運行的Linux發行版的詳細信息。
cat /etc/printcap
展現你當前安裝的打印機。
set | more: set|more
組合命令能夠給你更多的呢當前的桌面環境變量的信息。單若是你只是想知道你係統環境變量中的某一個或兩個,能夠執行以下命令:
echo $PATH
結束或者說是另外一個開始
這裏給你展現的只不過是Linux命令的表皮。成百上千的書和網站能夠給你更多更復雜的如何使用Linux命令的展現。本文只是讓你在想了解比Linux Gui更深一層時的參考。
若是你想學習更多的關於LInux,推薦你去LinuxCommand.org或者看一看Linux in a Nutshell。若是你想變成一個Linux shell編程的大師,推薦你去學習卡梅倫紐漢姆的 Learning the bash Shell 。網絡
英文原文/OSChina.NET原創翻譯工具