目錄
- 一、linux簡介
- 1)linux的特殊程式----Shell
- 2)linux命令的分類
- 3)linux命令列格式
- 4)編輯linux命令列的輔助操作
- 5)命令幫助
- 二、命令
- 1)查看用戶當前的作業目錄------pwd
- 2)切換作業目錄-------cd
- 3)串列顯示目錄內容-----ls
- 4)設定別名-----alias
- 5)統計指定目錄(或檔案)所占用磁盤空間的大小------du
- 6)創建新的空目錄-----mkdir
- 7)創建空檔案-----touch
- 8)創建鏈接檔案-----ln
- 9)復制檔案或目錄-------cp
- 10)洗掉檔案或目錄-----rm
- 11)移動檔案或目錄-----mv
- 12)查找命令檔案存放目錄----which
- 13)查找檔案或目錄----find
一、linux簡介
1)linux的特殊程式----Shell
- shell是linux系統中運行的一種特殊程式
- 在用戶和內核之間充當“翻譯官”,將輸入的命令轉換成計算機語言(二進制)
- shell會在用戶登錄linux系統的時候,自動加載
- shell程式在linux系統中默認使用Bash,bash檔案位于/bin/bash

2)linux命令的分類
linux命令分為內部命令和外部命令
| 內部命令 | 外部命令 |
|---|---|
| 集成于shell解釋器程式內部的一些特殊指令,也稱為內建(Built-in)指令 | linux系統中能夠完成指定功能的腳本檔案或二進制程式 |
| 屬于Shell的一部分 | 屬于Shell解釋器程式以外的命令 |
| 沒有單獨對應的系統檔案 | 每個外部命令對應了系統中的一個檔案 |
| 自動載入記憶體,可直接使用 | 必須知道對應的檔案位置,由Shell加載后才能執行/bin,/usr/bin等 |
3)linux命令列格式
命令字 + [選項] + [引數]------(輸入命令時,注意英文字符的大小寫)
命令字(操作的命令)
- 使整條命令中最關鍵的一部分
- 唯一確定一條命令
選項(命令的功能)
- 短格式選項:使用“-”符號引導----(多個單字符選項可以組合在一起使用)
- 長格式選項:使用“–”符號引導
引數(要執行的物件)
- 命令字的處理物件
- 可以是檔案名、目錄(路徑)名或用戶名等內容
- 個數可以是零到多個
4)編輯linux命令列的輔助操作
| 按鍵 | 作用 |
|---|---|
| Tab鍵 | 自動補齊 |
| 反斜杠“\” | 強制換行 |
| Ctrl+U組合鍵 | 清空至行首 |
| Ctrl+K組合鍵 | 清空至行尾 |
| Ctrl+L組合鍵 | 清屏 |
| Ctrl+C組合鍵 | 取消本次命令編輯 |
| Ctrl+a組合鍵 | 切換到行首 |
| Ctrl+e組合鍵 | 切換到行尾 |
5)命令幫助
- 內部命令 help
查看Shell內部命令的幫助資訊

- 命令的“–help”選項

- 使用man(manual的縮寫)命令閱讀手冊頁
使用“↑”、“↓”(ENTER)方向鍵滾動一行文本
使用Page Up和Page Down(空格)鍵翻頁
按Q或q鍵退出閱讀環境
按“/”鍵查找內容,n鍵向下查找,N鍵向上查找


二、命令
1)查看用戶當前的作業目錄------pwd

2)切換作業目錄-------cd
| 格式 | 說明 |
|---|---|
| cd +目標位置 | 切換到目標位置 |
| cd ~或cd | 若不指定目標位置,切換到當前用戶的宿主目錄 |
| cd - | 切換到上一次執行cd命令之前所在的目錄 |

絕對路徑:是以“/”為起點
相對路徑:是以當前位置為起點
相對路徑的表現形式
| 表現形式 | 說明 | 示例 |
|---|---|---|
| 直接使用目錄名或檔案名 | 表示當前作業目錄中的子目錄、檔案的位置 | grub.conf |
| 以一個點號“.”開頭 | 表示以當前的作業目錄作為起點 | ./grub.conf |
| 以兩個點號“…”開頭 | 表示以當前目錄的上一級目錄(父目錄)作為起點 | ./vmlinuz |
| 以“~用戶名”形式開頭 | 表示以指定用戶的宿主目錄作為起點 | ~teacher |
| 以“~”形式開頭 | 表示以當前用戶的宿主目錄作為起點 | ~ |
3)串列顯示目錄內容-----ls
顯示目錄中內容,包括子目錄和檔案相關屬性資訊
ls +[選項] +[檔案或目錄.…]
-
結合通配符
“?”:代表任意一個字符,且至少1個
“*”:代表任意數個字符,可以是0個或者1個或者多個
“[ ]”:表示可以匹配字符組中的任意一個字符
[abc]、[a-f]

