Skip to main content

快取指令

基本語法

!/bin/sh (或者是 #!/bin/bash)  #宣佈shell指令
$? :表示上一個指令的離開狀況,一般指令正常離開會傳回 0。不正常離開則會傳回 1、2 等數值。
$1 :表示輸入的第一個參數,$2 則為第二個參數,依此類推。
$0 :shell script的檔名。
$@ :即代表 $1, $2,....直到所有參數結束。也就是說 $@ 代表了 “$1” “$2” “$3”….。
$* :所有參數無間隔的連在一起,成為單一個參數。也就是說 $* 代表了 “$1 $2 $3…”

使字串中包含',可用反斜線 \ 跳脫。

雙引號""中若含有變數$var,會先將變數轉換成其實際的值,單引號''則會將$var當成是一個值,而不會作轉換動作。

echo "你們輸入的年齡是 $Y_AGE + $F_AGE 歲"
echo "你們輸入的年齡是 $((Y_AGE + F_AGE)) 歲"

#!/bin/bash
read -p "Please enter your age:" Y_AGE
read -p "Please enter your friend's age:" F_AGEsum1=$Y_AGE + $F_AGE
sum2=`expr $Y_AGE + $F_AGE`
sum3=$((Y_AGE + F_AGE))echo "你們輸入的年齡是 $Y_AGE + $F_AGE 歲"
echo "你們輸入的年齡是 $((Y_AGE + F_AGE)) 歲" 
#Bash Shell 中內建原生不支援運算式,所以無法顯示
echo "你們輸入的年齡是 $sum1 歲"
echo "你們輸入的年齡是 $sum2 歲"
echo "你們輸入的年齡是 $sum3 歲"
設定使用ssh設定來啟用sftp

Match需要放置在UsePAM後面

Match user user名稱
ChrootDirectory /srv/ftp #更改根目錄
AllowTcpForwarding yes #可以使用ssh tcp forwarding
ForceCommand “強制指令”
使用特殊ip


Match User ansible,backup,support Address *,!176.x.x.x #加!代表不要
#搭配hostname
Match user 使用者 Host “hostname”
#使用ip
Match address IP位置
#使用port
Match Localport 埠位

ex:
Match User user2, LocalPort 2201DenyUsers user2
備註:可以使用正則表示法

使用服務端可以使用的port位

ListenAddress hostname|address

ListenAddress hostname:port

ListenAddress IPv4_address:port

ListenAddress [hostname|address]:port

使用AllowUsers 跟AllowGroups或denyUsers denyGroups來限制使用者可不可以使用
ssh模式(可以限制帳號、ip或網域名稱等等
AllowUsers <user1> <user2> <user3>
AllowGroups <group>
DenyUsers *
DenyGroups no-sshDeny
Users username@192.168.1.*
shell 運算
n=1
m=2
echo $n+$m
結果:
1+2    #因為shell預設不做運算
n=1
m=2
echo $((n+m))
結果
3
環境變數

現在狀況,重開機或重登入後部一定會一樣
echo $PATH   #顯示當下指令路徑
env          #顯示當前使用者變數
set          #顯示當前shell變數
export       #當前使用者shell變數
a=asd        #設定當前shell變數
export a=asd #設定當前使用者shell變數
unset a      #取消變數
readonly a   #設定只讀環境變數

永久環境變數更改

新增至/etc/profile      #全部使用者
新增至$HOME/.profile    #個別使用者
新增至/etc/bach.bachrc  #更改全部使用bash shell
新增至$HOME/.bashrc     #更改個別使用bash shell

更改完畢後需使用source 或 . 使起生效,如source /etc/profile 或 ./etc/profile

指令結果

2>/dev/null  (忽略錯誤結果)

掃毒

安裝

apt install clamav clamdscan clamav-daemon clamav-freshclam
clamscan -r --quiet -l (掃描log檔案路徑) --exclude-dir (不掃描資料夾路徑) (要掃描的地方)
clamdscan - < (要掃描的檔案路徑名單)
cat 要掃描的檔案路徑名單)| clamdscan -

clamdtop 類似htop模式
補充:
回傳值0(沒有病毒)1(有病毒)2(有錯誤) 
clamscan 與 clamdscan差異
clamscan較慢(單核運作)
clamdscan較快且常駐(多核運作、可用clamdtop看運作狀況)


背景執行

指令完後加"&"

多指令

1||2  (1成功就不執行2)
1&&2 (1成功就執行2)
1;2  (不管有無成功持續執行)

掛載遠端資料
sudo mount -t cifs -o username=<win_share_user>,password=<win_share_password> //WIN_SHARE_IP/<share_name> /mnt/win_share

使用fstab掛載

(來源路徑) (掛載地方) cifs defaults,uid=(本地使用者權限),gid=(本地群組權限),username=(帳號),password=(密碼),iocharset=utf8 0 0

EX:1.fstab無法掛載遠端資料夾時可以修改smb版本看看,加入vers={1.0:2.0:3.0}
   2.如果mount路徑有空格需要更換成\040

寄信mail

mail -s "This is the subject" somebody@example.com <<< 'This is the message' (直接輸入訊息)
mail -s "Hello World" user@yourmaildomain.com < /home/user/mailcontent.txt    (導入文件訊息)
echo "This is the message body" | mail -s "This is the subject" mail@example.com
mail -s "Hello World" user1@example.com,user2@example.com (多收件者)

-B (BCC收件者)
-C  (CC收件者)
-aFrom:Harry\<harry@gmail.com\> (寄件者顯示資訊)