Linux命令行技巧
Linux命令行技巧
學(xué)習(xí)啦小編將和大家分享一些學(xué)習(xí)Linux命令行的技巧,希望能對大家有所助益。如果在本文中遇到不太熟悉的命令,可以在終端中鍵入以下命令尋求幫助。下面跟著學(xué)習(xí)啦小編一起來了解一下吧。
Linux命令行技巧
這篇文章希望向你展示一些不需要很高的技術(shù)就可以像一個高手一樣使用 Linux 終端的有用技巧。你只需要一個 Linux 終端和一些自由時間來體會這些命令。
1. 找到正確的命令
執(zhí)行正確的命令對你的系統(tǒng)來說非常重要。然而在 Linux 中有如此多的、難以記憶的各種的命令行。那么怎樣才能找到你需要的正確命令呢?答案是 apropos。你只需要運行:
# apropos <description>
其中你要用真正描述你要查找的命令的語句代替 “description”。這里有一個例子:
# apropos "list directory"
dir(1)-list directory contents
ls(1)-list directory contents
ntfsls (8)-list directory contents on an NTFS filesystem
vdir (1)-list directory contents
左邊你看到的是命令,右邊是它們的描述。
2. 執(zhí)行之前的命令
很多時候你需要一遍又一遍執(zhí)行相同的命令。盡管你可以重復(fù)按你鍵盤上的向上光標(biāo)鍵,但你也可以用 history 命令替代。這個命令會列出自從你上次啟動終端以來所有輸入過的命令:
# history
1fdisk-l
2apt-get install gnome-paint
3hostname tecmint.com
4hostnamectl tecmint.com
5manhostnamectl
6hostnamectl--set-hostname tecmint.com
7hostnamectl-set-hostname tecmint.com
8hostnamectlset-hostname tecmint.com
9mount-t "ntfs"-o
10fdisk-l
11mount-t ntfs-3g/dev/sda5 /mnt
12mount-t rw ntfs-3g/dev/sda5 /mnt
13mount-t -rw ntfs-3g/dev/sda5 /mnt
14mount-t ntfs-3g/dev/sda5 /mnt
15mountman
16manmount
17mount-t -o ntfs-3g/dev/sda5 /mnt
18mount-o ntfs-3g/dev/sda5 /mnt
19mount-ro ntfs-3g/dev/sda5 /mnt
20cd/mnt
...
正如你上面看到的,你會得到一個你運行過的命令的列表。每一行中有一個數(shù)字表示你在第幾行輸入了命令。你可以通過以下方法重新調(diào)用該命令:
!#
其中要用命令的實際編號代替 #。為了更好的理解,請看下面的例子:
!501
等價于:
# history
3. 使用 midnight 命令
如果你不習(xí)慣使用類似 cd、cp、mv、rm 等命令,你可以使用 midnight 命令。它是一個簡單的可視化 shell,你可以在上面使用鼠標(biāo):
Midnight 命令
借助 F1 到 F12 鍵,你可以輕易地執(zhí)行不同任務(wù)。只需要在底部選擇對應(yīng)的命令。要選擇文件或者目錄,按下 “Insert” 鍵。
簡而言之 midnight 就是所謂的 “mc”。要安裝 mc,只需要運行:
$ sudoapt-get install mc [OnDebian based systems]
#yum install mc [OnFedora based systems]
下面是一個使用 midnight 命令器的簡單例子。通過輸入以下命令打開 mc:
# mc
現(xiàn)在使用 TAB 鍵選擇不同的窗口 - 左和右。我有一個想要移動到 “Software” 目錄的 LibreOffice 文件:
Midnight 命令移動文件
按 F6 按鈕移動文件��新的目錄。MC 會請求你確認(rèn):
移動文件到新目錄
確認(rèn)了之后,文件就會被移動到新的目標(biāo)目錄。
擴展閱讀:如何在 Linux 中使用 Midnight 命令文件管理器
4. 在指定時間關(guān)閉計算機
有時候你需要在下班幾個小時后再關(guān)閉計算機。你可以通過使用下面的命令在指定時間關(guān)閉你的計算機:
$ sudoshutdown21:00
這會告訴你在你指定的時間關(guān)閉計算機。你也可以告訴系統(tǒng)在指定分鐘后關(guān)閉:
$ sudoshutdown+15
這表示計算機會在 15 分鐘后關(guān)閉。
5. 顯示已知用戶的信息
你可以使用一個簡單的命令列出你 Linux 系統(tǒng)的用戶以及一些關(guān)于它們的基本信息。
# lslogins
這會輸出下面的結(jié)果:
UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
0 root 00Apr29/11:35 root
1 bin 01 bin
2 daemon 01 daemon
3 adm 01 adm
4lp01lp
5sync01sync
6shutdown01Jul19/10:04shutdown
7halt01halt
8 mail 01 mail
10 uucp 01 uucp
11operator01operator
12 games 01 games
13 gopher 01 gopher
14 ftp 01 FTP User
23 squid 01
25 named 01Named
27 mysql 01MySQLServer
47 mailnull 01
48 apache 01Apache
...
6. 查找文件
查找文件有時候并不像你想象的那么簡單。一個搜索文件的好例子是:
#find/home/user -type f
這個命令會搜索 /home/user 目錄下的所有文件。find 命令真的很強大,你可以傳遞更多選項給它使得你的搜索更加詳細(xì)。如果你想搜索超過特定大小的文件,可以使用:
#find.-type f -size10M
上面的命令會搜索當(dāng)前目錄中所有大于 10M 的文件。確保不要在你 Linux 系統(tǒng)的根目錄運行該命令,因為這可能導(dǎo)致你的機器 I/O 瓶頸。
我最經(jīng)常和 find 命令一起使用的選項之一是 “exec”,這允許你對 find 命令的結(jié)果運行一些操作。
例如,假如我們想查找一個目錄中的所有文件并更改權(quán)限??梢酝ㄟ^以下簡單命令完成:
#find/home/user/files/-type f -execchmod644{} \;
上面的命令會遞歸搜索指定目錄內(nèi)的所有文件,并對找到的文件執(zhí)行 chmod 命令。
7. 用一個命令創(chuàng)建目錄樹
你很可能知道可以使用 mkdir 命令創(chuàng)建新的目錄。因此如果你想創(chuàng)建一個新的目錄,你可能會運行:
#mkdir new_folder
但如果你想在該目錄下創(chuàng)建 5 個子目錄呢?運行 5 次 mkdir 命令并非是一個好的選擇。相反你可以類似下面這樣使用 -p 選項:
#mkdir-p new_folder/{folder_1,folder_2,folder_3,folder_4,folder_5}
最后你會在 new_folder 中有 5 個目錄:
#ls new_folder/
folder_1 folder_2 folder_3 folder_4 folder_5
8. 復(fù)制文件到多個目錄
通常使用 cp 命令進(jìn)行文件復(fù)制。復(fù)制文件通常看起來類似:
#cp/path-to-file/my_file.txt /path-to-new-directory/
現(xiàn)在假設(shè)你需要復(fù)制該文件到多個目錄:
#cp/home/user/my_file.txt /home/user/1
#cp/home/user/my_file.txt /home/user/2
#cp/home/user/my_file.txt /home/user/3
這有點荒.唐。相反,你可以用簡單的一行命令解決問題:
#echo/home/user/1/ /home/user/2/ /home/user/3/|xargs-n 1cp/home/user/my_file.txt
9. 刪除大文件
有時候文件可能會變得很大。我看過由于缺乏管理技能一個日志文件就超過 250G 的例子。用 rm 命令可能不足以刪除該文件,因為有大量的數(shù)據(jù)需要移除。應(yīng)該避免這個很“笨重”的操作。相反,你可以使用一個簡單的方法解決這個問題:
#>/path-to-file/huge_file.log
當(dāng)然你需要根據(jù)你實際情況替換路徑和文件名。上面的命令寫一個空輸出到該文件。用更簡單的話說它會清空文件而不會導(dǎo)致你的系統(tǒng)產(chǎn)生大的 I/O 消耗。
10. 在多個 Linux 服務(wù)器上運行相同命令
最近我們的一個讀者在 LinuxSay 論壇提問說如何通過 ssh 在多個 Linux 服務(wù)器上執(zhí)行一個命令。他機器的 IP 地址是:
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
這里有一個簡單的解決方法。將服務(wù)器的 IP 地址寫到文件 list.txt 中,像上面那樣一行一個。然后運行:
#forin $i(catlist.txt);dossh user@$i 'bash command';done
上面的命令中你需要用實際登錄的用戶替換 “user”,用你希望執(zhí)行的實際命令替換 “bash command”。這個方法非常適用于通過使用 SSH 密鑰進(jìn)行無密碼驗證,因為這樣你不需要每次都為用戶輸入密碼。
注意取決于你 Linux 系統(tǒng)的設(shè)置,你可能還需要傳遞一些額外的參數(shù)給 SSH 命令。
總結(jié)
上面的例子都很簡單,我希望它們能幫助你發(fā)現(xiàn) Linux 的優(yōu)美之處,你如何能簡單實現(xiàn)在其它操作系統(tǒng)上需要更多時間的不同操作。