深圳千鋒老師告訴你,Linux中,你可能不知道的七件事使用Linux,隨著時(shí)間的推移,你可以不斷獲得新的知識。每天,你都可能會遇到
深圳千鋒老師告訴你,Linux中,你可能不知道的七件事
使用Linux,隨著時(shí)間的推移,你可以不斷獲得新的知識。每天,你都可能會遇到一個(gè)新的實(shí)用工具,或者只是一個(gè)不太熟悉的奇技淫巧,但是卻非常有用。這些零碎的東西并不總是能夠改變生活,但是卻是專業(yè)知識的基礎(chǔ)。今天,就讓千鋒老師,來給你說說吧!
即使是專家,也不可能事事皆知。無論你有多少經(jīng)驗(yàn),可能總會有更多的東西需要你去學(xué)習(xí)。所以,在這兒,千鋒老師列出了七件關(guān)于 Linux 你可能不知道的事情。
一個(gè)查找命令歷史的交互模式
你可能對 history 命令非常熟悉,它會讀取 bash 歷史,然后以編號列表的方式輸出到標(biāo)準(zhǔn)輸出(stdout)。然而,如果你在 curl 命令的海洋里尋找一個(gè)特定的鏈接(URL),那么這個(gè)列表并不總是那么容易閱讀的。
你還可以有另一個(gè)選擇,Linux 有一個(gè)交互式的反向搜索可以幫助你解決這個(gè)問題。你可以通過快捷鍵 ctrl+r啟動交互模式,然后進(jìn)入一個(gè)交互提示中,它將會根據(jù)你提供的字符串來向后搜索 bash 歷史,你可以通過再次按下 ctrl+r 向后搜索更老的命令,或者按下 ctrl+s向前搜索。
注意,ctrl+s 有時(shí)會與 XON/XOFF 流控制沖突,即 XON/XOFF 流控制也會使用該快捷鍵。你可以通過運(yùn)行 stty -ixon 命令來禁用該快捷鍵。在你的個(gè)人電腦上,這通常是有用的,但是在禁用前,確保你不需要 XON/XOFF 。
Cron 不是安排任務(wù)的唯一方式
Cron 任務(wù)對于任何水平的系統(tǒng)管理員,無論是毫無經(jīng)驗(yàn)的初學(xué)者,還是經(jīng)驗(yàn)豐富的專家來說,都是非常有用的。但是,如果你需要安排一個(gè)一次性的任務(wù),那么 at 命令為你提供了一個(gè)快捷的方式來創(chuàng)建任務(wù),從而你不需要接觸 crontab 。
at 命令的運(yùn)行方式是在后面緊跟著你想要運(yùn)行任務(wù)的運(yùn)行時(shí)間。時(shí)間是靈活的,因?yàn)樗С衷S多時(shí)間格式。包括下面這些例子:
1. at 12:00 PM September 30 2017
2. at now + 1 hour
3. at 9:00 AM tomorrow
當(dāng)你以帶參數(shù)的方式輸入 at 命令以后,將會提示你該命令將在你的 Linux 系統(tǒng)上運(yùn)行。這可能是一個(gè)備份腳本,一套維護(hù)任務(wù),或者甚至是一個(gè)普通的 bash 命令。如果要結(jié)束任務(wù),可以按 ctrl+d 。
另外,你可以使用 atq 命令查看當(dāng)前用戶的所有任務(wù),或者使用 sudo atq 查看所有用戶的任務(wù)。它將會展示出所有排定好的任務(wù),并且每個(gè)任務(wù)都伴有一個(gè) ID 。如果你想取消一個(gè)排定好的任務(wù),可以使用 atrm 命令,并且以任務(wù) ID 作為參數(shù)。
你可以按照功能搜索命令,而不僅僅是通過名字
記住命令的名字非常困難,特別是對于初學(xué)者來說。幸運(yùn)的是,Linux 附帶了一個(gè)通過名字和描述來搜索 man 頁面的工具。
下次,如果你沒有記住你想要使用的工具的名稱,你可以嘗試使用 apropos 命令加上你想要干的事情的描述。比如,apropos build filesystem 將會返回一系列名字和描述包括了 “build” 和 “filesystem” 單詞的工具。
apropos 命令接受一個(gè)或多個(gè)字符串作為參數(shù),但同時(shí)它也有-參數(shù),比如你可以使用 -r 參數(shù),從而通過正則表達(dá)式來搜索。
一個(gè)允許你來管理系統(tǒng)版本的替代系統(tǒng)
如果你曾進(jìn)行過軟件開發(fā),你就會明白跨項(xiàng)目管理不同版本的語言的支持的重要性。許多 Linux 發(fā)行版都有工具可以來處理不同的內(nèi)建版本。
可執(zhí)行文件比如 java 往往符號鏈接到目錄 /etc/alternatives 下。反過來,該目錄會將符號鏈接存儲為二進(jìn)制文件并提供一個(gè)管理這些鏈接的接口。Java 可能是替代系統(tǒng)最常管理的語言,但是,經(jīng)過一些配置,它也可以作為-應(yīng)用程序替代品,比如 NVM 和 RVM (NVM 和 RVM 分別是 NodeJS 和 Ruby 的版本管理器)。
在基于 Debian 的系統(tǒng)中,你可以使用 update-alternatives 命令創(chuàng)建和管理這些鏈接。在 CentOS 中,這個(gè)工具就叫做 alternatives 。通過更改你的 alternatives 文件中的鏈接,你便可以安裝一個(gè)語言的多個(gè)版本,并且在不同的情況下使用不同的二進(jìn)制。這個(gè)替代系統(tǒng)也提供了對任何你可能在命令行運(yùn)行的程序的支持。
shRED 命令是更加安全的刪除文件方式
我們大多數(shù)時(shí)候總是使用 rm 命令來刪除文件。但是文件去哪兒了呢?-是 rm 命令所做的事情并不是像你所想像的那樣,它僅僅刪除了文件系統(tǒng)和硬盤上的數(shù)據(jù)的硬鏈接。硬盤上的數(shù)據(jù)依舊存在,直到被另一個(gè)應(yīng)用重寫覆蓋。對于非常敏感的數(shù)據(jù)來說,這會帶來一個(gè)很大的安全隱患。
shred 命令是 rm 命令的升級版。當(dāng)你使用 shred 命令刪除一個(gè)文件之后,文件中的數(shù)據(jù)會被多次隨機(jī)覆寫。甚至有一個(gè)選項(xiàng)可以在隨機(jī)覆寫之后對所有的數(shù)據(jù)進(jìn)行清零。
如果你想安全的刪除一個(gè)文件并且以零覆蓋,那么可以使用下面的命令:
shred -u -z [file name]
同時(shí),你也可以使用 -n 選項(xiàng)和一個(gè)數(shù)字作為參數(shù),從而指定在隨機(jī)覆蓋數(shù)據(jù)的時(shí)候迭代多少次。
通過自動更正來避免輸入很長的無效文件路徑
有多少次,你輸入一個(gè)文件的絕對路徑,然而卻看到“沒有該文件或目錄”的消息。任何人都會明白輸入一個(gè)很長的字符串的痛苦。幸運(yùn)的是,有一個(gè)很簡單的解決辦法。
內(nèi)建的 shopt 命令允許你設(shè)置不同的選項(xiàng)來改變 shell 的行為。設(shè)置 cdspell 選項(xiàng)是避免輸入文件路徑時(shí)一個(gè)字母出錯(cuò)的頭痛的一個(gè)簡單方式。你可以通過運(yùn)行 shopt -s cdspell 命令來啟用該選項(xiàng)。啟用該選項(xiàng)后,當(dāng)你想要切換目錄時(shí),會自動更正為最匹配的目錄。
Shell 選項(xiàng)是節(jié)省時(shí)間的一個(gè)好方法(更不用說減少麻煩),此外還有許許多多的-選項(xiàng)。如果想查看你的系統(tǒng)中所有選項(xiàng)的完整列表,可以運(yùn)行不帶參數(shù)的 shopt 命令。需要注意的是,這是 bash 的特性,如果你運(yùn)行 zsh 或者-可供選擇的 shell,可能無法使用。
通過子 shell 返回到當(dāng)前目錄
如果你曾經(jīng)配置過一個(gè)比較復(fù)雜的系統(tǒng),那么你可能會發(fā)現(xiàn)你需要頻繁的更換目錄,從而很難跟蹤你所在的位置。如果在運(yùn)行完一個(gè)命令后自動返回到當(dāng)前位置,不是很好嗎?
Linux 系統(tǒng)實(shí)際上提供了一個(gè)解決該問題的方法,并且非常簡單。如果你想通過 cd 命令進(jìn)入另一個(gè)目錄完成一些任務(wù),然后再返回當(dāng)前工作目錄,那么你可以將命令置于括號中。你可以在你的 Linux 系統(tǒng)上嘗試下面這個(gè)命令。記住你當(dāng)前的工作目錄,然后運(yùn)行:
1. (cd /etc && ls -a
該命令會輸出 /etc 目錄的內(nèi)容。現(xiàn)在,檢查你的當(dāng)前工作目錄。它和執(zhí)行該命令前的目錄一樣,而不是 /etc 目錄。
它是如何工作的呢?運(yùn)行一個(gè)括號中的命令會創(chuàng)建一個(gè)子 shell 或一個(gè)當(dāng)前 shell 進(jìn)程的復(fù)刻副本。該子 shell 可以訪問所有的父變量,反之則不行。所以請記住,你是在運(yùn)行一個(gè)非常復(fù)雜的單行命令。
在并行處理中經(jīng)常使用子 shell ,但是在命令行中,它也能為你帶來同樣的力量,從而使你在瀏覽文件系統(tǒng)時(shí)更加容易。
更多Linux知識,盡在千鋒教育。
千鋒深圳校區(qū):http://sz.mobiletrain.org/
深圳西部硅谷校區(qū)地址:深圳市寶安區(qū)寶安大道5010號深圳西部硅谷A區(qū)B座605-619
深圳大學(xué)城校區(qū)地址:深圳市南山區(qū)留仙大道1201號大學(xué)城創(chuàng)客小鎮(zhèn)16棟2樓、3樓
培訓(xùn)咨詢專線:0755-33582485-801(硅谷校區(qū))0755-86660670-801(大學(xué)城校區(qū)) 4008119990
咨 詢 QQ : 1660794050
面授課程:全棧HTML5+培訓(xùn)、UI交互設(shè)計(jì)培訓(xùn)、PHP培訓(xùn)、Java+云數(shù)據(jù)培訓(xùn)、大數(shù)據(jù)開發(fā)培訓(xùn)、VR/AR/Unity游戲開發(fā)培訓(xùn)、Python培訓(xùn)、Linux云計(jì)算培訓(xùn)、全棧軟件測試培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)、好程序員
深圳千鋒老師告訴你,Linux中,你可能不知道的七件事
微信掃碼關(guān)注 億華聯(lián)眾 公眾號