1. 程式人生 > >Linux實戰教學筆記04:Linux命令基礎

Linux實戰教學筆記04:Linux命令基礎

第四節:Linux命令基礎

標籤(空格分隔):Linux實戰教學筆記


第1章 認識操作環境

  • root:當前登陸的使用者名稱
  • @分隔符
  • chensiqi:主機名
  • ~:當前路徑位置
  • 使用者的提示符

1.1 Linux系統命令操作語法的格式

提示:

  1. 一般情況下命令中的[]表示可選,既命令的引數及檔案是可選的。
  2. 引數選項===>一個命令的不同的功能(不同的條件)。

1.2 Linux目錄結構

第2章 認識常用的Linux基礎命令

簡單粗暴貫穿常用命令,對命令使用框架有個整體認識

2.1 建立一個目錄/data

windows下面

新建===>資料夾

Linux下面

  • 建立目錄 ===>make directory===>mk dir ===>mkdir

mkdir /data 在當前目錄下建立子目錄
cd / 回到根目錄下
mkdir data 建立data子目錄

  • 檢視目錄===>列表===>list===>ls

ls 檢視當前目錄內容
ls -ld /data 檢視/data目錄詳細內容
舉例
ls / 檢視根目錄內容
ls -l / 檢視根目錄下詳細內容

2.2相對路徑與絕對路徑

絕對路徑:從根開始的路徑

C:\Program Files (x86)\Microsoft Office

從根開始的路徑就是絕對路徑

絕對路徑:/etc/sysconfig/network-scripts/ifcfg-eth0

相對路徑:不從“/”根開始,而是把當前所在路徑當作根,目標檔案或目錄距離當前路徑的“距離”。
示例:

小結

多練
多給別人講解
討論相對路徑與絕對路徑

mkdir 建立目錄
ls 檢視目錄內容
cd 進入xxxx
pwd 檢視當前絕對路徑

2.3 在/data 下面建立檔案 chensiqi.txt

建立單個檔案

建立多個檔案

小結:

touch 觸控 建立檔案或修改檔案時間戳(檔案的屬性)

2.4 為chensiqi.txt 增加內容“I am studying linux"

vi===>直接寫入(關於vi和vim使用方法請自行查詢vim tutor)
echo進行追加

注意:
1,我們通常在直接操作檔案前要備份檔案
2,操作前先看一眼cat 一下

特殊符號:
“>” 重定向,清除原檔案裡面所有內容,然後把內容追加到檔案的末尾
“>>” 追加重定向,追加內容,到檔案的尾部
“1>" 輸出重定向:把前面輸出的東西輸入到後邊的檔案中,會清除檔案原有內容。
“1>>" 追加輸出重定向:把前面輸出的東西輸入到後邊的檔案中,不會清除檔案原有內容,只是追加到最後一行。

<或0< 輸入重定向:後跟字串(不常用)
<<或0<< 追加輸入重定向:後跟字串(不常用)
2> 錯誤重定向:把錯誤資訊輸入到後面的檔案中,會刪除檔案原有內容
2>> 錯誤追加重定向:把前面錯誤資訊追加到後邊的檔案中,不會清除檔案原有內容

重定向小節:
重定向:改變命令執行時,資料傳輸的方向
箭頭方向就是資料方向===>水流方向

2.5 把chensiqi.txt拷貝到/tmp目錄下

windows複製貼上

ctrl+c
ctrl+v

Linux下:
複製====>copy===>cp

小結:

cp 複製檔案或目錄(預設不能拷貝目錄)
-r:遞迴,複製目錄,目錄及其子孫後代
-p:複製檔案同時保持檔案屬性不變,
-a ===-pdr

2.6 把/data 移動到 /root 目錄下面

移動(搬家)====>move====>mv

