您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux下一些常用的Shell腳本總結(jié)”,在日常操作中,相信很多人在Linux下一些常用的Shell腳本總結(jié)問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux下一些常用的Shell腳本總結(jié)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
如何計(jì)算當(dāng)前目錄下的文件數(shù)和目錄數(shù)
# ls -l * |grep "^-"|wc -l ---- to count files # ls -l * |grep "^d"|wc -l ----- to count dir
如何只列子目錄?
ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux) ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)
如何實(shí)現(xiàn)取出文件中特定的行內(nèi)容
如果你只想看文件的前5行,可以使用head命令,
如:
head -5 /etc/passwd
如果你想查看文件的后10行,可以使用tail命令,
如:
tail -10 /etc/passwd
你知道怎么查看文件中間一段嗎?你可以使用sed命令
如:
sed -n '5,10p' /etc/passwd
這樣你就可以只查看文件的第5行到第10行。
如何查找含特定字符串的文件
例如查找當(dāng)前目錄下含有"the string you want find…"字符串的文件:
$find . -type f -exec grep "the string you want find…" {} ; -print
如何列出目錄樹
下面的短小的shell程序可以列出目錄樹, 充分利用了sed強(qiáng)大的模式匹配能力。
目錄樹形式如下:
. `--shellp `--updates `--wu-ftpd-2.4 | `--doc | | `--examples | `--src | | `--config | | `--makefiles | `--support | | `--makefiles | | `--man | `--util
腳本如下:
#!/bin/sh # dtree: Usage: dtree [any directory] dir=${1:-.} (cd $dir; pwd) find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"
如何實(shí)現(xiàn)取出文件中特定的列內(nèi)容
我們經(jīng)常會(huì)遇到需要取出分字段的文件的某些特定字段,例如/etc/password就是通過":"分隔各個(gè)字段的??梢酝ㄟ^cut命令來實(shí)現(xiàn)。例如,我們希望將系統(tǒng)賬號(hào)名保存到特定的文件,就可以:
cut -d: -f 1 /etc/passwd >; /tmp/users
-d用來定義分隔符,默認(rèn)為tab鍵,-f表示需要取得哪個(gè)字段。
當(dāng)然也可以通過cut取得文件中每行中特定的幾個(gè)字符,例如:
cut -c3-5 /etc/passwd
就是輸出/etc/passwd文件中每行的第三到第五個(gè)字符。
-c 和 -f 參數(shù)可以跟以下子參數(shù):
N 第N個(gè)字符或字段
N- 從第一個(gè)字符或字段到文件結(jié)束
N-M 從第N個(gè)到第M個(gè)字符或字段
-M 從第一個(gè)到第N個(gè)字符或字段
在vim中實(shí)現(xiàn)批量加密
密碼中還是不能帶空格,不管了,能加密就好,先這么用著。
#!/bin/bash # Encrypt file with vim if (test $# -lt 2) then echo Usage: decrypt password filename else vim -e -s -c ":set key=$1" -c ':wq' $2 echo "$2 encrypted." fi [weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done test2.txt encrypted. test4.txt encrypted. test9.txt encrypted. kick.txt encrypted. echo "$2 encrypted." fi [weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done test2.txt encrypted. test4.txt encrypted. test9.txt encrypted. kick.txt encrypted. too_old.txt encrypted. too_old_again.txt encrypted. bg5.txt encrypted. [weeder@SMTH weeder]$
$@等特定shell變量的含義
在shell腳本的實(shí)際編寫中,有一些特殊的變量十分有用:
$# 傳遞到腳本的參數(shù)個(gè)數(shù)
$* 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)。與位置變量不同,此選項(xiàng)參數(shù)可超過9個(gè)
$$ 腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)
$! 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程ID號(hào)
$@ 與$#相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù)
$- 顯示shell使用的當(dāng)前選項(xiàng),與set命令功能相同
$? 顯示最后命令的退出狀態(tài)。0表示沒有錯(cuò)誤,其他任何值表明有錯(cuò)誤。
如何使程序的執(zhí)行結(jié)果同時(shí)定向到屏幕和文件
program_name |tee logfile
這樣程序執(zhí)行期間的顯示都記錄到logfile同時(shí)顯示到標(biāo)準(zhǔn)輸出(屏幕
)。
如何用sendmail給系統(tǒng)所有用戶送信
首先在aliases文件里面建立一個(gè)alias:
alluser: :include:/etc/mail/allusers
并執(zhí)行newaliases使之生效,然后在/etc/mail/allusers里面列出所有用戶,可以使用下面的命令:
awk -F: '$3 >; 100 { print $1 }' /etc/passwd >; /etc/mail/allusers
如何查找某條命令的相關(guān)庫(kù)文件
在制作自己的發(fā)行版時(shí)經(jīng)常需要判斷某條命令需要哪些庫(kù)文件的支持,以確保指定的命令在獨(dú)立的系統(tǒng)內(nèi)可以可靠的運(yùn)行。
在Linux環(huán)境下通過ldd命令即可實(shí)現(xiàn),在控制臺(tái)執(zhí)行:
ldd /bin/ls
即可得到/bin/ls命令的相關(guān)庫(kù)文件列表。
如何使用host命令獲得更多信息
Host能夠用來查詢域名,然而它可以得到更多的信息。host -t mx linux.com可以查詢出Linux.com的MX記錄,以及處理Mail的Host的名字。Host -l linux.com會(huì)返回所有注冊(cè)在linux.com下的域名。host -a linux.com則會(huì)顯示這個(gè)主機(jī)的所有域名信息。
如何停止終端多個(gè)進(jìn)程
以下是腳本:
echo "系統(tǒng)當(dāng)前用戶" echo "---------------" who | awk '{print $2}' echo "---------------" echo "輸入要?dú)⑺澜K端的終端號(hào):" read $TTY kill -9 ${K}=`ps -t $TTY | grep [0-9] | awk '{print $1}'`
到此,關(guān)于“Linux下一些常用的Shell腳本總結(jié)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。