-
ls的常用選項
| 命令 | 作用 |
|---|---|
| -l | 以長格式(Long) 顯示檔案和目錄的串列,包括權限、大小、最后更新時間等詳細資訊,ll命令與ls -l功能相同 |
| -a | 顯示所有(All)子目錄和檔案的資訊,包括名稱以點號“."開頭的隱藏目錄和隱藏檔案, |
| -A | 與-a選項的作用基本類似,但有兩個特殊隱藏目錄不會顯示,即表示當前目錄的“.”和表示父目錄的“…" |
| -d | 顯示目錄(Directory) 本身的屬性,而不是顯示目錄中的內容, |
| -h | 以更人性化(Human) 的方式顯示目錄或檔案的大小,默認的大小單位為位元組(B),使用-h選項后將顯示為KB、MB等單位,此選項需要結合-l選項一起使用, |
| -R | 以遞回(Recursive) 的方式顯示指定目錄及其子目錄中的所有內容, |
| - -color | 在字符模式中以顏色區分不同的檔案,默認已開啟,(通常情況下,深藍色表示目錄,白色表示一般檔案, 綠色表示可執行的檔案,黃色表示設備檔案,紅色表示壓縮檔案,淡藍色是檔案快捷方式,) |
| -i | 顯示檔案和目錄的inode號, |
ls -l

ls -a

ls -A

ls -d和配置-l使用(ls -d -l省略為ls -dl)

ls -h

ls -h和-l 配合

ls -R

ls - -color默認開啟,不用打了

ls -i

用ls -l命令查看某一個目錄會得到一個7個欄位的串列

- 第1欄位:檔案屬性字
第一個字符代表檔案的型別:
"_"表示該檔案是一個普通檔案
"d”表示該檔案是一個目錄
"1"表示該檔案是一個軟鏈接檔案,類似于windows下的快捷方式
第1字符的后面9個字母表示該檔案或目錄的權限位:
r表是讀(查看、下載)、w表示寫(添加、更改、洗掉、上傳)、x表示執行(運行檔案、切換目錄)
其中前三個表示檔案擁有者(屬主)的權限,中間三個表示檔案所屬組擁有的權限,最后三個表示其他用戶擁有的權限, - 第2欄位:檔案硬鏈接數
如果一個檔案不是目錄,此時這一欄位表示這個檔案所具有的硬鏈接數
如果是一個目錄,則第2欄位表示該目錄所含子目錄的個數,
如果新建一個空目錄,這個目錄的第二欄位就是2,表示該目錄下有兩個子目錄 - 第3欄位:檔案\目錄擁有者
- 第4欄位:檔案\目錄擁有者所在的組
- 第5欄位:檔案所占用的空間(默認以位元組為單位)
如果是一個目錄,則表示該目錄的大小,而不是目錄以及它下面的檔案的總大小,
Linux系統中一切皆檔案,因此目錄也是一種檔案, - 第6欄位:檔案\目錄最近訪問或修改時間
- 第7欄位:檔案名
如果是一個符號鏈接(軟鏈接檔案),那么會有一個“->”箭頭符號,后面根一個它指向的檔案名
4)設定別名-----alias
通過別名機制簡化常用的、比較長的命令
alias + 命令別名=‘命令’ (“=”兩邊不能有空格)
例如alias viens=‘vim /etc/sysconfig/network-scripts/ifcfg-ens33’
輸完上面的命令后,每次改ens33網卡配置的時候就可以直接輸入viens

用type查詢可以看到整個命令

如果不想使用了,要取消別名就需要unalias,別名取消后,用type也找不到了
unalias 命令別名

