對於初學者而言,命令行可能有些晦澀難懂。確實,對於一個早已適應windows下鼠標點點就完成一切的用戶來說,在一個比dos好不了多少的終端裏輸入一堆不知道怎麼放到到一塊的字符,的確不是一個很舒服的事情。但是,至少對於看這本書的讀者而言,以後將要從事的工作和計算機都是分不開的。如果你把電腦當作很簡單的工具的而不下功夫瞭解的話,估計一輩子都學不好計算機。所以,雖然命令行看似很古董,看似很落後,它是你瞭解計算機最好的窗口,當你有一天入門之後,你會發現,哇,原來計算機是這個樣子啊。
我在學習linux的過程發現,很多講授命令行的書,會把大量平時很少用到(僅僅指linux下編程,系統運維除外)或者新手不可能接觸的命令一一羅列出來,這就如同學英語一樣,拿一本牛津詞典讓你從頭到尾背到尾,可能你的英語水平會因此提高很多,但這絕不是學習的最佳手段。況且,在初期,你只需要記住最常用的命令,在以此爲基礎慢慢拓展。當你遇到不熟悉的命令時,你只需要man一下,或者利用搜索引擎找到相關用法就可以了。
因此,我下面所羅列的命令,基本上屬於最常用的,而且相對比較容易理解。可能這些內容既少又簡單,不能讓你感受到命令行的強大和魅力,但是當你熟悉了這些基本的命令之後,會更容易接受其它相對複雜的命令。因爲不管做什麼事情,都有一個循序漸進的過程,一口吃個大胖子的想法不僅不現實,還有可能造成厭食症。況且事物之間都是有聯繫的,當你熟悉一些東西之後,會幫助你更好的理解其它的問題。(以下命令均在終端輸入)
1.1聯機文檔
開始就講聯機命令的目的,是幫助你培養一種習慣:當你遇到不熟悉的命令或功能時,隨時可以在終端輸入man/info + 命令進行查詢。雖然多數的幫助文檔是英文的(我在ubuntu下遇到的基本全是),它們的閱讀難度都很小,既沒有複雜的語法,也不會故意設置長難句考察你的英語閱讀能力。所以,剛開始可能你不會太適應,但是慢慢的你就會習慣了,並且,在這個過程中,你的英語閱讀水平會不斷的提高,這也是一種進步和收穫。
聯機命令的作用,就是可以幫助你查看每一個命令的所有功能選項,能幫助你更好地理解和應用。linux下的聯機命令有man,info和help,其中最常用的就是man,用法就是在它們後面直接加上命令。相比於man,info命令具有更強的交互性,並且更詳細;而help則比較簡潔。
下面是一個典型的應用:
lishuo@lishuo-Rev-1-0:~$ man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
........
........
1.2文件系統
文件系統這個詞聽着很嚇人,但我不會羅列一大堆晦澀的概念放在那裏讓你消化,下面要講的僅僅是一個實用的命令,這些命令在平時用到的比較多,基本上都是對文件目錄的操作。這也是我開始就講文件系統的原因,我們在進行某項工作的時候都是在特定的目錄下,如果不熟悉文件系統的話,你可能連你操作的文件都找不到。linux的文件系統和windows差別比較大,你無法找到D.E.F盤去存儲或打開你需要的文件,尤其是使用一些命令行工具時,鼠標不能再幫你找到你所需要的文件或路徑。因此,只有當你熟悉linux的基本文件系統之後,你才能更好的開展其它的工作。
下面是一個典型的linux文件系統的目錄層次,熟悉它會幫助你理解後面的講解。
例如我自己的桌面的目錄是: /home/lishuo/桌面
注:lishuo是我的用戶名,後面可能會涉及到
1:pwd : 顯示當前的工作目錄
2:ls/dir:顯示當前目錄下所有文件名
3:cat:顯示文本文件的內容
less/more:分屏顯示文件內容,適合超過一屏的文件
4:cd:更改工作目錄。
例如: cd 絕對路徑: cd /home/lishuo/桌面
cd 相對路徑: cd 桌面
cd ..:進入上一級
cd ~ :進入主目錄
5:cp:複製文件或目錄
cp 源文件 目標文件
cp -R dir1 dir2
例如:cp test.txt 001.txt 把test複製一份生成001
cp hic ~/home/文檔 把當前目錄下的hic複製到文檔中
6:mv:移動或重命名文件或目錄
mv 存在文件 新文件
mv file_lists directory
例如:mv a.txt b.txt 把a重命名爲b
7:rm : 刪除文件或目錄(加選項-r刪除目錄)
rmdir:刪除目錄。通常情況加上-i實現交互,防止誤刪。
例如:rm -i test.txt
rm -i -r test
8:touch:創建新文件或改變文件的訪問和修改時間。
例如:touch test.txt 如果不存在test,則在當前目錄下創建它。
9:mkdir:創建目錄
例如:mkdir test 在當前目錄下創建目錄test
10:diff:對兩個文件進行比較,顯示兩者的不同之處,但是不會改變文件內容。
11:file: 查看文件的狀態和信息
12:ls -l:顯示訪問權限
13:find:在用戶指定的目錄下查找指定的文件或目錄
語法格式:
find [起始目錄] [搜索條件] [操作]
例如:
find . -name '*.txt' -print
會在當前目錄下查找所有的以.txt結尾的文件並顯示出來。
14: head:顯示文件的頭部信息
15: tail:顯示文件的尾部信息
16:wc命令:統計給動文件中的字節數,字數和行數。
wc -m filename : 顯示一個文件的字符數。
wc -l filename : 顯示一個文件的行數
wc -L filename : 顯示一個文件中最長行的長度。
wc -w filename : 顯示一個文件的字數。
17: sort命令:對文件中的各行進行排序
18: chmod 命令:修改文件的權限
19:mount/unmount:加載或卸載文件系統
下面是三種比較常用的命令:
mount -v -t auto /dev/hdb3 mnt/dir
自動檢測文件系統並加載/dev/hdb3到目錄mnt/dir下,執行時顯示詳細信息
umount -v /mnt/dir
卸載當前掛載在mnt/dir中的文件系統,執行時顯示詳細信息
mount -o loop a.img /mnt/floppy_img
將鏡像文件a.img掛載到/mnt/floppy_img下
1.3其它常用命令
1:定位命令
whereis:在標準路徑下搜索,與用戶設定的路徑無關,它會顯示所有搜索到的文件。
which:在設定的搜索路徑下按順序搜索目錄,定位命令並執行。
2:顯示日期和時間
date:設定系統時間
cal:顯示日曆
3:顯示文本
echo
echo工具可將其後的任何內容顯示在屏幕上。它在解釋shell變量的工作機制以及在屏幕上顯示shell腳本時非常有用。
4:格式轉換
unix2dos test.txt 將其轉換爲dos格式的文本文件
dos2unix test.txt 將其轉換爲linux格式的文本文件
5:系統信息
cat /proc/meminfo:查看內存使用
cat /proc/cpuinfo:CPU使用率
top:顯示所有進程信息
ps:顯示進程的PID號
free:顯示內存信息
kill:殺死進程
time:顯示進程的執行時間
&:將命令放在後臺執行
6:終端
打開終端:Ctrl + Alt + T(或着是Ctrl + Shirt + T)
關閉終端:Ctrl + Shift + Q
複製:Ctrl + Shift + C
粘貼:Ctrl + Shift + V
clrear:清屏(會保留以前輸入的命令)
reset:重新初始化終端,效果和clear差不多
小技巧:在輸入的時候,TAB鍵可以幫你補全命令,兩次TAB會列出所有的可能。
7:重定向和管道
1:重定向:改變shell標準輸入來源和標準輸出去向的各種方式。
通過重定向符號(>)可以將shell命令的輸出重定向到指定的文件而非屏幕。
例如: commmand > filename
通過重定向符號(<)可以將shell命令的輸入重定向到指定的文件而非鍵盤。
例如:command < filename
2:管道:管道的功能類似於下面的過程:將一個命令的標準輸出重定向到
一個文件,然後將該文件作爲另一個命令的標準輸入。
命令行語法格式:commandA | commandB
其類似與:commandA > temp
commandB < temp
rm temp
8:備份與壓縮
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
.gz
解壓:gunzip FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
.bz2
解壓:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName
.bz
解壓:bzip2 -d FileName.bz
.tar.bz
解壓:tar jxvf FileName.tar.bz
.Z
解壓:uncompress FileName.Z
壓縮:compress FileName
.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName
.zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
8:安裝卸載軟件:apt和dpkg
APT:
1.apt-get install 軟件包名稱:安裝或者升級指定軟件包
2.apt-get remove 軟件包名:移除指定軟件包
3.apt-get upgrade:對系統的軟件全面升級
5.apt-get clean:清理apt-get 後下載下來的包和未完成的包(安裝源程序被清理)
dpkg:底層一些的包管理工具,用上apt(高級包管理工具)之後,一般是不需要處理單個的deb文件的。如果需要,就要用dpkg命令
1.dpkg -i gedit-2.12.1.deb:安裝gedit-2.12.1.deb
2.dpkg -r gedit:卸載gedit,但不刪除配置文件
3.dpkg -P gedit:這會連同gedit的配置文件一起刪除,只用-r的話是不刪除配置文件的
9:dd:轉換並複製文件
dd主要用來像在磁帶或者軟盤驅動器之間複製文件。dd可以在不同的操作系統之間傳遞信息而其它方法都不行。
例如:將test.bin文件寫入a.img軟盤中。
dd if=test.bin of=a.img bs=1 count=512 comv=notrunc
具體用法請使用聯機命令。
11:開關機
由於關機重啓之類的命令需要root權限,所以需要在命令前面加上sudo提權,或者輸入sudo -s -E和密碼進入root然後執行相關命令。
關機:
sudo halt
sudo shutdown now
重啓:
sudo reboot
sudo shutdown -r