shell 常用命令3
1 sed
用來自動(dòng)編輯文件,可以用來實(shí)現(xiàn)替換配置文件的配置
語(yǔ)法:
sed [-hnV][-e<script>][-f<script文件>][文本文件]
參數(shù)說明:
- -e<script>或--expression=<script> 以選項(xiàng)中指定的script來處理輸入的文本文件。
- -f<script文件>或--file=<script文件> 以選項(xiàng)中指定的script文件來處理輸入的文本文件。
- -h或--help 顯示幫助。
- -n或--quiet或--silent 僅顯示script處理后的結(jié)果。
- -V或--version 顯示版本信息。
動(dòng)作說明:
- a :新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
- c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
- d :刪除,因?yàn)槭莿h除啊,所以 d 后面通常不接任何東東;
- i :插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
- p :打印,亦即將某個(gè)選擇的數(shù)據(jù)印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)行~
- s :取代,可以直接進(jìn)行取代的工作哩!通常這個(gè) s 的動(dòng)作可以搭配正則表達(dá)式!例如 1,20s/old/new/g 就是啦!
[root@poc-2 aa]cat aaa.txt
aa = aa
bb = bb
cc = cc
[root@poc-2 aa]sed -n '/aa/p' aaa.txt # 查找aaa.txt文件的內(nèi)容,并進(jìn)行打印p
### 查找aaa.txt文件中的aa模式,大括號(hào)中的s是把a(bǔ)a替換為xx,g是全部替換,不加g只替換第一個(gè)匹配的;p是打??;q是退出
### 注意這只是完成了在內(nèi)存中的替換,并沒有寫會(huì)到文件中
[root@poc-2 aa]# sed -n '/aa/{s/aa/xx/g;p;q}' aaa.txt
xx = xx
[root@poc-2 aa]# sed -n '/aa/{s/aa/xx/;p;q}' aaa.txt
xx = aa
[root@poc-2 aa]# cat aaa.txt
aa = aa
bb = bb
cc = cc
# 使用選項(xiàng) i 可以替換源文件
[root@poc-2 aa]# sed -i 's/aa/xx/g' aaa.txt
[root@poc-2 aa]# cat aaa.txt
xx = xx
bb = bb
cc = cc
# 先打印匹配的行,再進(jìn)行替換,支持正則表達(dá)式,最好使用^表示以什么開頭,/需要轉(zhuǎn)義,因?yàn)閟ed本省需要/
# 1 不替換源文件
sed -n '/advertised.listeners/p' ${parent_path}/testProjectName/conf/kafka.properties | sed 's/advertised.listeners/advertised.listeners=PLAINTEXT://${LAN_IP}:9093/g'
# 2 替換源文件
sed -i 's/^advertised.listeners.*/advertised.listeners=PLAINTEXT:\/\/1:9093/g' ./testProjectName/conf/kafka.properties
2 tar
用來 **壓縮 ** 和 解壓
tar -tvf test.tar # 列出打包文件中的文件列表
tar -czvf test.tar.gz ./test # 把 test 目錄打包成 test.tar.gz c 是指 create,創(chuàng)建一個(gè) 備份文件。壓縮
tar -xzvf test.tar.gz ./test # 把 test 目錄打包成 test.tar.gz,解壓
*.Z:compress 程序壓縮的文件。
*.gz:gzip 程序壓縮的文件。
*.bz2:bzip2 程序壓縮的文件。
*.tar:tar 程序打包的數(shù)據(jù),沒有被壓縮過。
*.tar.gz(簡(jiǎn)寫為 .tgz):tar 程序打包的數(shù)據(jù),經(jīng)過 gzip 的壓縮。
*.tar.bz2(簡(jiǎn)寫為 .tbz2):tar 程序打包的數(shù)據(jù),經(jīng)過 bzip2 的壓縮
- -z:通過gzip指令處理備份文件。文件名格式需為*.tar.gz
- -c: 建立新的備份文件。
- -x:或--extract或--get 從備份文件中還原文件。
- -v:顯示指令執(zhí)行過程。
- -f : 指定備份文件。
- -t:列出備份文件的內(nèi)容。
- -j:通過bzip2指令處理備份文件。文件名格式需為*.tar.bz2(簡(jiǎn)寫為 .tbz2)
- -u: 僅置換較備份文件內(nèi)的文件更新的文件。
- -C:<目的目錄>或--directory=<目的目錄> 切換到指定的目錄。
3 scp
**公司局域網(wǎng)內(nèi)服務(wù)器實(shí)現(xiàn)快速傳輸文件 **scp 是 secure copy,基于ssh登錄進(jìn)行的安全的遠(yuǎn)程文件拷貝密令
1、從本地復(fù)制到遠(yuǎn)程
# 復(fù)制文件 語(yǔ)法
scp local_file remote_username@remote_ip:remote_folder # 1 指定一個(gè)目錄,本地文件使用原命名
或者
scp local_file remote_username@remote_ip:remote_file # 2 指定一個(gè)文件,本地文件會(huì)被重命名為這個(gè)名字存放與遠(yuǎn)端中
或者
scp local_file remote_ip:remote_folder # 3 不指定用戶,需要手動(dòng)輸入用戶名和密碼
或者
scp local_file remote_ip:remote_file # 4 不指定用戶,需要手動(dòng)輸入用戶名和密碼
# 例如:scp /home/space/music/1.mp3 root@192.168.1.111 # 執(zhí)行命令后輸入密碼
# 復(fù)制目錄 語(yǔ)法
scp -r local_folder remote_username@remote_ip:remote_folder # 1 指定了用戶名
或者
scp -r local_folder remote_ip:remote_folder # 2 沒有指定用戶名
# 例如:scp -r /home/space/music/ root@192.168.1.111:/home/root/others/
# 將本地 music 目錄復(fù)制到遠(yuǎn)程 others 目錄下
2、從遠(yuǎn)程復(fù)制到本地
# 從遠(yuǎn)程復(fù)制到本地,只要將從本地復(fù)制到遠(yuǎn)程的命令的后2個(gè)參數(shù)調(diào)換順序即可
# 目錄 例如:scp -r root@192.168.1.111:/home/root/others /home/space/music
# 文件 例如:scp -r root@192.168.1.111:/home/root/aaa.txt /home/space/music/aaa.txt
- -C: 允許壓縮。(將-C標(biāo)志傳遞給ssh,從而打開壓縮功能)
- -p:保留原文件的修改時(shí)間,訪問時(shí)間和訪問權(quán)限。
- -q: 不顯示傳輸進(jìn)度條。
- -r: 遞歸復(fù)制整個(gè)目錄。
4 mv
移動(dòng)本地文件或者目錄,也用來實(shí)現(xiàn)重命名
mv [options] source dest
mv [options] source... directory # 可以剪切多個(gè)文件到一個(gè)目錄下
mv info/ logs # 將 info 目錄放入 logs 目錄中。注意,如果 logs 目錄不存在,則該命令將 info 改名為 logs
# 默認(rèn)會(huì)使用原來的目錄名,如果原來的文件名被占用了會(huì)報(bào)錯(cuò)
[root@poc-2 smy]# mv -i aa/ ./shellTest
mv:是否覆蓋"./shellTest/aa"? y
mv: 無(wú)法將"aa/" 移動(dòng)至"./shellTest/aa": 文件已存在
# 解決方法,指定一個(gè)新的不存在的目錄,讓他自己創(chuàng)建
mv -i aa/ ./shellTest/bb # 成功執(zhí)行 mv 動(dòng)作
options:
- -b: 當(dāng)目標(biāo)文件或目錄存在時(shí),在執(zhí)行覆蓋前,會(huì)為其創(chuàng)建一個(gè)備份。
- -i: 如果指定移動(dòng)的源目錄或文件與目標(biāo)的目錄或文件同名,則會(huì)先詢問是否覆蓋舊文件,輸入 y 表示直接覆蓋,輸入 n 表示取消該操作。
- -f: 如果指定移動(dòng)的源目錄或文件與目標(biāo)的目錄或文件同名,不會(huì)詢問,直接覆蓋舊文件。
- -n: 不要覆蓋任何已存在的文件或目錄。
- -u:當(dāng)源文件比目標(biāo)文件新或者目標(biāo)文件不存在時(shí),才執(zhí)行移動(dòng)操作。
5 cp
復(fù)制本地文件或者目錄,從a路徑復(fù)制到b路徑,存在兩個(gè)文件
cp [OPTION] SOURCE DIRECTORY
cp [OPTION] SOURCE... DIRECTORY
cp aaa.txt ./aa # 復(fù)制文件, 復(fù)制當(dāng)前路徑下的aaa.txt文件 到./aa目錄中
cp -r aa ../ # 遞歸的復(fù)制目錄
cp -r aa ./shellTest # cp的目標(biāo)目錄中存在重名的目錄,默認(rèn)會(huì)提示
OPTION:
- -r:遞歸的復(fù)制目錄
- -p:保持文件或目錄屬性
- -a:相當(dāng)于同時(shí)使用參數(shù)-d,-p,-r
- -i:提示是否覆蓋的確認(rèn)
- -d:如果復(fù)制的源文件為鏈接文件,僅復(fù)制符號(hào)鏈接本身,且保留符號(hào)鏈接所指向的目標(biāo)文件或目錄
6 多個(gè)if使用case優(yōu)化
case $service in
init)
echo "init"
;;
check)
echo "check"
;;
install)
echo "install"
;;
start)
echo "start"
;;
stop)
echo "stop"
;;
status)
echo "status"
;;
*)
usage # 輸出使用方法,相當(dāng)于 --help
exit 0
;;
esac
case工作方式如上所示。取值后面必須為關(guān)鍵字,每一模式必須以右括號(hào)結(jié)束。取值可以為變量或常數(shù)。匹配發(fā)現(xiàn)取值符合某一模式后,其間所有命令開始執(zhí)行直至 ;;。
;; 與其他語(yǔ)言中的 break 類似,意思是跳到整個(gè) case 語(yǔ)句的最后。
取值將檢測(cè)匹配的每一個(gè)模式。一旦模式匹配,則執(zhí)行完匹配模式相應(yīng)命令后不再繼續(xù)其他模式。如果無(wú)一匹配模式,使用星號(hào) * 捕獲該值,再執(zhí)行后面的命令。
7 軟連接
為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同步的鏈接。
當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在某個(gè)固定的目錄,放上該文件,然后在 其它的目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。
語(yǔ)法:
ln [參數(shù)][源文件或目錄][目標(biāo)文件或目錄]
軟鏈接:
- 1.軟鏈接,以路徑的形式存在。類似于Windows操作系統(tǒng)中的快捷方式
- 2.軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以
- 3.軟鏈接可以對(duì)一個(gè)不存在的文件名進(jìn)行鏈接
- 4.軟鏈接可以對(duì)目錄進(jìn)行鏈接
硬鏈接:文章來源:http://www.zghlxwxcb.cn/news/detail-460853.html
- 1.硬鏈接,以文件副本的形式存在。但不占用實(shí)際空間。
- 2.不允許給目錄創(chuàng)建硬鏈接
- 3.硬鏈接只有在同一個(gè)文件系統(tǒng)中才能創(chuàng)建
命令參數(shù):文章來源地址http://www.zghlxwxcb.cn/news/detail-460853.html
- -f 強(qiáng)制執(zhí)行
- -i 交互模式,文件存在則提示用戶是否覆蓋
- -n 把符號(hào)鏈接視為一般目錄
- -s 軟鏈接(符號(hào)鏈接)
- -v 顯示詳細(xì)的處理過程
# 在當(dāng)前目錄下新建一個(gè)軟鏈接 link2013 ,鏈接到 log2013.log這個(gè)文件
[root@localhost test]# ln -s log2013.log link2013
到了這里,關(guān)于shell 常用命令3的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!