系列文章目錄
文章目錄
- 系列文章目錄
- 一、Linux基本常識
- 二、Linux基本指令
- 2.1 mkdir指令(重要)
- 2.2 rmdir指令
- 2.3 rm指令(重要)
- 2.4 touch指令
- 2.5 ls指令
- 2.6 pwd指令
- 2.7 cd指令
- 2.7.1 Linux中的目錄結構
- 2.7.2 絕對路徑和相對路徑
- 2.7.3 cd指令
- 2.8 man指令(重要)
- 2.9 echo指令
- 2.10 cat指令
- 2.11 重定向
- 2.12 more指令
- 2.13 less指令(重要)
- 2.14 head指令
- 2.15 tail指令
- 2.16 cp指令(重要)
- 2.17 mv指令(重要)
- 2.18 時間相關指令
- 2.19 cal指令
- 2.20 find指令(非常重要)
- 2.21 grep指令
- 2.22 zip/unzip指令
- 2.23 tar指令(重要)
- 2.24 bc指令
- 2.25 與系統相關的指令
- 三、Linux中幾個重要的熱鍵
一、Linux基本常識
首先我們需要知道一句話“Linux下一切皆文件”
這意味著我們的所有的Linux指令操作都是針對文件進行的
其次對文件做進一步的認識
Linux中的文件分為兩種:目錄(相當于Windows中的一個文件夾)和普通文件
d:目錄文件
-:普通文件
文件 = 文件內容 + 文件屬性(文件的屬性也是數據,也需要存儲)
而文件操作 = 對文件內容的操作 或者 對文件屬性的操作
二、Linux基本指令
2.1 mkdir指令(重要)
語法:mkdir [選項] dirname(目錄名)
功能:在當前目錄下創建一個名為"dirname"的目錄
常用選項:
??????? -p,–parents:后跟一個路徑名稱,此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。
??????? 示例:mkdir -p text/text1/text2/:遞歸建立多個目錄
2.2 rmdir指令
rmdir是一個與mkdir相對應的命令,mkdir是建立目錄,而rmdir是刪除目錄
語法:rmdir [選項][dirname]
適用對象:具有當前目錄操作權限的所有使用者
功能:刪除空目錄
常用選項:
??????? -p:當前目錄被刪除后如果父目錄也變成空目錄的話,就連帶父目錄一起刪除
2.3 rm指令(重要)
rm指令可以同時刪除普通文件或目錄
語法:rm [選項][dirname]
適用對象:所有使用者
功能:刪除文件或目錄
常用選項:
??????? -f:即使文件屬性為只讀(即寫保護),亦直接刪除
??????? -i:刪除前逐一詢問
??????? -r:刪除目錄及其下所有文件
2.4 touch指令
語法:touch [選項] 文件
功能:touch命令可以更改文檔或目錄的日期,包括存取時間和更改時間,或者新建一個不存在的文件
常用選項:
??????? -a,–time=atime,–time=access,–time=use:只更改存取時間
??????? -c,–no-create:不建立任何文檔
??????? -d:使用指定的日期時間,而非現在的時間
??????? -f:此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題
??????? -m,–time=mtime,–time=modify:只更改變動時間
??????? -r:把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同
??????? -t:使用指定的日期時間,而非現在的時間
2.5 ls指令
語法:ls[選項][目錄或文件]
功能:對于目錄,該命令列出該目錄下的所有子目錄與文件。對于文件,將列出文件名以及其他信息。
常用選項:
??????? 單獨的ls:什么選項都不加,只顯示文件名這一個屬性
??????? -l:列出文件的詳細信息(顯示更多的文件屬性),可簡寫成ll
??????? -a:列出目錄下的所有文件,包括以.開頭的隱含文件
在Linux中以.開頭的文件是隱藏文件 Linux任何一個目錄下面都一定有兩個隱藏文件.和…
其中…表示當前路徑的上級路徑,.表示當前路徑,幫助用戶定位當前目錄下的一個文件
補充:在Linux中敲指令的時候,選項可以跟多個,主要有以下兩種寫法
- ls -a -l
- ls -al
??????? d:將目錄像文件一樣顯示,而不是顯示其下的文件,ls后面如果跟的是目錄,則顯示的是當前目錄下所有文件的屬性,要想顯示目錄自身的屬性就需要用到-d選項
??????? -F:在每個文件名后附上一個字符以說明該文件的類型,*表示可執行文件;/表示目錄;@表示符號鏈接;|表示FIFOS;=表示套接字(sockets)
??????? -i:輸出文件 i 節點的索引信息。如ls -ai 指定文件
??????? -k:以 k 字節的形式表示文件的大小。如ls -alk 指定文件
??????? -n:用數字的UID,GID代替名稱
??????? -r:對目錄反向排序
??????? -t:以時間排序
??????? -s:在文件后輸出該文件的大小,(大小排序,如何找到目錄下最大的文件)
??????? -R:列出所有子目錄下的文件(遞歸)
??????? -1:一行只輸出一個文件
2.6 pwd指令
語法:pwd
功能:顯示用戶當前所在目錄
常用選項:無
2.7 cd指令
2.7.1 Linux中的目錄結構
Linux中一個目錄里面可以再放目錄和文件,因此整個Linux的目錄結構一定是一個多叉樹的樣子,它的葉子節點一定是空目錄或者普通文件,路徑上的節點一定是一個非空目錄,我們所有的對文件或目錄的增刪查改,本質都是對這顆多叉樹的增刪查改
2.7.2 絕對路徑和相對路徑
我們定位一個文件,通常用路徑來進行定位,路徑定位具有唯一性。因為任何一個節點可能有多個子節點,但是一個節點最多只能有一個父節點,所以從上往下路徑可能有多種,但是從葉子節點往回推,路徑是唯一的
絕對路徑:把從根目錄\開始定位到指定位置,具有唯一性的路徑,稱為絕對路徑
相對路徑:以自己當前所處的路徑為起始參照參照位置,來進行特定文件的定位
絕對路徑往往都比較長,但是不變,一般在一些固定場景中,如配置文件中多使用絕對路徑。一般命令行的輸入比較常用相對路徑
2.7.3 cd指令
語法:cd 目錄名
功能:改變工作目錄,將當前工作目錄改變到指定的目錄下
示例:
??????? cd …:返回上級目錄
??????? cd /home/wcy/lesson4/:絕對路徑
??????? cd …/lesson5/:相對路徑
??????? cd ~:進入當前用戶的家目錄
??????? cd -:返回最近訪問目錄
2.8 man指令(重要)
Linux的命令有很多選項,我們不可能全記住,我們可以通過查看聯機手冊獲取幫助,訪問Linux手冊頁的命令是man
語法:man [選項] 命令
常用選項:
??????? -k:根據關鍵字搜索聯機幫助
??????? num:只在第num章節找
??????? -a:將所有章節的都顯示出來,比如man printf它缺省從第一章開始搜索,找到就停止,用-a選項,當按一下q推出,它會繼續往后面搜索,直到所有章節都搜索完畢
手冊分為8章:
- 是普通的命令
- 是系統調用,如open、write之類的(通過這個,至少可以很方便的查找到調用這個函數,需要加什么頭文件)
- 是庫函數,如printf、fread
- 是特殊文件,也就是/dev下的各種設備文件
- 是指文件的格式,比如passwd,就會說明這個文件中各個字段的含義
- 是給游戲留的,由各個游戲自己定義
- 是附件還有一些變量,比如像environ這種全局變量在這里就有說明
- 是系統管理用的命令,這些命令只能由root使用,比如ifconfig
2.9 echo指令
語法:echo 字符串
功能:將字符串打印到屏幕上
常用選項:無
2.10 cat指令
語法:cat [選項][文件]
功能:查看目標文件的內容
常用選項:
??????? -b:對非空輸出行編號
??????? -n:對輸出的所有行編號
??????? -s:不輸出多行空行
cat會把文件中的所有內容顯示出來,因此cat不適合看大文本,適合看小文本
2.11 重定向
Linux下一切皆文件,顯示器、鍵盤、網卡、普通文件……這些東西本質上都是文件。只不過顯示器只有寫方法,向顯示器打印,其實就是向顯示器文件寫入,顯示器的讀方法為空,無法從顯示器讀取數據。鍵盤只有讀方法,寫方法為空。而普通文件具有讀寫兩個功能。
?再來理解echo和cat指令,echo指令默認把后面跟的字符串寫入顯示器文件中。cat指令后面如果沒有跟任何文件,則默認從鍵盤文件中讀取數據,然后寫入到顯示器文件中。能否通過一些手段,把echo后面的字符串寫入其他文件,或者讓cat從其他文件中讀取數據呢?答案是肯定的,通過下面的重定向符號就可以實現:
- >:以覆蓋的方式將數據輸出到指定的文件或設備上(可以用來清空一個目標文件,還可以生成一個文件
- >>:以累加的方式將數據輸出到指定的文件或設備上
- <:將原本需要從鍵盤輸入的數據,改由文件內容來取代
示例:
- echo 'Hello Linux' > text.txt',將字符串寫入text.txt文件中
- cat < text.txt,從text.txt文件中讀取數據
2.12 more指令
語法:cat [選項][文件]
功能:查看目標文件的內容,打印占滿一屏后不再打印,按回車可下翻
常用選項:
??????? -n:對輸出的所有行編號
??????? q:退出more
??????? -數字:指定打印多少行停下來,也可以進行下翻
??????? /數字:直接跳轉到某個數字對應的行號附近,然后打印滿整個屏幕2.13 less指令(重要)
- less工具也是對文件或其它輸出進行分頁顯示的工具,應該說是Linux正統查看文件內容的工具,功能極其強大
- less的用法比起more更加的有彈性。在more的時候,我們并沒有辦法向前翻,只能往后面看
- 使用了less就可以用鍵盤上的[pageup]和[pagedown]等按鍵的功能來往前往后翻看文件,更容易用來查看一個文件的內容
- less里面還有更多的搜索功能,不止可以向下搜,也可以向上搜
語法:less [參數] 文件
功能:less與more類似,但使用less可以隨意瀏覽文件,而more僅能向后移動,不能向前移動,而且less在查看之前不會加載整個文件
選項:
??????? -i:忽略搜索時的大小寫
??????? -N:顯示每行的行號
??????? /字符串:向下搜索字符串的功能
??????? ?字符串:向上搜索字符串的功能
??????? n:重復前一個搜索(與 / 或 ?有關)
??????? N:反向重復前一個搜索(與 / 或 ? 有關)
??????? q:退出2.14 head指令
語法:head [參數][文件]
功能:head用來顯示檔案的開頭至標準輸出中,默認head命令打印其相應文件的開頭10行
選項:
??????? -n<行數>:顯示n行2.15 tail指令
語法:tail[必要參數][選擇參數][文件]
功能:用于顯示指定文件末尾的內容,不指定文件時,作為輸入信息進行處理,常用查看日志文件
選項:
??????? -n<行數>:顯示的行數2.16 cp指令(重要)
語法:cp[選項] 源文件或目錄 目標文件或目錄
功能:復制文件或目錄
說明:cp指令用于復制文件或目錄,如果同時指定兩個以上的文件或目錄,且最后的目的地是一個已將存在的目錄,則它會把前面指定的所有文件或目錄復制到此目錄中。若同時指定多個文件或目錄,而最后的目的地并非一個已存在的目錄,則會出現錯誤信息
常用選項:
??????? -f,–force:強行復制文件或目錄,不論目的文件或目錄是否已經存在
??????? -i,–interactive:覆蓋文件之前先詢問用戶
??????? -r:遞歸處理,將指定目錄下的文件與子目錄一并處理。若源文件或目錄的形態,不屬于目錄或符號鏈接,則一律視為普通文件處理
??????? -R,–recursive:遞歸處理,將指定目錄下的文件及子目錄一并處理
示例:- cp test.txt mytest.txt,將test.txt文件在當前路徑下進行拷貝,拷貝得到的文件名字是mytest.txt
- cp text.txt …/,將text.txt文件拷貝到上級目錄下,拷貝得到的文件名字是test.txt(沒有指定名字那就不變)
- cp text.txt …/mytest.txt,將test.txt文件拷貝到上級目錄下,拷貝得到的文件名字是mytest.txt
2.17 mv指令(重要)
mv是move的縮寫,可以用來移動文件(剪切)或者將文件改名,是Linux系統下常用的命令,經常用來備份文件或者目錄
語法:mv[選項] 源文件或目錄 目標文件或目錄
功能:- 視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其剪切至一個新的目錄中
- 當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它將所給的源文件或目錄重命名為給定的目標文件名
- 當第二個參數是已經存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將各參數指定的源文件移到目標文件中
- 當第二個參數既有目錄又有文件名,那就是剪切并重命名
總結:所有的mv指令都可以看作是剪切,就看第二個參數有沒有帶新的文件名,帶了就會重命名
常用選項:
??????? -f:是force的縮寫,強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
??????? -i:若目標文件已經存在時,就會詢問是否覆蓋2.18 時間相關指令
date顯示
date 指定格式顯示時間:date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]1.在顯示方面,使用者可以設定欲顯示的格式,格式設定為一個加號后接數個標記,其中常用的標記列表如下:
??????? %H:小時
??????? %M:分鐘
??????? %S:秒
??????? %X:相當于%H:%M:%S
??????? %d:日
??????? %m:月份
??????? %Y:完整年份
??????? %F:相當于%Y-%m-%d
2.在設定時間方面
??????? date -s:設置當前時間,只有root權限才能設置,其他只能查看
??????? date -s 20080523:設置成20080523,這樣會把具體時間設置成空00:00:00
??????? date -s 01:01:01:設置具體時間,不會對日期做更改
??????? date -s “01:01:01 2008-05-23″:這樣可以設置全部時間
??????? date -s “01:01:01 20080523″:這樣可以設置全部時間
??????? date -s “2008-05-23 01:01:01″:這樣可以設置全部時間
??????? date -s “20080523 01:01:01″:這樣可以設置全部時間
3.時間戳
?Unix時間戳是從1970年1月1日開始所經過的秒數,不考慮閏秒
??????? 時間->時間戳:date +%s
??????? 時間戳->時間:`date -d@<時間戳>2.19 cal指令
Cal指令可以用來顯示公歷(陽歷)日歷。公歷是現在國際通用的歷法,又稱格列日,統稱陽歷
命令格式:cal [參數][月份][年份]
功能:用于查看日歷等時間信息,如只有一個參數,則表示年份,如有兩個參數,則表示月份和年份
常用選項:
??????? -3:顯示系統前一個月,當前月,下一個月的月歷
??????? -j:顯示在當前年中的第幾天(一年日期按天算,從1月1日算起,默認顯示當前月在一年中的天數)
??????? -y:顯示當前年份的日歷2.20 find指令(非常重要)
- Linux下find命令在目錄結構中搜索文件,并執行指定的操作
- Linux下find命令提供了相當多的查找條件,功能很強大
- 即使系統中含有網絡文件系統(NFS),find命令在該文件系統中同樣有效,只要你有相應的權限
- 在運行一個非常消耗資源的find命令時,經常把它放在后臺執行,因為遍歷一個大的文件系統可能會花費很長的時間(這里是指30G字節以上的文件系統)
- 普通用戶只能在自己的家目錄隨意查找
語法:find pathname(路徑) -options
功能:用于在文件樹中查找,并作出相應的處理(可能訪問磁盤)
常用選項:
??????? -name:按照文件名查找文件。
示例:
??????? find ~ -name test.c:查找家目錄下所有文件名時test.c的文件。
注意:要區分find、which、whereis。其中which是查看一條指令所對應的路徑;whereis是在系統特定的路徑下進行查找,既可以找到可執行程序,又可以找到手冊、安裝包、壓縮包、C語言頭文件、動態庫等等2.21 grep指令
語法:grep [選項] 搜尋字符串 文件(可以跟多個)
功能:在文件中搜索字符串,將找到的行打印出來(行文本過濾工具)
常用選項:
??????? -i:忽略大小寫的不同,所以大小寫視為相同
??????? -n:順便輸出行號
??????? -v:反向選擇,即顯示不包含搜尋字符串的那一行
示例:
??????? grep ‘999’ test.txt:顯示出test.txt中包含’999’的所有行
??????? grep -v ‘999’ test.txt :顯示出test.txt中不包含’999’的所有行
??????? cat log.txt | grep ‘word’:和管道搭配使用,后面就不需要在跟文件名了2.22 zip/unzip指令
能被打包壓縮的一定是一個整體,由多個文件變成一個文件,不容易造成文件的缺失,打包壓縮會讓體積變小,下載時間變短,存儲占據空間變小
語法:zip 壓縮文件.zip 目錄或文件
功能:將目錄或文件壓縮成zip格式
常用選項:
??????? -r:遞歸處理,將指定目錄下的所有文件和子目錄一并處理
??????? -d:將壓縮包解壓到指定目錄下
示例:
??????? zip -r test.zip test2:將test2目錄進行壓縮
??????? unzip test2.zip:把壓縮包test2解壓
??????? zip -r d1.zip d1 log.txt:把d1目錄和log.txt普通文件,一同打包壓縮,得到一個d1.zip的壓縮包
??????? unzip d1.zip -d test:把d1.zip這個壓縮包解壓到test目錄下2.23 tar指令(重要)
語法:tar [選項] 文件與目錄(可多個)
常用選項:
??????? -c:建立一個壓縮文件的參數指令(creat的意思)
??????? -x:解開一個壓縮文件的參數指令
??????? -t:查看tarfile里面的文件
??????? -z:是否同時具有gzip的屬性?即是否需要用gzip壓縮
??????? -j:是否同時具有 bzip2 的屬性?即是否需要用 bzip2 壓縮
??????? -v:壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!
??????? -f:使用檔名,請留意,在 f 之后要立即接檔名喔!不要再加參數!
??????? -C:解壓到指定目錄
示例:
??????? tar -czf test.tgz d1 log.txt:把d1目錄和log.txt文件壓縮得到一個test.tgz的壓縮包
??????? tar -tzf test.tgz:不解壓,直接查看test.tgz壓縮包里面的內容
??????? tar -xzf test.tgz:把test.tgz進行解壓
??????? tar -xzf test.tgz -C …/:把test.tgz解壓到上級目錄
??????? test.tgz的全稱是:test.tar.gz。其中tar表示打包后綴,gz表示壓縮后綴2.24 bc指令
Linux下的計算器
示例:
echo ‘1+2+3+4+5’ | bc:配合管道使用,把1+2+3+4+5的結果顯示到屏幕上2.25 與系統相關的指令
uname指令
語法:uname [選項]
功能:uname用來獲取電腦和操作系統的相關信息
補充說明:uname可顯示Linux主機所用的操作系統的版本、硬件的名稱等基本信息
常用選項:
??????? -a,-all:詳細輸出所有信息,依次為內核名稱、主機名、內核版本號、內核版本、硬件名、處理器類型,硬件平臺類型,操作系統名稱free指令:查系統內存
df -h:查磁盤
lscpu:查看cpu
lsmem:查看內存
三、Linux中幾個重要的熱鍵
- [Tab]按鍵:具有命令補全和檔案補齊的功能
- [Ctrl]-c按鍵:讓當前的程序停掉
- [Ctrl]-d按鍵:通常代表鍵盤輸入結束的意思;此外它也可以用來取代exit
- [Ctrl]-r按鍵:歷史命令搜索(也可以用history命令進行搜索)