1. 程式人生 > >Linux 命令行大全

Linux 命令行大全

command -h 令行 shu 是個 但是 資源 大全 發行版

date 顯示當前時間和日期
cal 顯示當前月份的日歷
df  查看磁盤剩余空間的數量
free 顯示空閑內存的數量
pwd 打印當前工作目錄
cd 切換目錄
ls 列出文件夾內容
絕對路徑:開始於根目錄
相對路徑:開始於工作目錄  .工作目錄  ..工作目錄的父目錄
cd - 更改目錄到先前的工作目錄
cd ~ 切換到家目錄
ls 
-l 結果以長模式輸出 
-t 選項按文件的修改時間的先後來排序 
--reverse 結果會以相反的順序輸出
-h 更友好的方式顯示 
-a 列出所有文件包括隱藏文件
file filename
打印文件內容的簡單描述

less filename 
查看文件的內容,可以前後滾動,按q可退出
目錄  評論
/   根目錄,萬物起源。
/bin    包含系統啟動和運行所必須的二進制程序。
/boot   包含 Linux 內核、初始 RAM 磁盤映像(用於啟動時所需的驅動)和 啟動加載程序。

有趣的文件:
/boot/grub/grub.conf or menu.lst, 被用來配置啟動加載程序。
/boot/vmlinuz,Linux 內核。
/dev    這是一個包含設備結點的特殊目錄。“一切都是文件”,也適用於設備。 在這個目錄裏,內核維護著所有設備的列表。
/etc    這個目錄包含所有系統層面的配置文件。
它也包含一系列的 shell 腳本, 在系統啟動時,這些腳本會開啟每個系統服務。這個目錄中的任何文件應該是可讀的文本文件。

有趣的文件:雖然/etc 目錄中的任何文件都有趣,但這裏只列出了一些我一直喜歡的文件:
/etc/crontab, 定義自動運行的任務。
/etc/fstab,包含存儲設備的列表,以及與他們相關的掛載點。
/etc/passwd,包含用戶帳號列表。
/home   在通常的配置環境下,系統會在/home 下,給每個用戶分配一個目錄。普通用戶只能 在自己的目錄下寫文件。這個限制保護系統免受錯誤的用戶活動破壞。
/lib    包含核心系統程序所使用的共享庫文件。這些文件與 Windows 中的動態鏈接庫相似。
/lost+found 每個使用 Linux 文件系統的格式化分區或設備,例如 ext3文件系統, 都會有這個目錄。當部分恢復一個損壞的文件系統時,會用到這個目錄。除非文件系統 真正的損壞了,那麽這個目錄會是個空目錄。
/media  在現在的 Linux 系統中,/media 目錄會包含可移動介質的掛載點, 例如 USB 驅動器,CD-ROMs 等等。這些介質連接到計算機之後,會自動地掛載到這個目錄結點下。
/mnt    在早些的 Linux 系統中,/mnt 目錄包含可移動介質的掛載點。
/opt    這個/opt 目錄被用來安裝“可選的”軟件。這個主要用來存儲可能 安裝在系統中的商業軟件產品。
/proc   這個/proc 目錄很特殊。從存儲在硬盤上的文件的意義上說,它不是真正的文件系統。 相反,它是一個由 Linux 內核維護的虛擬文件系統。它所包含的文件是內核的窺視孔。這些文件是可讀的, 它們會告訴你內核是怎樣監管計算機的。
/root   root 帳戶的家目錄。
/sbin   這個目錄包含“系統”二進制文件。它們是完成重大系統任務的程序,通常為超級用戶保留。
/tmp    這個/tmp 目錄,是用來存儲由各種程序創建的臨時文件的地方。一些配置導致系統每次 重新啟動時,都會清空這個目錄。
/usr    在 Linux 系統中,/usr 目錄可能是最大的一個。它包含普通用戶所需要的所有程序和文件。
/usr/bin    /usr/bin 目錄包含系統安裝的可執行程序。通常,這個目錄會包含許多程序。
/usr/lib    包含由/usr/bin 目錄中的程序所用的共享庫。
/usr/local  這個/usr/local 目錄,是非系統發行版自帶,卻打算讓系統使用的程序的安裝目錄。 通常,由源碼編譯的程序會安裝在/usr/local/bin 目錄下。新安裝的 Linux 系統中,會存在這個目錄, 但卻是空目錄,直到系統管理員放些東西到它裏面。
/usr/sbin   包含許多系統管理程序。
/usr/share  /usr/share 目錄包含許多由/usr/bin 目錄中的程序使用的共享數據。 其中包括像默認的配置文件、圖標、桌面背景、音頻文件等等。
/usr/share/doc  大多數安裝在系統中的軟件包會包含一些文檔。在/usr/share/doc 目錄下, 我們可以找到按照軟件包分類的文檔。
/var    除了/tmp 和/home 目錄之外,相對來說,目前我們看到的目錄是靜態的,這是說, 它們的內容不會改變。/var 目錄是可能需要改動的文件存儲的地方。各種數據庫,假脫機文件, 用戶郵件等等,都位於在這裏。
/var/log    這個/var/log 目錄包含日誌文件、各種系統活動的記錄。這些文件非常重要,並且 應該時時監測它們。其中最重要的一個文件是/var/log/messages。註意,為了系統安全,在一些系統中, 你必須是超級用戶才能查看這些日誌文件。
通配符
*   匹配任意多個字符(包括零個或一個)
?   匹配任意一個字符(不包括零個)
[characters]    匹配任意一個屬於字符集中的字符
[!characters]   匹配任意一個不是字符集中的字符
[[:class:]] 匹配任意一個屬於指定字符類中的字符

