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