在上一章對Linux有了一些基礎了解之后,本章我們來學習一下Linux系統下一些基本操作的常用的基礎指令。
目錄
1.?ls 指令
2. pwd&&whoami命令
3. cd 指令
4. touch指令
5.mkdir指令(重要):
6.rmdir指令 && rm?指令(重要):
?7.clear指令(常用)
8.alias指令
9.which指令
10.tree指令
11.man手冊查找指令(重要):
12.cp指令(重要):
12.mv指令(重要):
13.?cat指令
14.more指令
15.less指令(重要)
16.head指令
17.tail指令
18.時間相關的指令
?1.在時間顯示方面。
2.在設定時間方面?
3.時間戳
19.Cal指令
20.?nd指令:(灰常重要) -name
21.grep指令
22.zip/unzip指令:
23.tar指令(重要):
24.bc指令:
25.uname?–r指令:
26.echo指令
27.重要的幾個熱鍵[Tab],[ctrl]-c, [ctrl]-d
28.關機
29.以下命令作為擴展:
1.?ls 指令
語法: ls?[選項] [目錄或文件]
功能:對于目錄,該命令列出該目錄下的所有子目錄與文件。對于文件,將列出文件名以及其他信息。
常用選項:
? ?-a? :列出目錄下的所有文件,包括以 . 開頭的隱含文件。
???-d? :將目錄象文件一樣顯示,而不是顯示其下的文件。???如:?ls –d 指定目錄
???-i? ?:輸出文件的 i 節點的索引信息。???如 ls –ai 指定文件
???-k? :以 k 字節的形式表示文件的大小。ls?–alk?指定文件
???-l? ?:列出文件的詳細信息。(可以縮寫為 ll )
???-n? :用數字的?UID,GID 代替名稱。 ????(介紹?UID?, GID)
? ?-F? :在每個文件名后附上一個字符以說明該文件的類型, ?“*”表示可執行的普通文件;??“/”表示目錄;??“@”表?示符號鏈接; ?“|”表示FIFOs;“=”表示套接字(sockets)。(目錄類型識別)
???-r? ?:對目錄反向排序。
???-t? ?:以時間排序。
???-s? :在l文件名后輸出該文件的大小。(大小排序,如何找到目錄下最大的文件)
? ?-R? :列出所有子目錄下的文件。 ??(遞歸)
???-1? ?:一行只輸出一個文件。
舉例:
ls -l (可以縮寫為ll)
ls -la (選項可以合并)
注:
(1)路徑具有唯一性
(2)在Linux中,以 .?開頭的文件為隱藏文件,在任何目錄下都會有兩個隱藏文件 .?和 ..?
.? 文件表示當前路徑
..?文件表示上級路徑
這兩個存在的意義是為了方便我們找到當前目錄下的文件和回退。
(3)* 通配符
可以匹配*后帶此特征的文件名。
2. pwd&&whoami命令
無
無
3. cd 指令
Linux系統中,磁盤上的文件和目錄被組成一棵目錄樹,每個節點都是目錄或文件。
語法:? ?cd?[目錄名]
功能:改變工作目錄。將當前工作目錄改變到指定的目錄下。
常用選項:
-? ? ? :跳轉到我們最近一次所處的路徑下。
~? ? ?:進入用戶的家目錄。
..? ? ?:? ?返回上級目錄。
舉例:
cd?..? ? ? ? ? ? ? ? ? ? ?:?返回上級目錄cd?/home/litao/linux/? : 絕對路徑cd?../day02/? ? ? ? ? ? ? : 相對路徑
4. touch指令
功能:touch命令參數可更改文檔或目錄的日期時間?,包括存取時間和更改時間?,或者新建一個不存在的文件。
常用選項:
???-a ? 或--time=atime或--time=access或--time=use? ?:只更改存取時間。?
???-c? ?或--no-create? ? :不建立任何文檔。
???-d? ? :使用指定的日期時間?,而非現在的時間。
???-f ? ? :此參數將忽略不予處理?,僅負責解決BSD版本touch指令的兼容性問題。?
???-m? 或--time=mtime或--time=modify? ?:?只更改變動時間。
? ?-r ? ?:把指定文檔或目錄的日期時間?,統統設成和參考文檔或目錄的日期時間相同。
???-t? ? :使用指定的日期時間?,而非現在的時間。
舉例:
touch file.txt :建立一個名為file的txt文件
5.mkdir指令(重要):
語法:?mkdir?[選項] [dirname]...
功能:在當前目錄下創建一個名為 “dirname”的目錄?
常用選項:
-p? 或? --parents? :可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,?系統將自動建立?好那些尚不存在的目錄,即一次可以建立多個目錄;
舉例:
mkdir?–p?test/test1? : 遞歸建立多個目錄。
6.rmdir指令 && rm?指令(重要):
(1)rmdir是一個與mkdir相對應的命令。?mkdir是建立目錄?,而rmdir是刪除命令。?
語法:?rmdir?[-p] [dirName]
適用對象:具有當前目錄操作權限的所有使用者
功能:刪除空目錄
常用選項:
-p? :當子目錄被刪除后如果父目錄也變成空目錄的話?,就連帶父目錄一起刪除。
(2)rm命令可以同時刪除文件或目錄?
語法:?rm?[-f-i-r-v] [dirName/dir]?
適用對象:所有使用者
功能:刪除文件或目錄
常用選項:
-f? :即使文件屬性為只讀(即寫保護),亦直接刪除。
-i? :刪除前逐一詢問確認。
-r? :刪除目錄及其下所有文件。
?7.clear指令(常用)
語法?:clear
功能: 清除顯示器上的內容。
常用選項:
無
8.alias指令
語法?:alias [重定義指令名]=‘需要重定義指令’
功能:?給其他命令取個別名。
常用選項:
無
案例:
注:
本命令盡量少用,用多有分不清命令的風險。
9.which指令
語法?:which?
功能:?用于查找并顯示指定命令的絕對路徑。
常用選項:
無
案例:
10.tree指令
語法?:tree [目錄名]?
功能:?以樹狀形式顯示目錄結構。
常用選項:
無
案例:
注:本指令可能初始linux系統沒有自帶,可以通過以下指令安裝。
yum install -y tree
11.man手冊查找指令(重要):
Linux的命令有很多參數,我們不可能全記住,我們可以通過查看聯機手冊獲取幫助。訪問Linux手冊頁的命令是man? 。
語法: man?[選項] 命令
常用選項:
-k? ? ? 根據關鍵字搜索聯機幫助num 只在第 num 章節找-a? ? ? 將所有章節的都顯示出來,比如 man printf 它缺省從第一章開始搜索,知道就停止,用? ? ? ? ?? a 選項,當按下q 退出,他會繼續往后面搜索,直到所有章節都搜索完畢。
man手冊分為8章:????????1.?是普通的命令。
????????2.?是系統調用,如open,write之類的。(通過這個,至少可以很方便的查到調用這個函數,需要加什么頭文?件)
????????3.?是庫函數,如printf,fread4是特殊文件,也就是/dev下的各種設備文件。
????????5.?是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義。
????????6.?是給游戲留的,由各個游戲自己定義。
????????7.?是附件還有一些變量,比如向environ這種全局變量在這里就有說明。
????????8.?是系統管理用的命令,這些命令只能由root使用,如ifcon?g。
12.cp指令(重要):
語法:cp?[選項] [源文件或目錄]?[目標文件或目錄]
功能:復制文件或目錄。
說明:cp指令用于復制文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄復制到此目錄中。若同時指定多個文件或目錄,而最后的目的地并非一個已存在的目錄,則會出現錯誤信息。
常用選項:
???-f 或--force? ? ? ? ? ?:強行復制文件或目錄, ??不論目的文件或目錄是否已經存在。
???-i 或 --interactive? :覆蓋文件之前先詢問用戶。
???-r? ? ? ? ? ? ? ? ? ? ? ? ? :遞歸處理,將指定目錄下的文件與子目錄一并處理。若源文件或目錄? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?的形態,不屬于目錄或符號鏈接,則一律視為普通文件處理。
??-R 或 --recursive? ?:遞歸處理,將指定目錄下的文件及子目錄一并處理。
注:
(1)Linux系統中,同一個目錄下不允許存在同名文件
(2)拷貝可以攜帶相對或絕對路徑進行拷貝。
12.mv指令(重要):
mv命令是move的縮寫,可以用來移動文件或者將文件改名(?move?(rename) ?les),是Linux系統下常用的命?令,經常用來備份文件或者目錄。(相當于剪切)
語法:?mv?[選項] [源文件或目錄]?[目標文件或目錄]
功能:
1. 視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),??mv命令將文件重命名或將其移至一個新的目錄中。
2. 當第二個參數類型是文件時,??mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它 將所給的源文件或目錄重命名為給定的目標文件名。
3. 當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,??mv命令將各參數指定的源文件均移至目標目錄中。
常用選項:
???-f :force?強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
???-i?:若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
舉例:
將rm改造成mvvim ~/.bashrc #修改這個文件mkdir -p ~/.trashalias rm=trashalias ur=undelfileundelfile() {mv -i ~/.trash/\$@ ./
}trash() {mv $@ ~/.trash/
}
注:
(1)可以使用類似于以下的命令在移動文件的同時進行對文件的改名。
13.?cat指令
語法?:cat?[選項][文件]
功能: 查看目標文件的內容
常用選項:
???-b?:對非空輸出行編號
???-n?:對輸出的所有行編號
???-s?:不輸出多行空行
14.more指令
語法:?more?[選項][文件]
功能:?more命令,功能類似 cat
常用選項:
??-n? :對輸出的所有行編號
???q? :退出more
舉例:
[atong@LiWenTong ~]$ ls -l / | moretotal 162
drwxr-xr-x 2 root root 4096 Apr 25 05:39 bin
drwxr-xr-x 4 root root 1024 Apr 25 04:11boot
drwxr-xr-x 9 root root 3820 May 4 23:20 dev
drwxr-xr-x 84 root root 4096 May 5 00:37 etc
(1)|?符號的作用類似于分流的管道,意義是在實現前面命令的同時分流實現后面的命令。
15.less指令(重要)
?less與more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向后移動,而且 less 在查看之前,不會加載整個文件。
-i? ? : 忽略搜索時的大小寫-N? : 顯示每行的行號/? ? ?: 字符串:向下搜索 “ 字符串 ” 的功能?? ? : 字符串:向上搜索 “ 字符串 ” 的功能n? ? : 重復前一個搜索(與 ?/? 或 ??? 有關)N? ?: 反向重復前一個搜索(與 ?/? 或 ??? 有關)q? ?:quit
16.head指令
?
?
head 用來顯示檔案的開頭至標準輸出中,默認head命令打印其相應文件的開頭10行。
-n <行數>? :顯示的行數
17.tail指令
?-f?? ? ? ? ? ? ? :循環讀取
?-n<行數>? ?:顯示行數
舉例:
題:有一個文件共有100行內容,請取出第50行內容<br>seq 1 100 > test? ? ? ? ? ? //?生成1到100的序列裝入test方法1:? head -n50 test > tmp? ? //將前50行裝入臨時文件tmp? tail -n1 tmp? ? ? ? ? ? ? ? ? ?//得到中建行方法2:?? head -n50 test | tail -n1
?
注:
(1)管道?(|):
-
|
:這個符號用于將一個命令的輸出作為另一個命令的輸入。它允許用戶將多個命令連接在一起,形成一個命令鏈。
ls | grep "file"
上述命令會列出當前目錄中的所有文件和目錄,并通過grep
命令過濾出包含"file"的行。
(2)在Linux中,重定向符號是用于改變輸入和輸出流的方向的符號。它們允許用戶將命令的輸出或輸入重定向到文件或其他命令,而不是默認的標準輸出(通常是終端或屏幕)或標準輸入(通常是鍵盤)。
????????1.輸出重定向?(>?和?>>
):
-
>
:這個符號用于將命令的輸出覆蓋到指定的文件中。如果文件不存在,它會被創建;如果文件已存在,它的內容會被清空并被新內容替代。echo "Hello" > file.txt
上述命令會將字符串"Hello"寫入
file.txt
,如果file.txt
已存在,它的內容會被這個字符串替代。 -
>>
:這個符號用于將命令的輸出追加到指定的文件的末尾。如果文件不存在,它會被創建;如果文件已存在,新內容會被添加到文件的末尾,而不會覆蓋原有內容。echo "World" >> file.txt
2.輸入重定向?(
<
): -
<
:這個符號用于將命令的輸入重定向到指定的文件。這意味著命令會從文件中讀取數據,而不是從標準輸入(通常是鍵盤)讀取。cat < file.txt
上述命令會讀取
file.txt
的內容,并將其作為cat
命令的輸入。
18.時間相關的指令
date 指定格式顯示時間: date +%Y:%m:%d
date 用法: date [OPTION]... [+FORMAT]
?1.在時間顯示方面。
%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
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.時間戳
時間->時間戳: date +%s
時間戳->時間: date -d@1508749502
Unix時間戳(英文為Unix epoch, Unix time, POSIX time 或 Unix timestamp)是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。
19.Cal指令
cal命令可以用來顯示公歷(陽歷)日歷。公歷是現在國際通用的歷法,又稱格列歷,通稱陽歷。 “陽歷”又名“太陽歷”,系以地球繞行太陽一周為一年,為西方各國所通用,故又名“西歷”。
-3? ? : 顯示系統前一個月,當前月,下一個月的月歷-j?? ? : 顯示在當年中的第幾天(一年日期按天算,從 1 月 1 號算起,默認顯示當前月在一年中? ? ? ? ? ?的天數)-y? ? : 顯示當前年份的日歷
Cal –y 2018
20.?nd指令:(灰常重要) -name
-name? ?: 按照文件名查找文件。
21.grep指令
?
-i? ? :忽略大小寫的不同,所以大小寫視為相同-n?? :順便輸出行號-v?? :反向選擇,亦即顯示出沒有 ' 搜尋字符串 ' 內容的那一行
22.zip/unzip指令:
-r? ?: 遞歸處理,將指定目錄下的所有文件和子目錄一并處理
將test2目錄壓縮:? zip test2.zip test2/*解壓到tmp目錄:?? unzip test2.zip -d /tmp
23.tar指令(重要):
-c? ?? :建立一個壓縮文件的參數指令 (create? 的意思 ) ;-x? ?? :解開一個壓縮文件的參數指令!-t? ?? :查看 ?tar?le? 里面的文件!-z? ?? :是否同時具有 ?gzip? 的屬性?亦即是否需要用 ?gzip? 壓縮?-j? ?? :是否同時具有 ?bzip2? 的屬性?亦即是否需要用 ?bzip2? 壓縮?-v? ?? :壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!-f? ?? :使用檔名,請留意,在 ?f? 之后要立即接檔名喔!不要再加參數!-C? ? :解壓到指定目錄
范例一:將整個 /etc 目錄下的文件全部打包成為 `/tmp/etc.tar`[root@linux ~]# tar -cvf /tmp/etc.tar /etc<== 僅打包,不壓縮![root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <== 打包后,以 gzip 壓縮[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <== 打包后,以 bzip2 壓縮特別注意,在參數 f 之后的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~上述指令在執行的時候,會顯示一個警告訊息:『 `tar: Removing leading `/" from member names` 』那是關於絕對路徑的特殊設定。
范例二:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件?[root@linux ~]# tar -ztvf /tmp/etc.tar.gz由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的文件時,就得要加上 z 這個參數了!這很重要的!
范例三:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下[root@linux ~]# cd /usr/local/src[root@linux src]# tar -zxvf /tmp/etc.tar.gz在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個范例來說,我先將工作目錄變換到 /usr/local/src 底下,并且解開 /tmp/etc.tar.gz ,則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不同喔!
范例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已 [root@linux ~]# cd /tmp[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd我可以透過 tar -ztvf 來查閱 tarfile 內的文件名稱,如果單只要一個文件,就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!
范例五:將 /etc/ 內的所有文件備份下來,并且保存其權限![root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc這個 -p 的屬性是很重要的,尤其是當您要保留原本文件的屬性時!
范例六:在 /home 當中,比 2005/06/01 新的文件才備份[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
范例七:我要備份 /home, /etc ,但不要 /home/dmtsai[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
范例八:將 /etc/ 打包后直接解開在 /tmp 底下,而不產生文件![root@linux ~]# cd /tmp[root@linux tmp]# tar -cvf - /etc | tar -xvf -這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~這分別代表 standard output, standard input 與管線命令啦!
24.bc指令:
bc命令可以很方便的進行浮點運算
25.uname?–r指令:
語法?:uname?[選項]
功能: uname用來獲取電腦和操作系統的相關信息。
補充說明?:uname可顯示linux主機所用的操作系統的版本、硬件的名稱等基本信息。?
常用選項:
-a或–all? ?:詳細輸出所有信息,依次為內核名稱,主機名,內核版本號,內核版本,硬件名,處理器類?型,硬件平臺類型,操作系統名稱
26.echo指令
-e? :
解釋由反斜線引導的轉義字符。
-n? :
不輸出尾隨的換行符。
案例:
echo "Hello, World!" > output.txt :將文本寫入到 output.txt 文件中
echo "Another line" >> output.txt :將另一行文本追加到 output.txt 文件中name="Alice"
echo "My name is $name" :輸出 "My name is Alice"echo "Hello, World!" :輸出文本 "Hello, World!"
echo -e "Line 1\nLine 2" : 輸出兩行文本,使用 \n 作為換行符
echo -n "Hello" :輸出 "Hello" 但不輸出換行符
27.重要的幾個熱鍵[Tab],[ctrl]-c, [ctrl]-d
? ?[Tab]按鍵---具有『命令補全』和『檔案補齊』的功能
???[Ctrl]-c按鍵---讓當前的程序『停掉』
???[Ctrl]-d按鍵---通常代表著:『鍵盤輸入結束(End?Of?File,?EOF?戒 End?OfInput)』的意思;另外,他也可?以用來取代exit
28.關機
語法?:shutdown?[選項] ** 常見選項:??**
?-h? ? ? ?: 將系統的服務停掉后,立即關機。
?-r? ? ? ??: 在將系統的服務停掉之后就重新啟動
?-t?sec?: -t 后面加秒數,亦即『過幾秒后關機』的意思
29.以下命令作為擴展:
◆ 安裝和登錄命令:?login、shutdown、?halt、?reboot、?install、?mount、?umount、chsh、exit、?last;
◆ 文件處理命令: ??le、?mkdir、grep、dd、?nd、?mv、?ls、di?、cat、?ln;
◆ 系統管理相關命令?:df、top、free、quota、at、?lp、adduser、groupadd、?kill、crontab;
◆ 網絡操作命令?:ifcon?g、?ip、?ping、?netstat、telnet、ftp、?route、?rlogin、?rcp、?nger、?mail、 nslookup;
◆ 系統安全相關命令: ?passwd、su、?umask、chgrp、chmod、chown、chattr、sudo?ps、who;
◆ 其它命令: ?tar、?unzip、gunzip、?unarj、?mtools、?man、?unendcode、?uudecode。
本篇結束!