5)統計指定目錄(或檔案)所占用磁盤空間的大小------du
du+[選項] +[檔案或目錄…]
常用選項
| 選項 | 說明 |
|---|---|
| -a | 統計所有檔案和目錄(包括本目錄)占用的磁盤空間 |
| -h | 以更人性化的方式(默認以KB計數,但不顯示單位)顯示出統計結果 |
| -s | 只統計占用空間的大小,而不是統計每個子目錄、檔案的大小 |
| - -max-depth=n | 統計所有小于等于第n層的目錄的總大小 |
在上面的命令中“-(中間沒有空格)-”,選項-a和-s不可以同時使用
du -a顯示的東西非常多,這里就沒有截圖
du -s 和du -s -h的比較

du - -max-depth=1當前目錄下的子目錄


du -h --max-depth=1 /home/ 統計出/home目錄中子目錄的大小

6)創建新的空目錄-----mkdir
mkdir+ [選項] +目錄位置及名稱
| 選項 | 說明 |
|---|---|
| -p | 一次性創建嵌套的多層目錄 |
示例:
建立名為bb的子目錄

創建目錄/aa,在/aa目錄下創建子目錄bb,在/aa/bb目錄下創建子目錄cc

7)創建空檔案-----touch
更新檔案的時間標記
- 創建多個新的空檔案
touch +檔案
示例


在“{}”里可以輸入空字符,在串列里會顯示空字符的檔案

8)創建鏈接檔案-----ln
為檔案或目錄建立鏈接檔案,類似于windows系統的快捷方式
- 鏈接檔案分為軟鏈接(符號鏈接)和硬鏈接
ln +[-s](創建軟鏈接需要-s,硬鏈接不需要) + 源檔案或目錄 +鏈接檔案或目標位置
在創建鏈接檔案時,源檔案要用絕對路徑表示(如圖aaa檔案),不然移動鏈接檔案后會導致鏈接檔案失效(如圖中bb.txt檔案)

下圖為軟鏈接和硬鏈接的示意圖,由圖可以看出兩者的區別
在linux中,檔案名和檔案的資料是分開存盤的
而且只有檔案的硬鏈接數==0的時候才會被洗掉

| 檔案型別 | 軟鏈接檔案 | 硬鏈接檔案 |
|---|---|---|
| 洗掉源檔案后 | 失效 | 仍然可用(檔案占用空間與源檔案相同) |
| 使用范圍 | 適用于檔案和目錄 | 僅適用于檔案 |
| 保存位置 | 與源檔案可以在不同的檔案系統中 | 必須與源檔案在同一個檔案系統中(即同一個磁區) |
| 與源檔案的關系 | 相當于快捷方式 | 相當于給檔案起個別名 |
| inode號碼 | inode號碼不同 | inode號碼相同 |
當一個檔案擁有多個硬鏈接時,對檔案內容修改,會影響到所有檔案名;但是洗掉一個檔案名,不影響別的檔案名的訪問,洗掉一個檔案名,只會使得"硬鏈接數"減1,
需要注意的是不能對目錄做硬鏈接,在日常作業中幾乎不會建立檔案的硬鏈接,
9)復制檔案或目錄-------cp
將需要復制的檔案或目錄(源)重建一份,并保存為新的檔案或目錄
cp +[選項]+源檔案或目錄+目標檔案或目錄
| 選項 | 說明 |
|---|---|
| -f | 覆寫目標同名檔案或目錄時不進行提醒,直接強行復制 |
| -i | 覆寫目標同名檔案或目錄時提醒用戶確定 |
| -p | 復制時保持源檔案的權限、屬主及時間標記等屬性不變 |
| -r | 復制目錄時必須使用,表示遞回復制所有檔案及子目錄 |
注:復制多個檔案或目錄時,目標位置必須為目錄,且目標目錄必須已存在
-f復制時,復制在同一目錄時只會提醒時同一檔案,不會覆寫,

-i復制會提示用戶確認

這里用-p復制,可以看到時間標記都復制了

這里的aa是一個目錄,我先用其他的命令,如圖可以看出不用-r無法復制目錄

這里我輸入了一個沒有的目錄作為目的地址,可以發現無法復制

10)洗掉檔案或目錄-----rm
rm+[選項]+要洗掉的檔案或目錄
| 選項 | 說明 |
|---|---|
| -f | 洗掉檔案或目錄時不進行提醒,而直接強行洗掉 |
| -i | 洗掉檔案或目錄時提醒用戶確定(y確定洗掉,n不洗掉) |
| -r | 洗掉目錄時必須使用次選項,表示遞回洗掉整個目錄數(謹慎使用) |
注:不要直接洗掉系統中已有的目錄或組態檔,以避免出現意外故障;洗掉目錄下檔案時建議最好先切換到目錄下在執行
這里洗掉了12 和11,都可以洗掉,而這個目錄里沒有11這個檔案,也沒有報錯

