在本文中,我將說明如何使用終端機命令來提供有關某些命令及其作用的資訊。
我也提供了範例來說明該程序。
命令行工具功能強大。存在的工具會在圖形使用者介面 (UI) 中執行繁瑣的工作,並將其轉變為只需要幾秒鐘即可完成的工作。在使用者介面應用程式中,移除大檔案每一列中的最後四行會是一個漫長的過程。但是,這可以在命令行上自動完成。
在 Ubuntu Linux 中開啟終端機視窗最常見的方法是:
Ubuntu Linux 中有許多命令與終端機 Shell 相關聯。以下文章在它們所影響的群組下列出了最常用的部分。
我們有三個主要命令可用來提供使用各種終端機命令所需的所有資訊。
man 命令可顯示在終端機中使用的任何命令手冊。
大多數 shell 命令都接受各種選項。若要取得有關命令和可用選項清單的一些資訊,請使用 man
- manual 的縮寫命令。提供要尋找更多相關資訊的命令名稱作為其引數。這就是 man
命令運作所使用的命令。
範例:如果您輸入命令 man who
,將顯示以下輸出。
WHO(1) User Commands WHO(1)
NAME
who - show who is logged on
SYNOPSIS
who [OPTION}... [ FILE | ARG1 ARG2 ]
DESCRIPTION
-a, --all
same as -b -d --login -p -r -t -T -u
-b, --boot
time of last system boot
-d, --dead
print dead processes
-H, --heading
print line of column headings
-i, --idle
add idle time as HOURS:MINUTES, . or old (deprecated, use -u)
-l, --login
print system login processes
--lookup
attempt to canonicalize hostnames via DNS
-m, only hostname and user associated with stdin
Manual page who(1) line 1
許多手冊長達幾個螢幕。使用游標或 ARROW
按鍵或 Page Up 與 Page Down 鍵瀏覽文字。空格鍵可顯示下一行文字。按下 q 鍵可結束手冊並返回至 shell。
我們可以從線上手冊中看到,我們可以使用 -a
選項來顯示有關使用中使用者工作階段的詳細資訊。
user@3[user]$ who -a
|
|
|
|
Nov 14 13:47 |
|
10 |
id=si |
term=0 |
exit=0 |
|
|
|
system boot |
Nov 14 13:47 |
|
|
|
|
|
|
|
|
run-level 5 |
Nov 14 13:47 |
|
|
Last=S |
|
|
|
|
|
|
Nov 14 13:47 |
|
835 |
id=15 |
term=0 |
exit=0 |
LOGIN |
|
|
tty1 |
Nov 14 13:47 |
|
958 |
id=1 |
|
|
root |
|
- |
tty2 |
Nov 14 19:15 |
00:19 |
959 |
|
|
|
user |
|
- |
tty3 |
Nov 14 19:28 |
00:06 |
960 |
|
|
|
LOGIN |
|
|
tty4 |
Nov 14 13:47 |
|
961 |
id=4 |
|
|
LOGIN |
|
|
tty5 |
Nov 14 13:47 |
|
962 |
id=5 |
|
|
LOGIN |
|
|
tty6 |
Nov 14 13:47 |
|
963 |
id=6 |
|
|
user |
|
? |
:0 |
Nov 14 13:47 |
? |
965 |
|
|
|
|
|
|
pts/3 |
Nov 14 16:29 |
|
1746 |
id=/3 |
term=0 |
exit=0 |
user@3[user]$
它還可以讀取程式的說明檔案, man
命令還可以提供有關 shell、函數和程式庫的資訊。
如果您不確定如何使用特定命令,請使用 -h
或 –help
switch 執行命令。您將會看到使用資訊和可與命令一起使用的選項清單。
範例:如果您想要知道如何使用 wget
命令,請輸入 wget –help
或 wget -h
。
User@Ubuntu@#$ wget --help
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
Mandatory arguments to long options are mandatory for short options t
oo.
Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc' -style command.
Logging and input file:
這通常會將大量資訊輸出到終端機。捲動瀏覽可能會很不方便。若要更輕鬆地閱讀輸出,您可以 pipe
它 (透過 less 命令)。這可以讓您使用游標或鍵盤上的方向鍵捲動瀏覽。
範例: wget -help | less
GNU Wget 1.12, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
Mandatory arguments to long options are mandatory for short options t
oo.
Startup:
-V, --version display the version of Wget and exit.
-h, --help print this help.
-b, --background go to background after startup.
-e, --execute=COMMAND execute a '.wgetrc' -style command.
Logging and input file:
-o, --output-file=FILE log messages to FILE.
:
完成後,按 q 關閉 less 公用程式。
若要尋找特定選項,您可以 pipe
輸出,透過 grep
命令。(例如:使用下列命令搜尋包含以下文字的選項: proxy.
)
wget -help | grep proxy
User@ubuntu:~$ wget --help | grep proxy
--no-proxy explicitly turn off proxy.
--proxy-user=USER set USER as proxy username.
--proxy-password=PASS set PASS as proxy password.
User@Ubuntu:~$
某些命令也記錄在 info
系統內。此處的資訊補充了 man
命令顯示。
範例:輸入命令 info ls,
即會顯示以下輸出。
[support@support]$" info ls
您現在可以檢視手冊,其中包含有關以下項目的重要資訊: ls
命令。
File: coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing
'ls': List directory contents
=============================
The 'ls' program lists information about files (of any type,
including directories). Options and file arguments can be intermixed
arbitrarily, as usual.
For non-option command-line arguments that are directories, by
default 'ls' lists the contents of directories, not recursively, and
omitting files with name beginning with '.'. For other non-option
arguments, be default 'ls' lists just the file name. If no non-option
argument is specified, 'ls' operates on the current directory, acting
as if it had been invoked with a single argument of '.'.
By default, the output is sorted alphabetically, according to the
locale settings in effect. (1) If standard output is a terminal, the
output is in columns (sorted vertically) and control characters are
output as question marks; otherwise, the output is listed one per line
and control characters are output as-is.
--zz-Info: (coreutils.info.gz)ls invocation, 48 lines --Top------------------
Welcome to info version 4.3 Type C-h for help, m for menu item.
您可以按空格鍵或使用游標/ARROW
鍵來向下捲動頁面。
help
,按 Hquit
,按 Q
您幾乎可以在終端機中執行任何操作,也可以從使用者介面執行任何操作。
如前所述,許多命令首先設計為在終端機中工作,然後使用者介面會放在頂部。這就是為什麼有些 GUI 可能會感覺很笨拙 - 起初它們只是事後的想法,因為大多數 Linux 伺服器組件都不會顧及它們。
從功能表開啟終端機的預設位置位於您的主資料夾中。又稱為 ~
您可以透過 .
運算子來尋找目前目錄。大多數命令在作用於目前資料夾對於命令、位置和檔案的選擇操作時都區分大小寫。 /home
不等同於 /HOME
或 /Home
。
如果您有較長的驅動程式標題,請使用 TAB 鍵填入檔案名稱。 driver-128947232jaseu.sh
例如,輸入: dri
然後它就會輸入剩餘部分。如果您沒有以 dri
開頭的兩個名稱,而您這樣做,請新增另一個字元來使其 driv
,然後再試一次。請確定自動完全比對您要看到的內容。
幾乎任何命令都可以在寫入初始命令後,使用 man
頁面或透過輸入 -h
或 --help
完全讀取。此語法為 man command_name
, command_name -h
或 command_name --help
。
要取得更多資訊,您可以使用 info。您可以使用以下命令來搜尋命令: info command_name
。針對屬於 coreutils 套裝一部分的大部分這些命令,您也可以找到 info
,使用 info coreutils command_name
引動,這是命令搜尋取代以下項目的位置: command_name
。
幾乎任何命令都可以逐步準確地顯示正在發生的情況。這通常是 -v
或 --verbose
。
您可以一次為一個命令指定多個命令旗標以取得更多資訊。請參閱 ls -al
以下範例。
命令名稱並不總是顯而易見的 - 由於過去 UNIX 時代的空間限制,它們被縮短了,而這些慣例也產生了障礙。
cd
- 回到主目錄,等同於 cd ~
cd..
- 回上一層目錄。始於 /home/user/Desktop
, cd..
將您帶入 /home/user
。這可以擴展到 cd ../../
它會帶您回到上兩層目錄至 /home
。
cd foldername/
- 將您向前移動到目前資料夾中的指定資料夾。
/
,這是一個重要的遺漏。如果我在 /home/user
並且想要到 Desktop
。我必須輸入 cd Desktop/
不含 /
在以下項目之前: Desktop
。輸入 /
在它之前,會使我們進入無法工作的檔案系統根目錄。
cd /some/other/path
- 帶您到指定的資料夾路徑。如果您的路徑是正確的。不要忘記您可以使用 TAB
鍵來自動完成。
ls
- 列出您在目前資料夾中的所有檔案。
ls -l
- 提供包括擁有者、權限、大小和修改日期的更長清單。
ls -a
- 顯示隱藏的檔案和資料夾及正常清單。
ls -al
- 結合兩個選項可顯示隱藏的檔案和資料夾,並以長格式顯示。
ls -h
- 以人類可讀的格式顯示檔案大小 KB, MB, GB,
檔案大小而非位元組。它最常與 -l
旗標搭配使用。
您可以檢視您甚至不在其中之目錄中的檔案。如果我在 /home/user/Desktop
並且我想要在以下位置檢視檔案: /home/user
,我可以執行 ls ../
,這將會列出上一個目錄中的檔案。
cp file /path/to/folder
- 將指定的檔案複製到指定路徑。
cp -r folder /path/to/folder
- 將資料夾的內容重複複製到另一個資料夾。
cp *.extension /path/to/folder
- 將與指定副檔名相符的檔複製到新資料夾。若要複製所有 .doc 檔案,它會變為 cp *.doc /path/to/folder
,且資料夾必須存在。
cp name* /path/to/folder
- 將以 name
開頭的所有檔案複製到指定資料夾。若要複製以 example
開頭的所有檔案,它會變為 cp example* /path/to/folder
,且資料夾必須已經存在。
以下項目的語法: mv
與上面的例子類似,但 cp
豁免於範例 #2。 mv
不使用 -r
旗標,因為移動資料夾也會移動其內容。該語法並非在所有例項中都準確,但適用於上述範例。如需更多詳細資訊,請參閱您的線上手冊。
使用 rm
移除檔案是永久性的。它不會使用垃圾桶。請謹慎使用此命令,並確保您要刪除的項目確實是您想要刪除的,然後再按 Enter
鍵。如果您使刪除命令顯得過於複雜,則永遠不會產生好結果。
rm file
- 從電腦中移除該特定檔案。
rm -r folder
- 從電腦中移除該特定資料夾。
rm -rf folder
- 從電腦中強制移除該特定資料夾。如果使用不正確,此命令可能會搞壞您的組態。
您可以在終端機中使用 nano
來編輯檔案,以進行快速而粗略的檔案編輯,一直到完整組態為止。它可能很有用,但它只能處理純文字檔案和程式設計檔案,因此無法正確開啟像 Microsoft Word 文件之類的檔案。
如果根擁有檔案,則一般使用者無法對其進行編輯。 nano
必須加上前置詞 sudo
;這樣才能儲存變更。否則,它將以唯讀模式開啟。
nano newfile.whatever
的指定名稱,並將其開啟進行編輯。
nano existing_file
- 開啟現有檔案進行編輯。
從內部 nano
按 CTRL+O
組合鍵儲存檔案,然後變更名稱或按 Enter
鍵以保留相同名稱。這樣會儲存檔案。
退出 nano
,透過使用 CTRL+X
組合鍵。如果您有未儲存的變更,系統會詢問您是否要儲存變更。
mkdir folder_name
- 使用指定名稱建立資料夾
mkdir -p /path/to/folder/name
- 根據需要建立每個資料夾。若要建立資料夾 /home/user/1stfolder/2ndfolder
,且僅有 /home/user
存在,使用 mkdir -p
來建立兩個目錄 1stfolder,
和 2ndfolder
。
ps aux
- 詳細列出在電腦上執行的所有程序。這包括使用者、程序 ID PID,
和程序的名稱。使用命令,您可以檢視程序清單,如有必要,您可以結束不需要或停止的程序。
kill PID
- PID 是參照違規程序的編號。您應該從類似以下的命令取得 PID: ps aux
。如果程序拒絕結束,您也可以指定 kill -9 PID
,其應會以任何方式終止程序。
killall program
- Killall
結束 by name
以下項目的所有例項: listed program
。例如,如果開啟了 3 個 Firefox 網際網路瀏覽器工作階段, killall Firefox
就會這樣做,結束所有 Firefox 工作階段。 kill
會找到您要結束的違規 Firefox 程序的指定 PID,然後僅結束該程序。
xkill
是按一下並結束視窗的使用者介面方式。輸入 xkill
應該會顯示一個骷髏頭和交叉骨頭的圖示,而下一個按一下的視窗會遭到結束。
Pipes
顯示為 straight bar,
因此又稱為 |
鍵。
這是在 Windows 中很少使用的鍵,但通常可在反斜線鍵上找到。
其可用於將命令連結在一起。 Pipes
會取用一個命令的輸出並將其路由,以供當第一個命令與第二個命令連結在一起時,作為第二個命令的輸入使用。
如需有關 pipes
及其使用方法的詳細資訊,請參閱線上資源,因為線上有大量相關資訊。
>
用於 overwrite
現有檔案內容,方法是將其取代為新命令的輸出。
>>
用於 append
資訊至現有檔案。這對於記錄動作很有用。
Example:
ps aux > processes.log
可將 ps aux
的輸出傳送至檔案 processes.log
以供在文字編輯器中檢視命令輸出,並覆寫檔案的目前內容。
tee
與 |
搭配使用,以取用命令輸出並將其傳送至其他位置。如果有您遺漏的錯誤,這將很有用。這樣便可將螢幕上的所有內容擷取到檔案中。
範例: dmesg
| tee boot.txt
會執行命令 dmesg
,其可顯示初始開機資訊。可使用 |
可將 dmesg
的輸出傳送至 tee
,然後透過將其傳送至終端機和以下記錄檔來完成其工作: boot.txt
。
是否要在將檔案標記為可執行後在目前目錄中執行該檔案?可使用 ./
操作員可以一般使用者身分執行檔案,前提是您不需要根權限。 ./
字面意思是 in the current directory
,因此,它不適用於目前目錄之外的檔案。
如果要執行不在目前目錄中的檔案,則必須將路徑傳遞至正確執行的程式。如果是 python 程式,那它就是 python /path/to/file
,如果是 shell 檔案,那它就是 sh /path/to/file
(舉例來說)。還有其他程式,但這些程式是最常用的程式。
如果您要以根權限執行檔案,因為您收到了 operation not permitted?
。必須在命令前加上 sudo
。與上面的例子一樣, sudo python /path/to/file
以根權限執行指令碼。
如果要從終端機執行使用者介面程式,請輸入程式名稱 - case sensitive!
,這樣它就會啟動。這會使目前的終端機無法使用。在程式開啟時關閉終端機也會結束程式。更好的方法是使程式進入背景,使用 program_name
然後在終端機上輸入 exit
,以將其關閉並保持程序執行。
如果要從終端機以根權限執行使用者介面程式,請在它前面加上 gksudo
或 gksu
而不是 sudo
。使用 sudo
來啟動使用者介面應用程式是一個壞習慣,應該避免。
請 not
使用 sudo
,這只是因為某個程式顯示了 Operation not permitted.
請記住,您可能會在錯誤的位置使用根權限執行命令而 destroy
電腦。請確保您的檔案來自信譽良好的來源。
在目錄中迷路了?類型 pwd
來列印工作目錄。
想要計算您的磁碟空間? df -h
可以幫助您快速完成。
想要計算資料夾或檔案的大小? du -cksh target_name
可以幫您完成。想要計算目前資料夾的大小? du -cksh
。
想要將檔案標記為可執行? chmod +x filename
可以幫您完成。
您必須掛載 iso?Linux 內建有此功能。請在某位置建立一個目錄,例如 /home/user/isomount
,並發出命令 mount -o loop /path/to/myisofile.iso /home/user/isomount
,內容即會掛載到該資料夾內。
執行命令後,您必須重新執行該命令,但您不記得它是如何進行的?類型 history
至終端機,它會輸出您的命令歷程記錄。想要清除您的歷程記錄? history -c
可抹除資訊。