文章目錄
- 一、man指令
- 二、輸入/輸出重定向(echo、一切皆文件)
- 三、cp指令
- 四、mv指令
- 五、cat指令
- 六、more/less指令
- 七、head/tail指令
- 八、管道初見
一、man指令
Linux的指令有很多參數,我們不可能全記住,可以通過查看聯機手冊獲取幫助。
man 指令就可以用來查看指令的信息,查看完畢按q退出。
man手冊一共分為9個章節,指令后面不跟選項的話默認查第一章,如果第一章找不到,就會去第二章找,我們最主要了解前兩個就行了,后面的幾乎用不到。
直徑章節查找指令如下:
二、輸入/輸出重定向(echo、一切皆文件)
這里小編想先補充一個理論:Linux系統下一切皆文件
下面小編會嘗試以指令角度證明這個觀點。
首先小編先介紹一個指令echo,它類似printf,它可以打印數據到顯示器,只不過printf支持格式化輸出:%d %c …
既然數據可以被打印到顯示器上,那顯示器就可以理解為一個文件,我們把數據寫入顯示器,同理,后面我們介紹從鍵盤讀取數據時,鍵盤也可以理解成一個文件。
下面我們再來看一個指令:
這里我們echo指令如果不加后面的東西,會默認寫入顯示器文件,而這里卻寫入到了文本文件test.txt,這里其實發生了輸出重定向,我們在后面加上“>"和文件名就會把輸出文件由顯示器文件更改到目標文件。(cat指令是打印文件的內容,后面會細講)
輸出重定向有兩個特點:
1、若輸出重定向的文件不存在,會自動新建一個文件。
2、在輸出重定向寫入文件前,會先將原始文件的內容清空再寫入新內容。
上面我們已經展示了第一個特點的,下面是第二個特點的示例:
所以我們可以根據第二個特點清空文件:
如果是兩個>>符號就就不會清空test,txt的原始數據,這就是追加重定向。
輸入重定向: 輸入重定向相對更難理解,小編這里先畫一幅圖來方便大家理解:
cat可以類比scanf,當我們使用默認cat指令時,它會等待用戶寫入數據,用戶再按回車時就會把用戶輸入的數據顯示到顯示器上,而我們輸入重定向后它會直接從文件讀數據然后顯示。
這里有的讀者朋友可能有疑問,cat test,txt 和 cat < test,txt 有什么區別,它們倆本質是不同的,這里小編不能細講,因為牽涉到后面的知識,這里先埋個伏筆,等待后面小編以后更新的博客吧。
下面小編再以終端為例演示一下一切皆文件:(終端是Xshell登陸遠端服務器時顯示的界面,如下所示:)
一般終端文件會被放在 /dev/pts 目錄下,我們現在打開了一個終端,該目錄下其中的文件名為0的文件就是終端文件,ptms目前不用管,那我多打開幾個終端是不是該目錄的文件個數就會變多呢?
這是當然,示例如下:
那么我們已經知道終端是文件了,那我們拿到終端的文件路徑后就可以輸出重定向到對應的終端文件,那終端上就會顯示我們輸出的數據,這也可以進一步證明Linux下一切皆文件。
三、cp指令
(copy)
這是一條拷貝指令。可以拷貝普通文件也可以拷貝目錄,拷貝目錄因為要遞歸拷貝,所以最好加上選項 -rf 格式如下:
拷貝普通文件:cp src(原) dst(目標)
拷貝目錄: cp -rf src(原) dst(目標)
這里的src 和 dst 可以是絕對路徑,也可以是相對路徑。
四、mv指令
(move)
mv 指令的格式和cp指令類似,但是它不需要加選項 -rf
(不同指令的設計者可能不同,所以無法統一標準),并且當它的目標文件或路徑是否存在時該指令所代表的含義是不同的,細節如下:
- 若目標文件在當前目錄存在或目標路徑存在時,相當于剪切并拷貝原文件
- 若目標文件或目標路徑在當前目錄不存在或目標路徑不存在時,相當于對原文件或原目錄重命名
當然剪切與重命名可以同時發生,所以我上面的描述不一定準確,mv指令最終的行為都取決于你的邏輯。
五、cat指令
該指令用來查看文件的內容,和ls指令用來查看文件屬性相對應,它適合查看小文件的文件內容,一但內容過長就會導致刷屏,查看長文件推薦使用more和less,下一組指令就會講解。
它不能用來查看目錄的內容。
- n選項:打印時所有行編號
- b選項:打印時對非空行編號
- s 打印時將多行空行改為一行
這里還有一個有趣的指令,把cat倒著寫tac,這個指令可以把文件內容倒序打印出來。
六、more/less指令
這兩條指令適合用來查看大文件(如日志文件),less指令實際上最常用。
more打印完一整個屏幕后會停下來,我們按回車鍵就會繼續往下打印,它只支持回車鍵向下翻,不支持上下自由查看,所以不做推薦,重點了解less指令。
less打印完一整個屏幕后也會停下來,只不過它支持上下方向鍵自由查看文件內容,它還支持查找功能,輸入 /xxx 后按回車就可以向下查找到第一個帶xxx的數字,輸入 ?xxx 后按回車就可以向上查找到第一個帶xxx的數字,再按n就可以跳轉到下一個帶xxx的數字。 選項 -i 忽略搜索時的大小寫,選項 -N顯示每行的行號。查看完畢按q退出。
七、head/tail指令
head/tail指令用來查看文件的前x行。
八、管道初見
如果我們要提取大文件的中間部分該怎么做呢?首先linux沒有直接提供能訪問中間部分的指令,我們要實現提起中間部分需要借助head和tall指令實現,比如我們要提取test.c的5000行到5010行,先head提取前5011行到一個臨時文件,然后再tail這個文件的后11行就成功提取到我們想要的了。
這樣雖然能實現我們想要的結果,但是這種左手倒右手的方式效率太低了,這里就要引入一個概念,管道:
在linux系統中,存在一種可以用來連接多條指令執行結果的語法特征,叫做管道,管道也是一種文件,只不過它是一種內存級文件,不會存在磁盤中。
管道在命令行中就是一個 | (用來集連指令的豎畫線)
管道的原理我們目前還無法理解,但是可以學會理解并使用它,首先總結一下現實世界管道的特征,它一定有入口和出口,并且是用來傳輸資源的,如石油,自來水,而在計算機世界里,數據是它的資源。下面是一個利用管道的例子:
所以管道就可以將我們之前所介紹的工具鏈指令集連起來,實現更多更復雜的功能。
以上就是小編分享的全部內容了,如果覺得不錯還請留下免費的贊和收藏
如果有建議歡迎通過評論區或私信留言,感謝您的大力支持。
一鍵三連好運連連哦~~