直接用rm和rm -i的效果一樣,這個選項不常用

我事先建好了aa和bb目錄,里面由相同的檔案和目錄,用rm直接刪不掉,必須要加上-r,單獨使用-r需要逐個確認子目錄里的檔案是否洗掉,比較麻煩,特別是檔案多的時候,所以這時候就需要和-f組合使用,
rm -rf bb

11)移動檔案或目錄-----mv
- 將指定的檔案或目錄轉移位置
- 如果目標位置與源位置相同,則相當于執行重命名操作
mv +[選項]+ 源檔案或目錄+目標檔案或目錄

補充:mv命令只能對單個檔案重命名,可以使用rename命令批量修改檔案名
rename +舊字符+新字符+目標檔案
這里我將txt檔案都改成了jpg格式的檔案,檔案名包含23的將23改成了09

12)查找命令檔案存放目錄----which
- 搜索范圍由環境變數PATH決定(echo $PATH)
which+命令|程式名----------默認當找到第一個目標后不再繼續查找
which -a +命令|程式名-----------在所有搜索路徑中查找
如圖:history是內部命令,所以用which找不到對應的程式,內部命令沒有單獨的檔案;which可以查外部命令的檔案存放目錄,入ls

13)查找檔案或目錄----find
- 采用遞回方式,根據目標的名稱、型別、大小等不同屬性進行精細查找
find + [查找范圍,檔案或子目錄的目錄位置]+[查找條件運算式,條件型別]
| 查找型別 | 關鍵字 | 說明 |
|---|---|---|
| 按名稱查找 | -name | 根據目標檔案的名稱進行查找,允許使用“*”和“?”通配符 |
| 按檔案大小查找 | -size | 根據目標檔案的大小進行查找 一般使用“+”、“-”號設定超過或小于指定大小作為查找條件 常用的容量單位包括kB(注意k是小寫)、MB、GB |
| 按檔案屬主查找 | -user | 根據檔案是否屬于目標用戶進行查找 |
| 按檔案型別查找 | -type | 根據檔案型別進行查找 檔案型別包括普通檔案(f)、目錄(d)、塊設備檔案(b)、字符設備檔案(c)等 塊設備檔案(b):成塊讀取資料的設備(硬體,記憶體,光驅) 字符設備檔案(c):按單個字符讀取資料的設備(鍵盤,滑鼠) |
find命令也可以實作多個查找
- 各運算式之間邏輯運算子
“-a”表示而且(and)
“-o”表示或者(or)
尋找小于1024k且以a開頭的檔案或目錄

查詢大于1024k或名字為aa的檔案或目錄

- find中的-exec的用法
-exec引數后面跟的是Linux命令,它是以分號“;”為結束標志,由于各個系統中分號會有不同的意義,因此在分號前面加上反斜杠轉義符“\”,
{}代表前面find查找出來的檔案名
find ./ -name “*.txt” -exec rm {} ;
在當前目錄下(包含子目錄),洗掉所有txt檔案
find ./ -type f -exec ls -l {} ;
find命令匹配到了當前目錄下的所有普通檔案,并在-exec選項中使用ls -l命令將它們列出

補充:命令執行的優先級
- 第一優先級:指定路徑的命令,
絕對路徑 /root/pwd.sh 或者相對路徑 ./pwd.sh - 第二優先級:別名指定的命令
alias pwd=/root/pwd.sh - 第三優先級:內部命令
- 第四優先級: hash命令
linux系統下會有一個hash表,當你剛開機時這個hash表為空,每當你執行過一條命令時,hash表會記錄下這條命令的路徑,就相當于快取一樣,第一次執行命令shell解釋器默認的會從PATH路徑下尋找該命令的路徑,當你第二次使用該命令時,shell解釋器首先會查看hash表,沒有該命令才會去PATH路徑下尋找,hash表能提高命令的呼叫速率, - 第五優先級:通過PATH定義的查找順序查找
如果以上順序都找不到,就會報"未找到命令…"的錯誤,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224882.html
標籤:其他
