Linux基本指令
就像我們當(dāng)初學(xué)習(xí)使用Windows一樣,我們總要從最開始簡單操作學(xué)起,例如點(diǎn)擊,雙擊,認(rèn)識一些文件夾,文件,怎么進(jìn)去文件夾,怎么打開文件,等等這些操作。我們開始學(xué)習(xí)使用Linux也是學(xué)習(xí)一些基本的操作。在此之前,我希望來先談一談指令。
首先說明,我們使用指令與計(jì)算機(jī)進(jìn)行交互其實(shí)和我們在Windows下用鼠標(biāo)點(diǎn)擊,等等一些操作其實(shí)沒有區(qū)別,只是Windows做了一個圖形化界面,降低了使用的門檻而已,但是為什么Linux使用指令,使用指令有什么好處呢?
使用指令的特點(diǎn):
- 指令是操作系統(tǒng)直接為我們提供的操作接口,因此指令操作能讓我們更貼近操作系統(tǒng)
- 圖形化界面其實(shí)是封裝過后的指令,因此指令操作的效率更高
因此在企業(yè)級開發(fā)中,我們都是使用命令行界面。
指令的本質(zhì)
我們知道Linux操作系統(tǒng)是通過一個個指令來進(jìn)行操作的,但是指令到底是什么呢?為什么輸入這個指令就能夠執(zhí)行一些操作呢?
在Linux中一切皆文件,這是一個很重要的特點(diǎn)。
所以一個個的指令本質(zhì)其實(shí)就是一個個可執(zhí)行程序結(jié)尾的文件,例如Windows中就是我們編譯代碼后生成的.exe
文件就是可執(zhí)行程序文件。
那我們怎么來驗(yàn)證呢?我們可以先一段代碼,然后將它編譯后生成一個可執(zhí)行程序,看看怎么運(yùn)行它。
通過./a.out
就可以運(yùn)行了,而我們執(zhí)行一些系統(tǒng)的指令,例如ls
等等,為什么不用加路徑呢?既然它們都是可執(zhí)行文件,為什么我們自己寫的就要加路徑。
其實(shí)只要你愿意你也可以將自己的可執(zhí)行程序,放到特定的路徑下面,但是并不推薦這么做。當(dāng)然為了驗(yàn)證我們可以試一下:
mytest
是我們剛才寫的可執(zhí)行程序a.out
,只是重新命名了一下。這時候可以看到不加路徑也可以執(zhí)行我們自己寫的可執(zhí)行文件了。
總結(jié):指令的本質(zhì)就是可執(zhí)行程序。和我們自己寫的沒有任何區(qū)別。所以不要覺得指令多么奇特,不要去神話它。
那么怎么知道指令在哪里,這里也有一個which
用來查看指令在哪里,
其中的alias
是代表別名,例如圖中 ll
就等價于ls -l
后面的color就是配色,我們也可以自己來為指令定義別名:
如果不想要了,直接將內(nèi)容改為空,或者直接退出xshell
再重新登錄,也會自動刪掉,雖然有辦法讓它留下來,但是并不推薦這樣的方式,否則學(xué)的多了哪個是自己起的別名,哪個是系統(tǒng)指令可能都搞混了。
ls指令
語法: ls [選項(xiàng)] [目錄或文件]
功能:對于目錄,該命令列出該目錄下的所有子目錄與文件。對于文件,將列出文件名以及其他信息。
ls很好理解,簡單來說就是顯示當(dāng)下有什么,但是它還有一些選項(xiàng)。
顯然我們只看名稱肯定是不夠的,有時還要看一些文件的詳細(xì)信息,這時候在指令的基礎(chǔ)上多了一些選項(xiàng),
-a 列出目錄下的所有文件,包括以. 開頭的隱含文件。
-d 將目錄象文件一樣顯示,而不是顯示其下的文件。 如:ls –d 指定目錄
-i 輸出文件的 i 節(jié)點(diǎn)的索引信息。 如 ls –ai 指定文件
-k 以 k 字節(jié)的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的詳細(xì)信息。
-n 用數(shù)字的 UID,GID 代替名稱。
-F 在每個文件名后附上一個字符以說明該文件的類型,“*”表示可執(zhí)行的普通文件;“/”表示目錄;“@”表示符號鏈接;
“|”表示FIFOs;“=”表示套接字(sockets)。
-r 對目錄反向排序。
-t 以時間排序。
-s 在l文件名后輸出該文件的大小。
-R 列出所有子目錄下的文件。(遞歸)
-1 一行只輸出一個文件
最常用的其實(shí)也就幾個,-a(顯示隱藏文件),-l(顯示詳細(xì)信息),下面展示幾個,感興趣下面可以自己試一下。
pwd指令
語法: pwd
功能:顯示用戶當(dāng)前所在的目錄
常用選項(xiàng):
無
cd指令
Linux系統(tǒng)中,磁盤上的文件和目錄被組成一棵目錄樹,每個節(jié)點(diǎn)都是目錄或文件。
語法:cd 目錄名
功能:改變工作目錄。將當(dāng)前工作目錄改變到指定的目錄下
特殊用法:
cd .. : 返回上級目錄
cd /home/lzb/code/ : 絕對路徑
cd ../code/ : 相對路徑
cd ~:進(jìn)入用戶家目
cd -:返回最近訪問目錄
總結(jié)來說,cd這個命令和我們在Windows中,點(diǎn)擊一個目錄是一樣的效果。
touch指令
語法:touch [選項(xiàng)]… 文件…
功能:touch命令參數(shù)可更改文檔或目錄的日期時間,包括存取時間和更改時間,或者新建一個不存在的文件。
常用選項(xiàng):
-a 或--time=atime或--time=access或--time=use只更改存取時間。
-c 或--no-create 不建立任何文檔。
-d 使用指定的日期時間,而非現(xiàn)在的時間。
-f 此參數(shù)將忽略不予處理,僅負(fù)責(zé)解決BSD版本touch指令的兼容性問題。
-m 或--time=mtime或--time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統(tǒng)統(tǒng)設(shè)成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現(xiàn)在的時間
touch就是創(chuàng)建一個普通文件,而不是目錄。
mkdir指令(重要)
語法:mkdir [選項(xiàng)] dirname…
功能:在當(dāng)前目錄下創(chuàng)建一個名為 “dirname”的目錄
常用選項(xiàng):
-p,?--parents??可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項(xiàng)后,系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
創(chuàng)建一個目錄,或者-p選項(xiàng)可以創(chuàng)建一串目錄。
rmdir&&rm指令(重要)
有創(chuàng)建目錄和文件,就要有刪除。rmdir和mkdir相對,mkdir是創(chuàng)建目錄,rmdir是刪除目錄。
語法:rmdir [-p] [dirName]
適用對象:具有當(dāng)前目錄操作權(quán)限的所有使用者
功能:刪除空目錄
常用選項(xiàng):
-p 當(dāng)子目錄被刪除后如果父目錄也變成空目錄的話,就連帶父目錄一起刪除
rm 命令可以同時刪除文件或目錄
語法:rm [-f-i-r-v] [dirName/dir]
適用對象:所有使用者
功能:刪除文件或目錄
常用選項(xiàng):
-f 即使文件屬性為只讀(即寫保護(hù)),亦直接刪除
-i 刪除前逐一詢問確認(rèn)
-r 刪除目錄及其下所有文件
man指令(重要)
Linux的命令有很多參數(shù),我們不可能全記住,我們可以通過查看聯(lián)機(jī)手冊獲取幫助。
語法: man [選項(xiàng)] 命令
常用選項(xiàng):
-k 根據(jù)關(guān)鍵字搜索聯(lián)機(jī)幫助
-num 只在第num章節(jié)找
-a 將所有章節(jié)的都顯示出來,比如 man printf 它缺省從第一章開始搜索,知道就停止,用a選項(xiàng),當(dāng)按下q退出,他會繼續(xù)往后面搜索,直到所有章節(jié)都搜索完畢。
解釋一下,面手冊分為8章
1 是普通的命令
2 是系統(tǒng)調(diào)用,如open,write之類的(通過這個,至少可以很方便的查到調(diào)用這個函數(shù),需要加什么頭文件)
3 是庫函數(shù),如printf,fread4是特殊文件,也就是/dev下的各種設(shè)備文件(主要是C語言的庫函數(shù))
5 是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義
6 是給游戲留的,由各個游戲自己定義
7 是附件還有一些變量,比如向environ這種全局變量在這里就有說明
8 是系統(tǒng)管理用的命令,這些命令只能由root使用,如ifconfifig
cp指令(重要)
語法:cp [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄
功能:復(fù)制文件或目錄
說明:cp指令可以復(fù)制文件和目錄,同時指令兩個以上的文件或目錄,且最后一個必須為已經(jīng)存在的目錄,否則會出現(xiàn)錯誤信息。
常用選項(xiàng):
-f 或 --force 強(qiáng)行復(fù)制文件或目錄, 不論目的文件或目錄是否已經(jīng)存在
-i 或 --interactive 覆蓋文件之前先詢問用戶
-r遞歸處理,將指定目錄下的文件與子目錄一并處理。若源文件或目錄的形態(tài),不屬于目錄或符號鏈接,則一律視為普通文件處理
-R 或 --recursive遞歸處理,將指定目錄下的文件及子目錄一并處理
mv指令(重要)
mv命令是move的縮寫,可以用來移動文件或者將文件改名(move (rename) files),是Linux系統(tǒng)下常用的命令經(jīng)常用來備份文件或者目錄。
語法:mv [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄
功能:
視mv命令中第二個參數(shù)類型的不同(是目標(biāo)文件還是目標(biāo)目錄),mv命令將文件重命名或?qū)⑵湟浦羵€新的目錄中。
當(dāng)?shù)诙€參數(shù)類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目名),它將所給的源文件或目錄重命名為給定的目標(biāo)文件名。
當(dāng)?shù)诙€參數(shù)是已存在的目錄名稱時,源文件或目錄參數(shù)可以有多個,mv命令將各參數(shù)指定的源文件移至目標(biāo)目錄中。
常用選項(xiàng):
-f :force 強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會詢問而直接覆蓋
-i :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋。
如果沒有目標(biāo)文件或目錄就會自動創(chuàng)建。所以也可以用來重命名:
因?yàn)長inux下刪除一個文件就是真的刪除了,并不像Windows一樣有回收站可以恢復(fù),所以我們可以將rm改造一下改為mv的功能,防止誤刪重要文件。
將rm改造成mv
vim ~/.bashrc #修改這個文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
mv -i ~/.trash/\$@ ./
}
trash() {
mv $@ ~/.trash/
}
但是現(xiàn)在并不推薦,等以后學(xué)的知識足夠了再來能看懂這段腳本的時候再來做。
重定向
- 輸出重定向:“>”
本來echo是將字符串輸出到顯示器文件,但是通過重定向輸出到了文件test中。
- 追加重定向:“>>”
追加重定向則是向文件末尾追加內(nèi)容。圖中有換行是因?yàn)閑cho自帶,如果用printf則不會有自動的換行。
- 輸入重定向:‘<’
從文件中讀取數(shù)據(jù)給cat顯示在顯示器文件。輸入重定向相對來說是最難理解的,但是沒有關(guān)系,之后會深入理解。
cat指令
語法:cat [選項(xiàng)] [文件]
功能: 查看目標(biāo)文件的內(nèi)容
-b 對非空輸出行編號
-n 對輸出的所有行編號
-s 不輸出多行空行
cat用來查看文件里的內(nèi)容,有幾個選項(xiàng)可以使用:
通常將兩個選項(xiàng)連起來即可,區(qū)別就是對空行是否編號。
more指令
語法:more [選項(xiàng)] [文件]
功能:more命令,功能類似 cat
常用選項(xiàng):
-n 對輸出的所有行編號
q 退出more
less指令(重要)
less 工具也是對文件或其它輸出進(jìn)行分頁顯示的工具,應(yīng)該說是linux正統(tǒng)查看文件內(nèi)容的工具,功能極其強(qiáng)大。
less 的用法比起 more 更加的有彈性。在 more 的時候,我們并沒有辦法向前面翻, 只能往后面看但若使用了 less 時,就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往后翻看文件,更容易用來查看一個文件的內(nèi)容!
除此之外,在 less 里頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜
語法: less [參數(shù)] 文件
功能:less與more類似,但使用less可以隨意瀏覽文件,而more僅能向前移動,卻不能向后移動,而且less在查看
之前不會加載整個文件
選項(xiàng):
-i 忽略搜索時的大小寫
-N 顯示每行的行號
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重復(fù)前一個搜索(與 / 或 ? 有關(guān))
N:反向重復(fù)前一個搜索(與 / 或 ? 有關(guān))
q:quit
head和tail指令
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結(jié)尾某個數(shù)量的文字區(qū)塊,head 用來顯示檔案的
開頭至標(biāo)準(zhǔn)輸出中,而 tail 想當(dāng)然爾就是看檔案的結(jié)尾。
語法: head [參數(shù)]… [文件]…
功能:head 用來顯示檔案的開頭至標(biāo)準(zhǔn)輸出中,默認(rèn)head命令打印其相應(yīng)文件的開頭10行。
選項(xiàng):
-n<行數(shù)> 顯示的行數(shù)
語法: tail[必要參數(shù)] [選擇參數(shù)] [文件]
功能: 用于顯示指定文件末尾內(nèi)容,不指定文件時,作為輸入信息進(jìn)行處理。常用查看日志文件。
選項(xiàng):
f 循環(huán)讀取
-n<行數(shù)> 顯示行數(shù)
通常head和tail可以配合使用來截取一段內(nèi)容,
這樣就截取了1000到1020的20行內(nèi)容。
這里的‘|
’實(shí)際上是管道,用來連接多個指令,我們也可以配合更多指令:
date指令
date顯示
date 指定格式顯示時間: date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]
1.顯示常用的格式:
%H : 小時(00..23)
%M : 分鐘(00..59)
%S : 秒(00..61)
%X : 相當(dāng)于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相當(dāng)于 %Y-%m-%d
2.時間戳
時間->時間戳:date +%s
時間戳->時間:date -d@1508749502
Unix時間戳(英文為Unix epoch, Unix time, POSIX time 或 Unix timestamp)是從1970年1月1日(UTC/GMT的午夜)開始所經(jīng)過的秒數(shù),不考慮閏秒
cal指令
cal命令可以用來顯示公歷(陽歷)日歷。公歷是現(xiàn)在國際通用的歷法,又稱格列歷,通稱陽歷?!瓣枤v”又名“太陽歷”,系以地球繞行太陽一周為一年,為西方各國所通用,故又名“西歷”。
命令格式: cal [參數(shù)] [月份] [年份]
功能: 用于查看日歷等時間信息,如只有一個參數(shù),則表示年份(1-9999),如有兩個參數(shù),則表示月份和年份
常用選項(xiàng):
-3 顯示系統(tǒng)前一個月,當(dāng)前月,下一個月的月歷
-j 顯示在當(dāng)年中的第幾天(一年日期按天算,從1月1號算起,默認(rèn)顯示當(dāng)前月在一年中的天數(shù))
-y 顯示當(dāng)前年份的日歷
顯示日歷:
find指令(灰常重要)
Linux下find命令在目錄結(jié)構(gòu)中搜索文件,并執(zhí)行指定的操作。
Linux下find命令提供了相當(dāng)多的查找條件,功能很強(qiáng)大。由于find具有強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時間來了解一下。
即使系統(tǒng)中含有網(wǎng)絡(luò)文件系統(tǒng)( NFS),find命令在該文件系統(tǒng)中同樣有效,只你具有相應(yīng)的權(quán)限。
在運(yùn)行一個非常消耗資源的find命令時,很多人都傾向于把它放在后臺執(zhí)行,因?yàn)楸闅v一個大的文件系 統(tǒng)可能會花費(fèi)很長的時間(這里是指30G字節(jié)以上的文件系統(tǒng))
語法: find pathname -options
功能: 用于在文件樹種查找文件,并作出相應(yīng)的處理(可能訪問磁盤)
常用選項(xiàng):
-name 按照文件名查找文件
常見的搜索指令:
grep指令
語法: grep [選項(xiàng)] 搜尋字符串 文件
功能: 在文件中搜索字符串,將找到的行打印出來
常用選項(xiàng) :
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內(nèi)容的那一行
通常配合管道來進(jìn)行搜索:
應(yīng)用場景,例如在一個很長的文件中找到main函數(shù)。
這樣所有的入口就找到了。
查找特定的進(jìn)程:
zip/unzip指令
語法: zip 壓縮文件.zip 目錄或文件
功能: 將目錄或文件壓縮成zip格式
常用選項(xiàng):
-r 遞 歸處理,將指定目錄下的所有文件和子目錄一并處理
簡單會使用即可。注意有目錄是-r選項(xiàng)不能丟。
-d 解壓到指定目錄
tar指令
和zip和unzip的區(qū)別簡單來看,在于可以打包/解包,不打開它,直接看內(nèi)容
格式:tar [-cxtzjvf] 文件與目錄 …
參數(shù)
-c :建立一個壓縮文件的參數(shù)指令(create 的意思);
-x :解開一個壓縮文件的參數(shù)指令!
-t :查看 tarfile 里面的文件!
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v :壓縮的過程中顯示文件!這個常用,但不建議用在背景執(zhí)行過程!
-f :使用檔名,請留意,在 f 之后要立即接檔名喔!不要再加參數(shù)!
-C : 解壓到指定目錄
案例:
bc指令
bc就是一個簡單一個計(jì)算器,有時進(jìn)行一些浮點(diǎn)數(shù)的計(jì)算很方便。
uname -r 指令
語法:uname [選項(xiàng)]
功能: uname用來獲取電腦和操作系統(tǒng)的相關(guān)信息。
補(bǔ)充說明:uname可顯示linux主機(jī)所用的操作系統(tǒng)的版本、硬件的名稱等基本信息
常用選項(xiàng):
-a或–all 詳細(xì)輸出所有信息,依次為內(nèi)核名稱,主機(jī)名,內(nèi)核版本號,內(nèi)核版本,硬件名,處理器類型,硬件平臺類型,操作系統(tǒng)名稱
如果問到你怎么查Linux系統(tǒng)的體系結(jié)構(gòu),要查的就是uname -r
,當(dāng)然既然談到了系統(tǒng),再補(bǔ)充兩個命令。
df指令用來查系統(tǒng)的一些內(nèi)存使用情況:
lscpu查看cpu的相關(guān)信息:
重要的幾個熱鍵[Tab],[ctrl]-c, [ctrl]-d
[Tab]按鍵---具有『命令補(bǔ)全』和『檔案補(bǔ)齊』的功能
[Ctrl]+c按鍵---讓當(dāng)前的程序『停掉』
[Ctrl]+d按鍵---通常代表著:『鍵盤輸入結(jié)束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用來取代exit
[Ctrl]+r按鍵---查詢指令(只保存了最近的1千條)。history可以來查看
shutdown關(guān)機(jī)
通常Linux一般應(yīng)用在服務(wù)器上,服務(wù)器是不能隨便關(guān)機(jī)的,一般除了重大的更新維護(hù)等,都是一直運(yùn)行的。
語法:shutdown [選項(xiàng)]
常見選項(xiàng):
-h : 將系統(tǒng)的服務(wù)關(guān)掉后立即關(guān)機(jī)
-r : 在將系統(tǒng)的服務(wù)停掉之后重新啟動
-t sec : -t 后面加秒數(shù),亦即『過幾秒后關(guān)機(jī)』的意思
shell命令以及運(yùn)行原理
Linux嚴(yán)格意義上說的是一個操作系統(tǒng),我們稱之為“核心(kernel)“ ,但我們一般用戶,不能直接使用kernel。而是通過kernel的“外殼”程序,也就是所謂的shell,來與kernel溝通。如何理解?為什么不能直接使用kernel?
從技術(shù)角度,Shell的最簡單定義:命令行解釋器(command Interpreter)主要作用:
- 將使用者的命令翻譯給核心(kernel)處理
- 同時,將核心的處理結(jié)果翻譯給使用者
shell 對于Linux,有相同的作用,主要是對我們的指令進(jìn)行解析,解析指令給Linux內(nèi)核。反饋結(jié)果在通過內(nèi)核運(yùn)
行出結(jié)果,通過shell解析給用戶。
我們最常用的就是bash,指令就是通過bash來識別并分析的,
文章來源:http://www.zghlxwxcb.cn/news/detail-452943.html
媽呀,Linux是真的難寫,很多其實(shí)概念都是難以表述的,總結(jié)起來也很費(fèi)勁。難怪都和我說Linux很難學(xué),這個時間點(diǎn)也快期末了,更新頻率肯定也要降下來了,愁死我了。但是我還是相信沒有邁不過去的坎,加油!文章來源地址http://www.zghlxwxcb.cn/news/detail-452943.html
到了這里,關(guān)于【Linux】基本指令,擁抱Linux的第一步的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!