目標
- 查看目錄內容
- 切換目錄
- 創建和刪除操作
- 拷貝和移動文件
- 查看文件內容
- 其他
01.查看目錄內容
1.1 終端使用技巧
自動補全
- 在敲出 文件/ 目錄 / 命令 的前幾個字母之後, 按下
tab
鍵
- 如果還存在其他 文件 / 目錄 / 命令, 再按一下tab鍵, 系統會提示可能存在的命令
曾經使用過的命令
- 使用
上
/ 下
光標鍵可以在曾經使用過的命令之間來回切換
- 如果想要退出選擇, 並且不想執行當前選中的命令, 可以按
ctrl + c
1.2 ls命令說明
ls
是英文單詞list的簡寫, 其功能爲列出目錄的內容,是用戶最常用的命令之一
- 因爲需要編輯服務器上的文件, 所以需要先確認指定目錄下 是否存在
linux 下文件和目錄的特點
- linux文件 或者 目錄 名稱最長可以
256
個字符
- 以
.
開頭的文件爲隱藏文件, 需要用 -a 參數才能顯示
.
代表當前目錄
..
代表上一級目錄
1.3 ls常用選項
如果 只使用ls命令 就只能看到當前目錄下 非隱藏 文件。
如果想增強功能,就需要學習更多的選項
選項 |
含義 |
-a |
顯示指定目錄下所有子目錄與文件, 包含隱藏文件 |
-l |
以列表方式顯示文件的詳細信息 |
-h |
配合 -l 以人性化的方式顯示文件大小 |
演練:
計算機中文件大小的表示方式(科普)
單溫 |
英文 |
含義 |
字節 |
B(byte) |
在計算機中作爲一個數字單元,一般爲8位二進制數 |
千 |
K(Kibibyte) |
1KB = 1024 B, 千字節( 1024 = 2的10次方) |
兆 |
M(Mebibyte) |
1MB = 1024 KB, 百萬字節 |
千兆 |
G(Gigabytee) |
1GB = 1024 MB, 十億字節, 千兆字節 |
太 |
T(Terabyte) |
1 TB = 1024 GB, 萬億字節, 太字節 |
拍 |
P(Petabyte) |
1 PB = 1024 PB, 百萬億字節, 拍字節 |
1.4 ls 和通配符的使用
準備工作
# 切換到臨時目錄
cd /usr/tmp
# 清空目錄內容
rm -rf *
# 創建文件
touch a23.txt 11.txt 111.txt 112.txt 123.txt 223.txt 323.txt 423.txt 523.txt
# 查看目錄內容
ls
通配符 |
含義 |
* |
代表 任意個數 的字符 |
? |
代表任意一個字符, 且只能是一個 |
演練:
1 查看以 1 開頭的文件或目錄
2 查看以 3.txt 結尾的 文件或目錄
3 查看含有3的文件列表
4 查看第二個字符是2的文件
[root@k8s-master tmp]# ls 1*.txt
111.txt 112.txt 11.txt 123.txt
[root@k8s-master tmp]# ls *3.txt
123.txt 223.txt 323.txt 423.txt 523.txt a23.txt
[root@k8s-master tmp]# ls *3*.txt
123.txt 223.txt 323.txt 423.txt 523.txt a23.txt
[root@k8s-master tmp]# ls ?2?.txt
123.txt 223.txt 323.txt 423.txt 523.txt a23.txt
[root@k8s-master tmp]#
通配符 |
含義 |
[abc] |
匹配a、b、c中任意一個 |
[a-f] |
匹配從a到f範圍內的任意一個字符 |
演練:
1 查看 第一個字符是 1到5, 以23.txt結尾 的 目錄或文件名
[root@k8s-master tmp]# ls [1-5]23.txt
123.txt 223.txt 323.txt 423.txt 523.txt
[root@k8s-master tmp]#
02.切換目錄
2.1 cd
-
cd 是英文單詞 change directory 的縮寫, 其功能爲 更改當前的工作目錄, 是用戶最常用的命令之一
注意: linux的所有 目錄 和 文件名 都是大小寫敏感的
命令 |
含義 |
cd 目錄 |
切換到指定目錄下 |
cd … |
切換到上級目錄 |
cd - |
可以在最近的兩次目錄之間切換 |
演練:
1 查看當前所在目錄
2 切換到 /usr/local
3 切換到 上一級目錄 /usr
4 後退到上一次訪問的目錄中
[root@k8s-master tmp]# pwd
/usr/tmp
[root@k8s-master tmp]# cd /usr/local
[root@k8s-master local]# cd ../
[root@k8s-master usr]# cd -
/usr/local
[root@k8s-master local]#
2.2 相對路徑和絕對路徑
2.2.1 目標 : 通過路徑找到目標
2.2.2 如何分步驟實現:
第一步: 使用相對路徑定位目標
第二步: 使用絕對路徑定位目標
2.2.3 第一步: 使用相對路徑定位目標
- 特徵: 相對路徑 輸入路徑時, 最前面不是以 “/” 開始的, 表示相對 當前目錄 所在的位置
- 缺點: 參照工作目錄 發生變化 相對路徑也要發生變化
演練:
當前工作目錄是 /usr, 使用相對路徑 切換到 /usr/tmp 目錄下
當前工作目錄是 /root, 使用相對路徑 切換到 /usr/tmp 目錄下
[root@k8s-master local]# clear
[root@k8s-master local]# cd /usr
[root@k8s-master usr]# cd tmp/
[root@k8s-master tmp]# cd /root
[root@k8s-master ~]# cd ../usr/tmp/
[root@k8s-master tmp]#
2.2.4 第二步: 使用絕對路徑定位目標
- 特徵: 絕對路徑 在輸入路徑時, 最前面是以
/
開始的, 表示 從 根目錄 開始的具體目錄位置
- 優點: 定位準確, 不會因爲 工作目錄變化 而變化
演練:
當前工作目錄是 /usr, 使用絕對路徑 切換到 /usr/tmp 目錄下
當前工作目錄是 /root, 使用絕對路徑 切換到 /usr/tmp 目錄下
[root@k8s-master tmp]# cd /usr
[root@k8s-master usr]# cd /usr/tmp/
[root@k8s-master tmp]# cd /root
[root@k8s-master ~]# cd /usr/tmp
[root@k8s-master tmp]#
2.2.5 小總結
- 相對路徑 在輸入路徑時, 最前面不是以
/
開始的 , 表示相對 當前目錄 所在的目錄位置
- 絕對路徑 在輸入路徑時, 最前面是以
/
開始的, 表示 從 根目錄 開始的具體目錄位置
03.創建和刪除操作
3.1 touch
3.1.1 目標
3.1.2 路徑
- 第一步: 創建一個空白文件
- 第二步: 修改文件的末次修改日期
3.1.3 實現
3.1.3.1 第一步: 創建一個空白文件
touch 不存在的文件
3.1.3.2 第二步: 修改文件的末次訪問時間
touch 存在的文件
3.1.4 小結
通過 touch 文件名
創建文件 和 修改文件的末次訪問時間
3.2 mkdir
3.2.1 目標:
3.2.2 路徑:
- 第一步: 創建 沒有層級關係的目錄
- 第二步: 創建 有層級關係的目錄
3.2.3 實現
3.2.3.1 第一步: 創建 沒有層級關係的目錄
mkdir 目錄名
3.2.3.2 第二步: 創建 有層級關係 的目錄
mkdir -p 目錄1/目錄2/目錄3
選項 |
英文 |
含義 |
-p |
parent |
可以遞歸創建目錄 |
3.2.4 小結
通過 mkdir -p 目錄名
命令 創建目錄
注意: 新建目錄的名稱 不能與當前目錄中 已有的目錄或文件 同名
3.3 rm
3.3.1 目標
通過 rm 文件/目錄
命令實現刪除 文件和目錄的功能, rm
對應的英文是 remove
含義: 刪除
3.3.2 路徑
- 第一步: 刪除文件 (有提示)
- 第二步: 刪除文件 (取消提示)
- 第三步: 刪除目錄
- 第四步: rm 結合 通配符
3.3.3 實現
3.3.3.1 第一步: 刪除文件 (有提示)
rm 文件
3.3.3.2 第二步: 刪除文件 (取消提示)
rm -f 文件
參數 |
英文 |
含義 |
-f |
force (強制) |
強制刪除,忽略不存在的文件, 無需提示 |
3.3.3.3 第三步: 刪除有內容的目錄
rm -rf 目錄
參數 |
英文 |
含義 |
-r |
recursive (遞歸) |
遞歸地刪除目錄下的內容, 刪除文件夾 時必須加此參數 |
3.3.3.4 第四步: rm 結合 通配符 * ? [abc][a-z]
rm -rf *.txt
3.3.4 小結
- 通過
rm -rf 文件/目錄
完成刪除 文件或目錄的功能.
- 注意: 使用
rm
命令要小心, 因爲文件刪除後不能恢復
04.拷貝和移動文件
序號 |
命令 |
對應英文 |
作用 |
01 |
tree [目錄名] |
tree |
以樹狀圖 列出目錄中的內容 |
02 |
cp 源文件 目標文件 |
copy |
複製文件或者目錄 |
03 |
mv 源文件 目標文件 |
move |
移動文件或目錄 或者 重命名 |
4.1 tree (擴展)
4.2.1 目標
- 通過
tree
命令可以以樹狀圖列出文件目錄結構.
4.2.2 路徑
- 第一步: 以樹形結構顯示目錄中的文件和目錄
- 第二步: 只顯示 當前目錄中的目錄
- 第三步: 顯示指定的兩層
4.2.3 實現
準備工作
# 創建目錄
mkdir -p /export/aaa/bbb/ccc
# 創建文件
touch /export/aaa/01.txt /export/aaa/02.txt
touch /export/aaa/bbb/03.txt /export/aaa/bbb/04.txt
touch /export/aaa/bbb/ccc/05.txt /export/aaa/bbb/ccc/06.txt
默認沒有安裝 tree
組件, 需要聯網時安裝:
# 安裝 tree組件
yum -y install tree
# 卸載 tree組件
yum -y remove tree
4.2.3.1 第一步: 以樹形結構顯示目錄中的文件和目錄
tree [目錄]
- 如果指定目錄, 就顯示指定目錄的內容
- 如果不指定目錄,就顯示當前目錄的內容
4.2.3.2 第二步: 只顯示 當前目錄中的目錄
tree -d [目錄]
選項 |
英文 |
含義 |
-d |
derictory (目錄) |
只顯示目錄, 不顯示文件 |
4.2.3.3 第三步: 顯示指定的兩層
tree -L n [目錄]
選項 |
英文 |
含義 |
-L |
level (層級) |
顯示幾層目錄 |
4.2.4 小結
- 通過
tree 目錄
命令可以以樹狀圖列出文件目錄結構.
4.2 cp
4.2.1 目標
- 通過
cp
實現複製將指定的 文件 或 目錄 複製到 兩一個 文件 或 目錄中
4.2.2 路徑
- 第一步: 備份指定文件
- 第二步: 將文件複製到目錄中
- 第三步: 將文件複製到另一個文件中, 實現覆蓋效果
- 第四步: 複製目錄 到指定 目錄中
4.2.3 實現
4.2.3.1 第一步: 備份指定文件
cp 文件1 備份文件名
4.2.3.2 第二步: 將文件複製到目錄中
cp 文件1 目錄/
4.2.3.3 第三步: 將文件複製到另一個文件中, 實現覆蓋效果
cp 文件1 文件2(存在的)
4.2.3.4 第四步: 複製目錄 到指定 目錄中
cp -r 目錄1/ 目錄2/
命令 |
英文 |
作用 |
-r |
recursive (遞歸) |
遞歸複製目標目錄的內容 |
4.2.4 小結
- cp命令的功能是將給出的 文件 或 目錄 複製到另一個 文件 或 目錄中
4.3 mv
4.3.1 目標
- 通過
mv
命令可以用來 移動 文件 或 目錄, 也可以給 文件或目錄重命名
4.3.2 路徑
- 第一步: 將文件 移動 另一個目錄中
- 第二步: 重命名
- 第三步: 將目錄移動到 另一個目錄中
4.3.3 實現
4.3.3.1 第一步: 將文件 移動 另一個目錄中
mv 文件 目錄/
4.3.3.2 第二步: 重命名
mv 舊文件名 新文件名
4.3.3.3 第三步: 將目錄移動 到 另一個目錄中
mv 被移動目錄 目標目錄
4.3.4 小結
mv
可以用來 移動 文件 或 目錄, 也可以給 文件或目錄重命名
05.查看文件內容
序號 |
命令 |
對應英文 |
作用 |
01 |
cat 文件名 |
concatenate |
查看小文件內容 |
02 |
less -N 文件名 |
less |
分頻 顯示大文件內容 |
03 |
head -n 文件名 |
|
查看文件的前一部分 |
04 |
tail -n 文件名 |
|
查看文件的最後部分 |
05 |
grep 搜索文本 文件名 |
grep |
根據關鍵詞, 搜索文本文件內容 |
準備工作
cd /export/
rm -rf *
cp /etc/passwd /export/
cp /etc/profile /export/
tree /export
5.1 cat
5.1.1 目標
通過 cat
會一次顯示所有的內容, 適合 查看內容較少 的文本文件
5.1.2 路徑
- 第一步: 顯示文件內容
- 第二步: 顯示文件內容(顯示行號 包含空行)
- 第三步: 顯示文件內容(顯示行號 排除空行)
5.1.3 實現
5.1.3.1 第一步: 顯示文件內容(不顯示行號)
cat 文件名
5.1.3.2 第二步: 顯示文件內容(顯示行號 包含空行)
cat -n 文件名
5.1.3.3 第三步: 顯示文件內容(顯示行號 排除空行)
cat -b 文件名
參數 |
英文 |
含義 |
-b |
number-nonblank |
非空行 顯示行號 |
命令 |
英文 |
含義 |
nl 文件 |
number lines of files |
查看文件內容 且 非空行顯示行號 |
5.1.4 小結
# >> 重定向這個命令, 爲了課程需要 我們先用, 後面我們會講
# 將文件 /etc/profile 的內容 追加到 /export/01.txt目錄中
cat /etc/profile >> /export/01.txt
cat /etc/profile >> /export/01.txt
cat /etc/profile >> /export/01.txt
cat /etc/profile >> /export/01.txt
cat /etc/profile >> /export/01.txt
5.2 less
5.2.1 目標
- 通過
less [參數] 文件名
命令可以用於分屏顯示文件內容, 每次只顯示一頁內容
less
命令適合查看 內容較多 的文本文件
5.2.2 路徑
- 第一步 : 分屏顯示文件內容
- 第二步 : 根據關鍵詞搜索內容
5.2.3 實現
5.2.3.1 第一步 : 分屏顯示文件內容
命令 |
作用 |
less -N 文件名 |
分屏展示文件內容, 適合 大文件 |
參數 |
英文 |
含義 |
-N |
number |
顯示文件內容 且 顯示行號 |
使用 more
的操作鍵:
操作鍵 |
功能 |
空格鍵 |
顯示手冊頁的下一屏幕 |
Enter 鍵 |
一次滾動手冊頁的一行 |
b |
回滾一屏 |
f |
向前一屏 |
q |
退出 |
/word |
搜索word字符串 |
5.2.3.2 第二步: 根據關鍵詞 搜索
# 根據關鍵詞搜索
/word
5.2.4 小結
-
less
命令適合查看 內容較多 的文本文件
-
準備工作
# 準備一個26個字母的文件, 使用 WINscp客戶端 上傳到 /export/ 目錄下
5.3 head
5.3.1 目標
5.3.2 路徑
5.3.3 實現
5.3.3.1 第一步:查看文件的前5行內容
head -n 數字 文件
參數 |
英文 |
含義 |
-n |
number |
表示顯示前幾行內容 |
5.3.4 小結
5.4 tail
5.4.1 目標
5.4.2 路徑
- 第一步: 查看文檔的最後10行內容
- 第二步: 動態顯示文檔的最後內容,一般用來查看日誌
- 第三步: 動態顯示文檔的最後10行內容
5.4.3 實現
tail -10 文件
-
第二步: 動態顯示文檔的最後內容,一般用來查看日誌
tail -f 文件名
tail -100f 文件名
5.4.4 小結
- 通過
tail -10f 文件
命令 查看文檔(日誌)的後幾行內容
5.5 grep
5.5.1 目標
5.5.2 路徑
- 第一步: 搜索 存在關鍵字 的行
- 第二步: 搜索 存在關鍵字 的行 且 顯示行號
- 第三步: 忽略大小寫 搜索 存在關鍵字 的行
- 第四步: 搜索 不存在關鍵字 的行
- 第五步: 搜索 以關鍵字開始 的行 或 以關鍵字結尾 的行
5.5.3 實現
5.5.3.1 第一步: 搜索 存在關鍵字 的行
grep 關鍵字 文件名
5.5.3.2 第二步: 搜索 存在關鍵字 的行 且 顯示行號
grep -n 關鍵字 文件名
選項 |
英文 |
含義 |
-n |
number |
顯示匹配行和行號 |
5.5.3.3 第三步: 忽略大小寫 搜索 存在關鍵字 的行
grep -i 關鍵字 文件名
選項 |
英文 |
含義 |
-i |
ignore-case |
忽略大小寫 |
5.5.3.4 搜索 不存在關鍵字 的行
grep -v 關鍵字 文件名
選項 |
英文 |
含義 |
-v |
invert-match |
顯示 不包含關鍵字 的所有行 |
5.5.3.5 第五步: 搜索 以關鍵字開始 的行 或 以關鍵字結尾 的行
grep 正則 文件名
參數 |
含義 |
^a |
行首,搜索以a開頭的行 |
ke$ |
行尾,搜索以ke結束的行 |
5.3.4 小結
06 其他
6.1 管道 |
6.1.1 目標
- 通過
命令1 | 命令2
可以將命令1的結果 通過 命令2 作進一步的處理
6.1.2 路徑
- 第一步 : 過濾
/etc/
目錄下 以 pro
開頭的文件
- 第二步 : 搜索 存在關鍵字 的行數
6.1.3 實現
第一步 : 過濾 /etc/
目錄下 以 pro
開頭的文件
ls /etc/ | grep ^pro
第二步 : 搜索存在關鍵字的行數
ls /etc | grep ^pro | wc -l
|
英文 |
作用 |
命令: wc [參數] [文件] |
|
打印文件的行數, 單詞數, 字節數 |
參數: -l |
line 行 |
顯示 行數 |
6.1.4 小結
- 通過
命令1 | 命令2
可以將命令1的結果 通過 命令2 作進一步的處理
6.2 echo 文字內容
echo string
將字符串輸出到控制檯 , 通常回和 重定向 聯合使用
echo hello
# 如果字符串有空格, 爲了避免歧義 請增加 雙引號 或者 單引號
echo "hello world"
6.3 重定向 > 和 >>
6.2.1 目標
- 默認情況下 命令的結果 輸出到 控制檯
- 通過 重定向 可以將結果 輸出到文件
6.2.2 路徑
- 第一步: 將 命令的成功結果 覆蓋 指定文件內容
- 第二步: 將 命令的成功結果 追加 指定文件的後面
6.2.3 實現
echo 2222 > 01.txt
命令 |
作用 |
結果 > 文件名 |
> 表示輸出, 會覆蓋文件的原有內容 |
echo 3333333 >> 01.txt
命令 |
作用 |
命令 >> 文件名 |
>> 表示追加, 會將內容追加到已有文件的末尾 |
-
第三步: 將 命令的失敗結果 追加 指定文件的後面
cat 不存在的目錄 &>> error.log
命令 |
作用 |
命令 &>> 文件 |
&>> 表示不區分錯誤類型 通通放到 日誌中 |
6.2.4 小結
- 通過
命令 > 文件
將命令的成功結果 覆蓋 指定文件內容
- 通過
命令 >> 文件
將命令的成功結果 追加 指定文件的後面
- 通過
命令 &>> 文件
將 命令的失敗結果 追加 指定文件的後面
6.4 && 和 ||
6.4.1 目標
- 如果 創建 目錄 成功, 就提示 創建成功
- 如果 創建 目錄 失敗, 就提示 創建失敗
6.4.2 實現
第一步: 如果 創建 目錄 成功, 就提示 創建成功
命令 |
作用 |
命令1 && 命令2 |
如果 命令1 執行成功了, 才執行 命令2 |
mkdir -p 正確目錄 && echo "提示創建目錄成功"
第二步: 如果 創建 目錄 失敗, 就提示 創建失敗
命令 |
作用 |
命令1 || 命令2 |
如果 命令1 執行失敗了, 才執行 命令2 |
mkdir 錯誤目錄 || echo "提示創建目錄失敗"
6.4.3 小結:
- 通過
命令1 && 命令2
實現 如果 命令1 執行成功, 就執行 命令2的效果
- 通過
命令1 || 命令2
實現 如果 命令1 執行失敗, 就執行 命令2的效果
準備工作
0 清空/export目錄中內容
cd /export && rm -rf *
# 1 創建目錄
mkdir -p /export/aaa/bbb/ccc/ddd/eee
# 2 創建文件
touch /export/aaa/bbb/ccc/ddd/eee/01.txt /export/aaa/bbb/ccc/ddd/eee/02.txt
# 3 切換到 /export/aaa/bbb/ccc/ddd/eee/ 目錄下 且 查看內容
# 3.1 cd /export/aaa/bbb/ccc/ddd/eee/ && ll
# 3.2 軟鏈接(快捷方式) cd 軟鏈接 && ll
6.5 軟鏈接
- 在linux中 文件名 和 內容 是兩個文件, 分開的!
6.5.1 目標
- 因爲 某些文件和目錄 的 路徑很深, 所以 需要增加 軟鏈接(快捷方式)
6.5.2 實現
語法如下:
命令 |
英文 |
作用 |
ln -s 目標文件絕對路徑 快捷方式路徑 |
link |
給目標文件增加一個軟鏈接, 通俗講就是快捷方式 |
6.5.3 小結
- 通過
ln -s 源文件的絕對路徑 快捷方式路徑
給 目標文件 增加 快捷方式
- 注意: 必須 增加
-s
, 否則 就變成了 硬鏈接(同樣指向真是存在的目標內容),