cd /
mv /data /root
小結
/data ===> /data 及/data下面的子孫後代
/data/===> /data下面的子孫後代
注意:這裡目錄的移動,如果想僅僅移動目錄下面檔案而不移動目錄使用mv /data/* /root 即可

2.7 進入/root 目錄下的data目錄,刪除chensiqi.txt檔案

刪除===> remove ====>rm

cd /root/data
rm chensiqi.txt 預設只能刪除檔案
會提示是否刪除 y 即可
rm -f chensiqi.txt 擴音示一律yes
注意:刪除前要思考操作後是否能夠恢復,若不能恢復擇應該先cp備份,或者採取移走mv的辦法進行刪除。

遞迴刪除

rm -rf data 刪除目錄必須加-r,-f擴音示 刪除data目錄及目錄下的所有東西
注意:此命令非常危險,建議不用,採取移動mv的刪除方式(在linux跟目錄下建立一個垃圾箱資料夾,想刪除的都mv過來)
請熟記,運維人員的職責:安全穩定高效

小結:

rm 無後綴只能刪除檔案
-f 擴音式強制刪除
-r 刪除目錄(遞迴刪除目錄下所有東西)
#慎用
替代方法:mv 移動檔案或目錄

提高刪除的難度/門檻

通過find命令提高刪除的準確度

find data -type f -name "chensiqi.txt"
-type:查詢的目標的型別
f : 檔案型別
-name + 檔名:檔案的名字
第一步:先找出檔案
第二步:再刪除檔案

find小結

find 查詢範圍 -type 檔案型別 f(file) d(directory) -name 檔名

管道
管道命令:xargs
之前的刪除檔案操作還可以這麼處理:

  • 如果前一條命令沒法滿足你的需求,那麼需要續接一條命令來進行再處理,那麼就需要管道符+管道命令(| xargs)來續接命令。
  • 也就是說,將管道符 | 左邊的命令所執行的結果所為管道符 | 右邊的命令的執行範圍

2.8 討論

生產環境下,運維人員如何最大限度的避免誤刪除檔案

  1. 修改或刪除資料前請務必備份,最好有異地備份,修改配置等先提交版本管理系統再發布到線上
  2. 運維新手刪除應使用mv命令替代rm命令,無用的檔案不要著急刪除,而是移動到回收站/tmp裡觀察一段時間可以通過設定別名等手段遮蔽rm,這樣一旦直接用到rm命令就是意識到(當然真想用有手段可以越過別名)。
  3. 如果非要刪除資料,還可以find結合rm替代單純的rm,包括設定定時任務等動作執行清理。
  4. 如果非要使用rm刪除,請儘量先切換目錄再刪目錄下的資料,能不用萬用字元就不用萬用字元
  5. 如果必須要使用rm -rf 命令強制且遞迴刪除資料夾,最後的避免錯誤方法就是要用tab去不全資料夾名字,不要手敲任何字元,防止誤刪除
  6. 如果刪除的不是目錄,就不要用rm -rf,採用最小化的方法rm -f即可,甚至重要的少量檔案,可以不用-f,以獲得確認刪除提示資訊

總結:

a,刪除資料後,多數情況是可以恢復的,但會影響業務
b,例如:需要停機恢復,且資料丟了,較長時間使用者訪問不了對應資料了
c,恢復工具諸如ext3grep等
d.事情發生前未雨綢繆永遠比發生了在解決好得多
e,養成規範,專業科學的運維習慣,運維流程是避免當黑鍋俠的關鍵!

企業面試題
問:linux下刪除一個目錄下的所有檔案,但保留一個指定檔案
方法一:find(最重要必須會)

!:取反,也就是說刪除目錄下檔案型別為f的所有檔案但是排除-name為 file9 的檔案

方法二:grep過濾內容

通過find查出所有目標資料夾下的檔案內容後,通過管道 | grep 過濾-v排除掉目標內容後再 | xargs 將內容傳遞給rm命令進行刪除

方法三:命令巢狀命令
此方法只適用於刪除當前目錄下的內容

··符號(tab鍵上邊的~符號不按shift輸入就是)它的意思是取符號內的命令的執行結果。本方法的意思就是rm刪除掉··符號內的命令的執行結果的內容

2.9 退出到上級目錄刪除data目錄

cd /root/data 進入目錄
cd .. 退出當前目錄回到上一級目錄
find 找出目標data目錄
| xargs 傳遞給rm刪除

特殊符號

“.”(點):表示當前目錄/路徑
“..”:表示當前目錄的上級目錄
“#” :表示註釋(linux會無視,略過)

2.10 已知chensiqi.txt檔案內容,去掉某行內容後,輸出結果

方法一:grep過濾

grep 過濾(預設)
cat chensiqi.txt | grep "I am chensiqi" 只看過濾的內容

-v: 排除
cat chensiqi.txt | grep -v "I am chensiqi" 排除內容後,看其他內容

方法二:通過head和tail拼接字串
head:從頭開始檢視檔案內容,預設檢視10行
tail:從結尾開始檢視檔案,預設檢視10行
-n: n等於行數

&& :特殊符號,並且的意思,可以拼接字串結果

方法三:awk 解決

!:取反

方法四:sed 解決

瞭解就好,以後再細說
/內容/d (刪除)
找到內容後,將內容刪除後再輸出

2.11 請用一條命令完成建立目錄/chensiqi/test,即建立/chensiqi 目錄及/chensiqi/test

2.12 已知/chensiqi 目錄下已經存在test.txt 檔案,如何執行命令才能把/mnt/test.txt 拷貝到/tmp 下覆蓋掉/chensiqi/test.txt.而讓系統不提示是否覆蓋(root許可權)

/bin/cp:是複製命令的絕對路徑,通過絕對路徑來複制命令就不會有提示。

知識擴充套件

還記得我們的crond定時任務嗎,當用定時任務觸發指令碼的時候,一般都要求腳本里的命令是絕對路徑的書寫方式(還不知道定時任務的,此處略過)

2.13 只檢視ett.txt(共100行)內第20到第30行內容

方法一:head和tail通過管道符解決

head -30 檔案路徑:檢視目標檔案前30行
tail -10 檔案路徑:檢視目標檔案後10行
head -30 檔名 | tail -10 先檢視目標檔案前30行,再檢視前30行內容的最後10行。

方法二:sed解決

sed ‘’ 目標檔名:預設輸出,全部內容
sed -n “行數p” 檔名:讀取目標檔案的行數內容
sed -n "行數,行數p" 檔名:讀取目標檔案的行數範圍的內容

方法三:awk解決

awk '行數' 目標檔名、
NR == 行數
&& 並且拼接字串

知識擴充套件
grep命令在這裡無法解決該問題,grep命令主要是用來過濾內容的。而不能按行或者按列數來檢索。

grep -v :取反,排除
grep -A 10:(after) 顯示匹配行的後10行
grep -B 10:(before) 顯示匹配行的前10行
grep -C 5:顯示匹配的行的前後各5行

2.14 把/chensiqi目錄及子目錄下所有以副檔名.sh 結尾的檔案,檔案中包含 chensiqi的字串全部替換為welcome

此題可通過find先找出目標檔案
再用sed -i 直接對檔案內容進行修改
sed -i 需要接收的是檔名,而“|”傳遞的是字串,“| xargs”傳遞的才是檔名,如果不理解請繼續往後看,

2.15 討論

管道符 | 和管道命令 xargs的區別

  • | 傳遞文字,文字,字串
  • | xargs 文字,文字,字串==(變成)=>檔名

grep 過濾的是檔案的內容,它過濾的是字串,因此它天生就認識 管道符“|”

sed -i “s///g” 檔名:他後邊需要接的是檔案的名字,因此他不能直接認識字串

所以就需要通過xargs這個管道符命令來將字串轉換成檔名

綜上,這就是“|”和“|xargs”的區別,請仔細理解,很重要

第四節:Linux命令基礎

標籤(空格分隔):Linux實戰教學筆記


第1章 認識操作環境

  • root:當前登陸的使用者名稱
  • @分隔符
  • chensiqi:主機名
  • ~:當前路徑位置
  • 使用者的提示符

1.1 Linux系統命令操作語法的格式

提示:

  1. 一般情況下命令中的[]表示可選,既命令的引數及檔案是可選的。
  2. 引數選項===>一個命令的不同的功能(不同的條件)。

1.2 Linux目錄結構

第2章 認識常用的Linux基礎命令

簡單粗暴貫穿常用命令,對命令使用框架有個整體認識

2.1 建立一個目錄/data

windows下面

新建===>資料夾

Linux下面

  • 建立目錄 ===>make directory===>mk dir ===>mkdir

mkdir /data 在當前目錄下建立子目錄
cd / 回到根目錄下
mkdir data 建立data子目錄

  • 檢視目錄===>列表===>list===>ls

ls 檢視當前目錄內容
ls -ld /data 檢視/data目錄詳細內容
舉例
ls / 檢視根目錄內容
ls -l / 檢視根目錄下詳細內容

2.2相對路徑與絕對路徑

絕對路徑:從根開始的路徑

C:\Program Files (x86)\Microsoft Office

從根開始的路徑就是絕對路徑

絕對路徑:/etc/sysconfig/network-scripts/ifcfg-eth0

相對路徑:不從“/”根開始,而是把當前所在路徑當作根,目標檔案或目錄距離當前路徑的“距離”。
示例:

小結

多練
多給別人講解
討論相對路徑與絕對路徑

mkdir 建立目錄
ls 檢視目錄內容
cd 進入xxxx
pwd 檢視當前絕對路徑

2.3 在/data 下面建立檔案 chensiqi.txt

建立單個檔案

建立多個檔案

小結:

touch 觸控 建立檔案或修改檔案時間戳(檔案的屬性)

2.4 為chensiqi.txt 增加內容“I am studying linux"

vi===>直接寫入(關於vi和vim使用方法請自行查詢vim tutor)
echo進行追加

注意:
1,我們通常在直接操作檔案前要備份檔案
2,操作前先看一眼cat 一下

特殊符號:
“>” 重定向,清除原檔案裡面所有內容,然後把內容追加到檔案的末尾
“>>” 追加重定向,追加內容,到檔案的尾部
“1>" 輸出重定向:把前面輸出的東西輸入到後邊的檔案中,會清除檔案原有內容。
“1>>" 追加輸出重定向:把前面輸出的東西輸入到後邊的檔案中,不會清除檔案原有內容,只是追加到最後一行。

<或0< 輸入重定向:後跟字串(不常用)
<<或0<< 追加輸入重定向:後跟字串(不常用)
2> 錯誤重定向:把錯誤資訊輸入到後面的檔案中,會刪除檔案原有內容
2>> 錯誤追加重定向:把前面錯誤資訊追加到後邊的檔案中,不會清除檔案原有內容

重定向小節:
重定向:改變命令執行時,資料傳輸的方向
箭頭方向就是資料方向===>水流方向

2.5 把chensiqi.txt拷貝到/tmp目錄下

windows複製貼上

ctrl+c
ctrl+v

Linux下:
複製====>copy===>cp

小結:

cp 複製檔案或目錄(預設不能拷貝目錄)
-r:遞迴,複製目錄,目錄及其子孫後代
-p:複製檔案同時保持檔案屬性不變,
-a ===-pdr

2.6 把/data 移動到 /root 目錄下面

移動(搬家)====>move====>mv

cd /
mv /data /root
小結
/data ===> /data 及/data下面的子孫後代
/data/===> /data下面的子孫後代
注意:這裡目錄的移動,如果想僅僅移動目錄下面檔案而不移動目錄使用mv /data/* /root 即可

2.7 進入/root 目錄下的data目錄,刪除chensiqi.txt檔案

刪除===> remove ====>rm

cd /root/data
rm chensiqi.txt 預設只能刪除檔案
會提示是否刪除 y 即可
rm -f chensiqi.txt 擴音示一律yes
注意:刪除前要思考操作後是否能夠恢復,若不能恢復擇應該先cp備份,或者採取移走mv的辦法進行刪除。

遞迴刪除

rm -rf data 刪除目錄必須加-r,-f擴音示 刪除data目錄及目錄下的所有東西
注意:此命令非常危險,建議不用,採取移動mv的刪除方式(在linux跟目錄下建立一個垃圾箱資料夾,想刪除的都mv過來)
請熟記,運維人員的職責:安全穩定高效

小結:

rm 無後綴只能刪除檔案
-f 擴音式強制刪除
-r 刪除目錄(遞迴刪除目錄下所有東西)
#慎用
替代方法:mv 移動檔案或目錄

提高刪除的難度/門檻

通過find命令提高刪除的準確度

find data -type f -name "chensiqi.txt"
-type:查詢的目標的型別
f : 檔案型別
-name + 檔名:檔案的名字
第一步:先找出檔案
第二步:再刪除檔案

find小結

find 查詢範圍 -type 檔案型別 f(file) d(directory) -name 檔名

管道
管道命令:xargs
之前的刪除檔案操作還可以這麼處理:

  • 如果前一條命令沒法滿足你的需求,那麼需要續接一條命令來進行再處理,那麼就需要管道符+管道命令(| xargs)來續接命令。
  • 也就是說,將管道符 | 左邊的命令所執行的結果所為管道符 | 右邊的命令的執行範圍

2.8 討論

生產環境下,運維人員如何最大限度的避免誤刪除檔案

  1. 修改或刪除資料前請務必備份,最好有異地備份,修改配置等先提交版本管理系統再發布到線上
  2. 運維新手刪除應使用mv命令替代rm命令,無用的檔案不要著急刪除,而是移動到回收站/tmp裡觀察一段時間可以通過設定別名等手段遮蔽rm,這樣一旦直接用到rm命令就是意識到(當然真想用有手段可以越過別名)。
  3. 如果非要刪除資料,還可以find結合rm替代單純的rm,包括設定定時任務等動作執行清理。
  4. 如果非要使用rm刪除,請儘量先切換目錄再刪目錄下的資料,能不用萬用字元就不用萬用字元
  5. 如果必須要使用rm -rf 命令強制且遞迴刪除資料夾,最後的避免錯誤方法就是要用tab去不全資料夾名字,不要手敲任何字元,防止誤刪除
  6. 如果刪除的不是目錄,就不要用rm -rf,採用最小化的方法rm -f即可,甚至重要的少量檔案,可以不用-f,以獲得確認刪除提示資訊

總結:

a,刪除資料後,多數情況是可以恢復的,但會影響業務
b,例如:需要停機恢復,且資料丟了,較長時間使用者訪問不了對應資料了
c,恢復工具諸如ext3grep等
d.事情發生前未雨綢繆永遠比發生了在解決好得多
e,養成規範,專業科學的運維習慣,運維流程是避免當黑鍋俠的關鍵!

企業面試題
問:linux下刪除一個目錄下的所有檔案,但保留一個指定檔案
方法一:find(最重要必須會)

!:取反,也就是說刪除目錄下檔案型別為f的所有檔案但是排除-name為 file9 的檔案

方法二:grep過濾內容

通過find查出所有目標資料夾下的檔案內容後,通過管道 | grep 過濾-v排除掉目標內容後再 | xargs 將內容傳遞給rm命令進行刪除

方法三:命令巢狀命令
此方法只適用於刪除當前目錄下的內容

··符號(tab鍵上邊的~符號不按shift輸入就是)它的意思是取符號內的命令的執行結果。本方法的意思就是rm刪除掉··符號內的命令的執行結果的內容

2.9 退出到上級目錄刪除data目錄

cd /root/data 進入目錄
cd .. 退出當前目錄回到上一級目錄
find 找出目標data目錄
| xargs 傳遞給rm刪除

特殊符號

“.”(點):表示當前目錄/路徑
“..”:表示當前目錄的上級目錄
“#” :表示註釋(linux會無視,略過)

2.10 已知chensiqi.txt檔案內容,去掉某行內容後,輸出結果

方法一:grep過濾

grep 過濾(預設)
cat chensiqi.txt | grep "I am chensiqi" 只看過濾的內容

-v: 排除
cat chensiqi.txt | grep -v "I am chensiqi" 排除內容後,看其他內容

方法二:通過head和tail拼接字串
head:從頭開始檢視檔案內容,預設檢視10行
tail:從結尾開始檢視檔案,預設檢視10行
-n: n等於行數

&& :特殊符號,並且的意思,可以拼接字串結果

方法三:awk 解決

!:取反

方法四:sed 解決

瞭解就好,以後再細說
/內容/d (刪除)
找到內容後,將內容刪除後再輸出

2.11 請用一條命令完成建立目錄/chensiqi/test,即建立/chensiqi 目錄及/chensiqi/test

2.12 已知/chensiqi 目錄下已經存在test.txt 檔案,如何執行命令才能把/mnt/test.txt 拷貝到/tmp 下覆蓋掉/chensiqi/test.txt.而讓系統不提示是否覆蓋(root許可權)

/bin/cp:是複製命令的絕對路徑,通過絕對路徑來複制命令就不會有提示。

知識擴充套件

還記得我們的crond定時任務嗎,當用定時任務觸發指令碼的時候,一般都要求腳本里的命令是絕對路徑的書寫方式(還不知道定時任務的,此處略過)

2.13 只檢視ett.txt(共100行)內第20到第30行內容

方法一:head和tail通過管道符解決

head -30 檔案路徑:檢視目標檔案前30行
tail -10 檔案路徑:檢視目標檔案後10行
head -30 檔名 | tail -10 先檢視目標檔案前30行,再檢視前30行內容的最後10行。

方法二:sed解決

sed ‘’ 目標檔名:預設輸出,全部內容
sed -n “行數p” 檔名:讀取目標檔案的行數內容
sed -n "行數,行數p" 檔名:讀取目標檔案的行數範圍的內容

方法三:awk解決

awk '行數' 目標檔名、
NR == 行數
&& 並且拼接字串

知識擴充套件
grep命令在這裡無法解決該問題,grep命令主要是用來過濾內容的。而不能按行或者按列數來檢索。

grep -v :取反,排除
grep -A 10:(after) 顯示匹配行的後10行
grep -B 10:(before) 顯示匹配行的前10行
grep -C 5:顯示匹配的行的前後各5行

2.14 把/chensiqi目錄及子目錄下所有以副檔名.sh 結尾的檔案,檔案中包含 chensiqi的字串全部替換為welcome

此題可通過find先找出目標檔案
再用sed -i 直接對檔案內容進行修改
sed -i 需要接收的是檔名,而“|”傳遞的是字串,“| xargs”傳遞的才是檔名,如果不理解請繼續往後看,

2.15 討論

管道符 | 和管道命令 xargs的區別

  • | 傳遞文字,文字,字串
  • | xargs 文字,文字,字串==(變成)=>檔名

grep 過濾的是檔案的內容,它過濾的是字串,因此它天生就認識 管道符“|”

sed -i “s///g” 檔名:他後邊需要接的是檔案的名字,因此他不能直接認識字串

所以就需要通過xargs這個管道符命令來將字串轉換成檔名

綜上,這就是“|”和“|xargs”的區別,請仔細理解,很重要