常用字符類別:
[:alnum:]   匹配任意一個字母或數字
[:alpha:]   匹配任意一個字母
[:digit:]   匹配任意一個數字
[:lower:]   匹配任意一個小寫字母
[:upper:]   匹配任意一個大寫字母
mkdir directory 創建目錄 mkdir dir1 dir2 dir3 創建三個目錄
cp file1 file2  
復制文件 file1 內容到文件 file2。
如果 file2 已經存在, file2 的內容會被 file1 的內容重寫。如果 file2 不存在,則會創建 file2。

cp -i file1 file2   
這條命令和上面的命令一樣,除了如果文件 file2 存在的話,在文件 file2 被重寫之前, 會提示用戶確認信息。

cp file1 file2 dir1 
復制文件 file1 和文件 file2 到目錄 dir1。目錄 dir1 必須存在。

cp dir1/* dir2  
使用一個通配符,在目錄 dir1 中的所有文件都被復制到目錄 dir2 中。 dir2 必須已經存在。

cp -r dir1 dir2 
復制目錄 dir1 中的內容到目錄 dir2。如果目錄 dir2 不存在, 創建目錄 dir2,操作完成後,目錄 dir2 中的內容和 dir1 中的一樣。 
如果目錄 dir2 存在,則目錄 dir1 (和目錄中的內容)將會被復制到 dir2 中。
mv file1 file2  
移動 file1 到 file2。
如果 file2 存在,它的內容會被 file1 的內容重寫。 如果 file2 不存在,則創建 file2。 每種情況下,file1 不再存在。

mv -i file1 file2   
除了如果 file2 存在的話,在 file2 被重寫之前,用戶會得到 提示信息外,這個和上面的選項一樣。

mv file1 file2 dir1 
移動 file1 和 file2 到目錄 dir1 中。dir1 必須已經存在。

mv dir1 dir2    
如果目錄 dir2 不存在,創建目錄 dir2,並且移動目錄 dir1 的內容到 目錄 dir2 中,同時刪除目錄 dir1。
如果目錄 dir2 存在,移動目錄 dir1(及它的內容)到目錄 dir2。
rm file1    默默地刪除文件
rm -i file1 除了在刪除文件之前,提示用戶確認信息之外,和上面的命令作用一樣。
rm -r file1 dir1    刪除文件 file1, 目錄 dir1,及 dir1 中的內容。
rm -rf file1 dir1   同上,除了如果文件 file1,或目錄 dir1 不存在的話,rm 仍會繼續執行。
ln — 創建硬鏈接和符號鏈接

ln file link 創建硬鏈接
ln -s file line 創建軟鏈接

硬鏈接與更加現代的符號鏈接相比,硬鏈接是最初 Unix 創建鏈接的方式。每個文件默認會有一個硬鏈接, 這個硬鏈接給予文件名字。我們每創建一個硬鏈接,就為一個文件創建了一個額外的目錄項。 硬鏈接有兩個重要局限性:
1、一個硬鏈接不能關聯它所在文件系統之外的文件。這是說一個鏈接不能關聯 與鏈接本身不在同一個磁盤分區上的文件。
2、一個硬鏈接不能關聯一個目錄。

當一個硬鏈接被刪除時,這個鏈接 被刪除,但是文件本身的內容仍然存在。
符號鏈接類似於windows的快捷方式,如果你往一個符號鏈接裏面寫入東西,那麽相關聯的文件也被寫入。
然而, 當你刪除一個符號鏈接時,只有這個鏈接被刪除,而不是文件自身。
如果先於符號鏈接 刪除文件,這個鏈接仍然存在,但是不指向任何東西。在這種情況下,這個鏈接被稱為壞鏈接。
type command  顯示命令的類型
which command  顯示一個可執行程序的位置
ls --help   --help 選項,這個選項是顯示命令所支持的語法和選項說明
man command 查看命令的參考手冊
whatis command 顯示非常簡潔的命令說明
info command info info文件是樹型結構,分化為各個結點,每一個包含一個題目。
whatis  command 顯示非常簡潔的命令說明
alias name=‘command string‘ 給命令取別名
ls -l /usr/bin > ls-output.txt 重定向輸出
less ls-output.txt 查看輸出的內容
ls -l /usr/bin >> ls-output.txt 使用”>>“重定向符,追加內容

一個程序可以在幾個編號的文件流中的任一個上產生輸出。
雖然我們已經將這些文件流的前 三個稱作標準輸入、輸出和錯誤,shell 內部分別將其稱為文件描述符0、1和2。
shell 使用文件描述符提供 了一種表示法來重定向文件。因為標準錯誤和文件描述符2一樣,我們用這種 表示法來重定向標準錯誤:
cat movie.mpeg.0* > movie.mpeg 追加連接符合條件的文件
ls -l /usr/bin | less 
命令從標準輸入讀取數據並輸送到標準輸出的能力被一個稱為管道線的shell特性所利用。

管道中添加過濾器 sort
ls /bin /usr/bin | sort | less
wc(字計數)命令是用來顯示文件所包含的行數、字數和字節數。
例如:
wc ls-output.txt
7902 64566 503634 ls-output.txt
grep pattern [file...] 找到匹配的文本

ls /bin /usr/bin | sort | uniq | grep zip   區分大小寫
ls /bin /usr/bin | sort | uniq | grep -i zip 忽略大小寫

grep “standard” standard.txt > grep.out 2>&1
在文件standard.txt中查找standard這個字符串,如果找到則將查找結果重定向到grep.out,如果找不到,則把錯誤信息重定向到grep.out中。
head -n 5 ls-output.txt  查看開頭五行內容
tail -n 5 ls-output.txt 查看結尾五行內容
波浪線字符(“~”)有特殊的含義。
當它用在 一個單詞的開頭時,它會展開成指定用戶的家目錄名。
如果沒有指定用戶名,則展開成當前用戶的家目錄。

[me@linuxbox ~]$ echo ~foo
/home/foo
算術表達式展開使用這種格式:
$((expression))

[me@linuxbox ~]$ echo $((2 + 2))
4

在算術表達式中空格並不重要,並且表達式可以嵌套。
[me@linuxbox ~] echo $(($((5**2)) * 3))
75

通過它,你可以從一個包含花括號的模式中 創建多個文本字符串。
[me@linuxbox ~]$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back

[me@linuxbox ~]$ echo Number_{1..5}
Number_1  Number_2  Number_3  Number_4  Number_5

[me@linuxbox ~]$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

花括號嵌套:
[me@linuxbox ~]$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b

批量創建以數值”年-月”形式命名的目錄
[me@linuxbox ~]$ mkdir Pics
[me@linuxbox ~]$ cd Pics
[me@linuxbox Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
[me@linuxbox Pics]$ ls
2007-01 2007-07 2008-01 2008-07 2009-01 2009-07
2007-02 2007-08 2008-02 2008-08 2009-02 2009-08
2007-03 2007-09 2008-03 2008-09 2009-03 2009-09
2007-04 2007-10 2008-04 2008-10 2009-04 2009-10
2007-05 2007-11 2008-05 2008-11 2009-05 2009-11
2007-06 2007-12 2008-06 2008-12 2009-06 2009-12
命令替換允許我們把一個命令的輸出作為一個展開模式來使用:
[me@linuxbox ~]$ echo $(ls)
Desktop Documents ls-output.txt Music Pictures Public Templates
Videos

bash 也支持這種語法。它使用倒引號來代替美元符號和括號:
[me@linuxbox ~]$ ls -l `which cp`
-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp

記住,在雙引號中,參數展開、算術表達式展開和命令替換仍然有效:
[me@linuxbox ~]$ echo "$USER $((2+2)) $(cal)"
me 4    February 2008
Su Mo Tu We Th Fr Sa


以下例子是無引用,雙引號,和單引號的比較結果:
[me@linuxbox ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
text /home/me/ls-output.txt a b foo 4 me
[me@linuxbox ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"
text ~/*.txt   {a,b} foo 4 me
[me@linuxbox ~]$ echo ‘text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER‘
text ~/*.txt  {a,b} $(echo foo) $((2+2)) $USER

反斜杠轉義符
[me@linuxbox ~]$ mv bad\&filename good_filename
查看歷史信息
history | less

歷史命令執行
!!  重復最後一次執行的命令。可能按下上箭頭按鍵和 enter 鍵更容易些。
!number 重復歷史列表中第 number 行的命令。
!string 重復最近歷史列表中,以這個字符串開頭的命令。
!?string    重復最近歷史列表中,包含這個字符串的命令。
ps – 報告當前進程快照
top – 顯示任務
jobs – 列出活躍的任務
bg – 把一個任務放到後臺執行
fg – 把一個任務放到前臺執行
kill – 給一個進程發送信號
killall – 殺死指定名字的進程
shutdown – 關機或重啟系統

進程狀態:
R   運行中。這意味著,進程正在運行或準備運行。
S   正在睡眠。進程沒有運行,而是,正在等待一個事件, 比如說,一個按鍵或者網絡分組。
D   不可中斷睡眠。進程正在等待 I/O,比方說,一個磁盤驅動器的 I/O。
T   已停止. 已經指示進程停止運行。稍後介紹更多。
Z   一個死進程或“僵屍”進程。這是一個已經終止的子進程,但是它的父進程還沒有清空它。 (父進程沒有把子進程從進程表中刪除)
<   一個高優先級進程。這可能會授予一個進程更多重要的資源,給它更多的 CPU 時間。 進程的這種屬性叫做 niceness。
具有高優先級的進程據說是不好的(less nice), 因為它占用了比較多的 CPU 時間,這樣就給其它進程留下很少時間。
N   低優先級進程。 一個低優先級進程(一個“好”進程)只有當其它高優先級進程被服務了之後,才會得到處理器時間。

另一個流行的選項組合是 “aux”(不帶開頭的”-“字符)。這會給我們更多信息:
[me@linuxbox ~]$ ps aux
USER   PID  %CPU  %MEM     VSZ    RSS  TTY   STAT   START   TIME  COMMAND
root     1   0.0   0.0    2136    644  ?     Ss     Mar05   0:31  init
root     2   0.0   0.0       0      0  ?     S<     Mar05   0:00  [kt]

用 top 命令動態查看進程
後臺執行:在程序命令之後,加上”&”字符
[me@linuxbox ~]$ xlogo &
[1] 28236

後臺命令對與鍵盤輸入免疫,無法中斷,使用fg將命令轉到前端。
fg 命令之後,跟隨著一個百分號和任務序號(叫做 jobspec)就可以。
[me@linuxbox ~]$ jobs
[1]+ Running        xlogo &
[me@linuxbox ~]$ fg %1
xlogo

  

Linux 命令行大全