Ⅰ . 初始重定向
01 輸出重定向 >
在上一節中我們為了方便講解?head?和?tail?指令,我們用到了?>?去生成了一千行文本。
通過?>?將生成的一千行文本寫入到了?large.txt?中……
我們現在來正式介紹一下:
$ echo "內容" > [目標]
本來應該寫入到顯示器的內容,把他寫入到文件中,我們稱之為?輸出重定向?。
注意事項:?>?會清空原始的文件內容,進行重新寫入。
02 追加重定向 >>
輸出重定向?>?會清空原始內容,如果你不想清空原始內容呢?
我們可以使用 " 追加重定向?>>?" ,可以做到在原有內容后?"追加" :
說明:追加重定向不會清空原始內容,而是在原始文件的結尾進行新增式的寫入。
$ echo "內容" >> [目標]
03 輸入重定向 <
在這之前我們先來補充一下?cat?后面什么都不加:
$ cat
cat?后面什么都不加,cat?就會默認從鍵盤(標準輸入):
輸入重定向:將本來應該從鍵盤中讀取的方式,改成從指定的文件中讀取。
04 Linux 下一切皆文件
Linux 操作系統有自己的設計哲學,它認為所有的東西都可以當作文件,
甚至你所看到的鍵盤、顯示器、顯卡等外設,都可以當作文件。
現階段還沒有去講解系統方面的知識,至于底層是如何做到的我們暫時不深入講解。
我們把磁盤、顯示器、網卡、顯卡、鍵盤、鼠標等設備(我們統稱之為外設),
都看作文件,以同樣的方式看待這些設備。
注意事項:
Linux 是不把 CPU 看成文件的,因為 CPU 是要幫你完成 "一切皆文件" 的設計理念的。
Ⅱ . 時間相關的指令
01 date 指令
在 Linux 中我們可以直接輸入?date?去查看當前的時間:
date # 顯示時間
指令功能?:?顯示時間
在顯示方面,Linux 也是可以設定格式去顯示時間的。
date +%Y:%m:%d # date 指定格式顯示時間
date?標記列表:格式設定為一個加號后接數個標記,其中常用的標記列表如下:
- %H : 小時(00..23)
- %M : 分鐘(00..59)
- %S : 秒(00..61)
- %X : 相當于 %H:%M:%S %d : 日 (01..31)
- %m : 月份 (01..12)
- %Y : 完整年份 (0000..9999)
- %F : 相當于 %Y-%m-%d
我們就可以通過這種方式去控制格式,顯示我們想要顯示的:
02 時間戳
概念:自 1970 年 1 月 1 日午夜開始,到現在為止所累積的秒數,即為時間戳。
date +%s # 查看當前時間戳
那么問題來了,時間戳有什么用途呢?
它可以作為日志的一部分,如果一個項目比較大,必須得有日志的能力。
因為時間戳是不斷遞增的,遞增值有很強的唯一性,所以在做日志信息歸檔的時候很方便。
日志我們一般從尾部看,時間 + 錯誤信息。日志,具有排查錯誤的能力!
03 cal 指令
在 Linux 中輸入?cal?就顯示出一個日歷:
cal
指令功能?:用于查看日歷等時間信息。
如果只有一個參數,則表示年份(1-9999),如有兩個參數,則表示月份和年份。
cal [參數][月份][年份]
常用選項:
- -3? 顯示系統前一個月,當前月,下一個月的月歷
- -j? ?顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數)
- -y??顯示當前年份的日歷
思考:Linux 命令的時間和日歷存在的意義是什么?
有些語言是基于 Linux 命令組成起來的語言,比如 shell 。因為腳本也是要打日志的,所以腳本也是需要有時間的。現在用命令行看時間的人很少,但是如果把時間倒退到 40 年前,就會有人去拿命令行去查看時間。
Ⅲ . 文件查找
01 find 指令
find 路徑 -[選項]
指令功能?:用于在文件樹中查找文件,并作出相應的處理(可能訪問磁盤)。
指令介紹:
- Linux 下?find?命令在目錄結構中搜索文件,并執行指定的操作。
- Linux 下?find?命令提供了相當多的查找條件,功能很強大。由于?find?具有強大的功能,所以它的選項也很 多,其中大部分選項都值得我們花時間來了解一下。
- 即使系統中含有網絡文件系統(NFS),find?命令在該文件系統中同樣有效,只要你具有相應的權限。
- 在運行一個非常消耗資源的?find?命令時,很多人都傾向于把它放在后臺執行,因為遍歷一個大的文件系統可能會花費很長的時間?(這里是指30G字節以上的文件系統)
常用選項:
- name?按照文件名查找文件
用法演示:在家目錄下查找所有?.c?文件
02 grep 命令(行文本過濾工具)
在我們之前形成的有一千行的大文本?large.txt?中,
如果我想把其中的 123?關鍵字的行拎出來,我們就可以使用?grep?命令:
$ grep '123' large.txt # 顯示large.txt中帶有123的行
grep [選項] 搜尋字符串 文件
指令功能?:在文件中搜索字符串,將找到的行打印出來。
常用選項:
- -i? ?忽略大小寫的不同,所以大小寫視為相同。
- -n? 順便輸出行號。
- -v??反向選擇(反選),凡是具有關鍵字的文本行,去掉并保留沒有匹配關鍵字的行。
注意事項:
①?只要某行存在你要找的關鍵字,整行都會被保留顯示出來,所以稱?grep?為行文本過濾工具。
②?grep?匹配時是明確大小寫的?,如果想忽略大小寫,須加?-i?選項。
操作演示
①??-v?反向選擇? |??-iv?忽略大小寫并反向選擇
②??-n?選項,將查找的結果帶上匹配行所在行號
Ⅳ . 打包與壓縮
01 zip 指令
為了方便講解,我們先準備如下操作:
zip [壓縮文件.zip] [目錄或文件]
指令功能?:將目錄或文件壓縮成 zip 格式
常用選項:
- -r??遞歸處理,將指定目錄下的所有文件和子目錄一并處理。
操作演示:
02 unzip 指令
那么如何解壓呢?
unzip [目標] # 解壓目標文件
操作演示:我們可以使用?zip?指令對應的?unzip?指令對它進行解壓操作:
先把之前的 tar_package 移走
此時我們?cd?到?tar_package?文件中,卻發現什么都沒有
原來我們一開始就壓了個寂寞,
只是把目錄打包了,里面的 file 文件都沒打包進去,相當于你只打包了個文件夾!
注意事項:直接?zip?目錄,是打包不了目錄里面的東西的!
正確做法是 —— 對于目錄的打包,如果你想打包目錄里的東西:
$ zip -r [壓縮包名稱] [壓縮對象] # 遞歸壓縮
操作演示:使用?zip?-r?去打包目錄
用 unzip 解壓:
注意事項:unzip?解壓出來的原始數據,都會被放在當前路徑下。
如果你想指定解壓到指定目錄下,可以在?unzip?-d?后加上路徑。
思考:我為什么要打包壓縮?
① 節約空間,壓縮一下可以節約空間。
② 我們下載下來的軟件是壓縮包,曾經提供軟件的人,上傳的是壓縮包。
所有的軟件寫好之后,不是只有一個文件的!所有的互聯網公司后臺都是 Linux 系統,開發人員開發的軟件,將來都是要部署在 Linux 系統上的,所以所有的軟件開發好之后都要打包壓縮上載到 Linux 上,進行安裝部署。所以 Linux 必須支持解包解壓。
03 tar 指令
一般一個壓縮包是需要有兩個步驟的:① 打包? ? ② 壓縮。
我們還要講一種壓縮方式,這種壓縮方式也是 Linux 中最常見的一種 ——?tar?指令。
tar [-cxtzjvf] 文件與目錄 .... 參數
指令功能?:打包 / 解包(不打開它,直接看內容)
常用選項:
- -c ? 建立一個壓縮文件的參數指令(create 的意思)。
- -x ? 解開一個壓縮文件的參數指令!
- -t ? ?查看 tarfile 里面的文件!
- -z ? 是否同時具有 gzip 的屬性?以及是否需要用 gzip 壓縮?
- -j ? ?是否同時具有 bzip2 的屬性?以及是否需要用 bzip2 壓縮?
- -v ? 壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!
- -f ? 使用檔名,請留意,在 f 之后要立即接檔名!不要再加參數!
- -C ?解壓到指定目錄。
操作演示:打包?tar?czf?和壓縮?tar?xzf?都可以用?tar?指令去完成:
操作演示:tar?zcvf?、tar?xzvf?在壓縮過程中顯示文件
操作演示:-C?選項,解壓到指定目錄下:
Ⅴ . 其他常見指令
01 bc 指令
Linux 下,我們可以用?bc?命令很方便地進行浮點運算:
echo " [計算內容] " | bc
02 uname -r 指令
不同的平臺下對應的指針大小是不一樣的,在 VS32 位下指針對應的大小是 4 個字節,
在64位下系統,我們的指針大小就是 8 字節。我們該怎么知道當前系統的體系結構信息呢?
我們可以用?uname?-a?查看系統中的很多信息,如果只想看內核版本,可以輸?uname?-r:
uname [選項]
指令功能?:獲取電腦和操作系統的相關信息
指令介紹:?uname?可顯示 Linux 主機所用的操作系統的版本、硬件的名稱等基本信息。
常用選項:-a?詳細輸出所有信息,依次為內核名稱,主機名,內核版本號,內核版本,硬件名,處理器類型,硬件平臺類型,操作系統名稱。
03 常用熱鍵
什么是熱鍵?熱鍵即組合鍵,可以理解為經常使用的按鍵。
熱鍵有什么用呢?比如下面這些情況。
ctrl + C?- 令當前程序暫停(可終止失控程序)
tab?-?命令的自動補齊
Ctrl + r?- 搜索歷史命令
Ctrl + d?- 快速退出賬戶
04 關機
注意事項:如果使用的是云服務器,云服務器是不需要關機的,永遠不關機。
shutdown [選項] ** 常見選項: **
指令功能?:關機
常用選項:
- -h??將系統的服務停掉后,立即關機。
- -r? ?在將系統的服務停掉之后就重新啟動 -t sec :
- -t???后面加秒數,為 "過幾秒后關機" 的意思