標籤(空格分隔):Linux實戰教學筆記linux
提示:面試
簡單粗暴貫穿經常使用命令,對命令使用框架有個總體認識vim
windows下面windows
新建===>文件夾安全
Linux下面框架
mkdir /data 在當前目錄下建立子目錄
cd / 回到根目錄下
mkdir data 建立data子目錄運維
ls 查看當前目錄內容
ls -ld /data 查看/data目錄詳細內容
舉例
ls / 查看根目錄內容
ls -l / 查看根目錄下詳細內容工具
絕對路徑:從根開始的路徑spa
C:\Program Files (x86)\Microsoft Office3d
從根開始的路徑就是絕對路徑
絕對路徑:/etc/sysconfig/network-scripts/ifcfg-eth0
相對路徑:不從「/」根開始,而是把當前所在路徑看成根,目標文件或目錄距離當前路徑的「距離」。
示例:
小結
多練
多給別人講解
討論相對路徑與絕對路徑
mkdir 建立目錄
ls 查看目錄內容
cd 進入xxxx
pwd 查看當前絕對路徑
建立單個文件
建立多個文件
小結:
touch 觸摸 建立文件或修改文件時間戳(文件的屬性)
vi===>直接寫入(關於vi和vim使用方法請自行查詢vim tutor)
echo進行追加
注意:
1,咱們一般在直接操做文件前要備份文件
2,操做前先看一眼cat 一下
特殊符號:
「>」 重定向,清除原文件裏面全部內容,而後把內容追加到文件的末尾
「>>」 追加劇定向,追加內容,到文件的尾部
「1>" 輸出重定向:把前面輸出的東西輸入到後邊的文件中,會清除文件原有內容。
「1>>" 追加輸出重定向:把前面輸出的東西輸入到後邊的文件中,不會清除文件原有內容,只是追加到最後一行。
<或0< 輸入重定向:後跟字符串(不經常使用)
<<或0<< 追加輸入重定向:後跟字符串(不經常使用)
2> 錯誤重定向:把錯誤信息輸入到後面的文件中,會刪除文件原有內容
2>> 錯誤追加劇定向:把前面錯誤信息追加到後邊的文件中,不會清除文件原有內容
重定向小節:
重定向:改變命令執行時,數據傳輸的方向
箭頭方向就是數據方向===>水流方向
windows複製粘貼
ctrl+c
ctrl+v
Linux下:
複製====>copy===>cp
小結:
cp 複製文件或目錄(默認不能拷貝目錄)
-r:遞歸,複製目錄,目錄及其子孫後代
-p:複製文件同時保持文件屬性不變,
-a ===-pdr
移動(搬家)====>move====>mv
cd /
mv /data /root
小結:
/data ===> /data 及/data下面的子孫後代
/data/===> /data下面的子孫後代
注意:這裏目錄的移動,若是想僅僅移動目錄下面文件而不移動目錄使用mv /data/* /root 便可
刪除===> 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
以前的刪除文件操做還能夠這麼處理:
生產環境下,運維人員如何最大限度的避免誤刪除文件
總結:
a,刪除數據後,多數狀況是能夠恢復的,但會影響業務
b,例如:須要停機恢復,且數據丟了,較長時間用戶訪問不了對應數據了
c,恢復工具諸如ext3grep等
d.事情發生前未雨綢繆永遠比發生了在解決好得多
e,養成規範,專業科學的運維習慣,運維流程是避免當黑鍋俠的關鍵!
企業面試題
問:linux下刪除一個目錄下的全部文件,但保留一個指定文件
方法一:find(最重要必須會)
!:取反,也就是說刪除目錄下文件類型爲f的全部文件可是排除-name爲 file9 的文件
方法二:grep過濾內容
經過find查出全部目標文件夾下的文件內容後,經過管道 | grep 過濾-v排除掉目標內容後再 | xargs 將內容傳遞給rm命令進行刪除
方法三:命令嵌套命令
此方法只適用於刪除當前目錄下的內容
··符號(tab鍵上邊的~符號不按shift輸入就是)它的意思是取符號內的命令的執行結果。本方法的意思就是rm刪除掉··符號內的命令的執行結果的內容
cd /root/data 進入目錄
cd .. 退出當前目錄回到上一級目錄
find 找出目標data目錄
| xargs 傳遞給rm刪除
特殊符號
「.」(點):表示當前目錄/路徑
「..」:表示當前目錄的上級目錄
「#」 :表示註釋(linux會無視,略過)
方法一: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 (刪除)
找到內容後,將內容刪除後再輸出
/bin/cp:是複製命令的絕對路徑,經過絕對路徑來複制命令就不會有提示。
知識擴展
還記得咱們的crond定時任務嗎,當用定時任務觸發腳本的時候,通常都要求腳本里的命令是絕對路徑的書寫方式(還不知道定時任務的,此處略過)
方法一: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行
此題可經過find先找出目標文件
再用sed -i 直接對文件內容進行修改
sed -i 須要接收的是文件名,而「|」傳遞的是字符串,「| xargs」傳遞的纔是文件名,若是不理解請繼續日後看,
管道符 | 和管道命令 xargs的區別
grep 過濾的是文件的內容,它過濾的是字符串,所以它天生就認識 管道符「|」
sed -i 「s///g」 文件名:他後邊須要接的是文件的名字,所以他不能直接認識字符串
因此就須要經過xargs這個管道符命令來將字符串轉換成文件名
綜上,這就是「|」和「|xargs」的區別,請仔細理解,很重要