嗨,各位
昨天我們已經稍微揭開了Linux神秘(?)的面紗
今天要往更深層一點的地方探索啦
警告:今天內容會比較多(不然我感覺會寫不完XD)
shell,中文譯作"殼"或是"外殼"
當你(妳)在終端機敲下指令時,大致上是發生這些事情
大致上的情況是
如果要查看現在在使用的shell內建哪些功能可以使用"help"指令查看
help
而關於shell,我認為這些是最基本操作
變數
設定變數
變數名稱 = 內容
vp=1 teaching="linux"
取用變數的語法則是在變數名稱前加上"$"
$vp $teaching
這時侯如果用echo把它們印出來的話
echo $vp $teaching
會顯示這樣
1 linux
子指令
子指令如其名,也就是在指令裡面再塞一個指令
也就是說父指令會抓子指令執行後的回傳值變成自己執行的一部分
子指令的用法
指令 $(子指令)
這裡是一個很無感的範例XDecho $(whoami)
在這個範例裡,echo指令讀到whoami指令所回傳的使用者名稱並把它顯示在畫面上不過一般來說直接打whoami就好了
特殊的變數
在shell裡具有特殊意義的變數
顯示目前執行指令的地方(好比說bash或是腳本)$0
當腳本需要傳入參數的話可以這樣使用
第一個參數為1,第二個參數為2...以此類推$1 $2 $3
當你(妳)需要看指令或是應用程式的結束狀態碼時可以這樣用$?
一般執行成功時會把這個變數改為0
執行失敗則會改成其他數值(例如127)
而給shell執行的script(腳本)就叫"shell scrript"啦
shell scrript一般來說檔案的副檔名會以".sh"結尾而在腳本裡一般來說第一行會有這樣的東西
#!/bin/sh
在shell scrript中第一行的"#!"是用來指定用來執行的shell
而對於shell script最基本的用法就是把所有需要用的指令都放進去
好比說你(妳)想要在執行apt update後apt upgrade的話可以像這樣寫個簡單的sh
#!/bin/bash
sudo apt update
sudo apt upgrade
如果要把讓使用者輸入並存到變數的話可以這樣
(在畫面上顯示"請輸入提款卡密碼",並把使用者輸入的內容存到"password"變數中)read -p "請輸入提款卡密碼" password
而如果你(妳)有稍微學過一些程式或是指令的話
相信對於類似if、else、while這些東西不會太過陌生
而這些是它們的用法
if的寫法(注意,那個在判斷式前後的空格很重要 )
#!/bin/bash
if [ 判斷式 ] then
一些指令
else
一些指令
fi
成立時執行then後面的內容
除此之外執行else後的內容
以"fi"結尾
for的寫法
#!/bin/bash
for var in $(seq 1 5)
do
echo $var
done
以do開始,done結尾
while的寫法
#!/bin/bash
while [ 1 ]
do
當判斷式為True時持續執行
done
以do開始,done結尾
提到shell就不得不提到shell的設定到
以bash來說,你(妳)會看到在家目錄下有這樣的一個檔案".bashrc"
這個檔案就是在使用者開啟終端機時會載入的設定檔
裡面可以設定像是歷史紀錄大小或是歡迎訊息等相關設定
而如果有東西需要每次都設定的話也可以放這裡
像是我們前面提到的alias如果不想要每次重開終端機就失效的話,存這裡就對了
以我自己的alias來說,這些是我習慣的用法
alias python='python3.7'
alias pip='pip3'
alias cls='clear'
alias cd..='cd ..'
alias vpn='sudo openvpn --config /etc/openvpn/example/client.conf'
對於指令的紀錄我不太希望被刪掉,所以我會在rc裡設定一個蠻大的值
HISTSIZE=10000000
SAVEHIST=10000000
而以bash執行的歷史紀錄來說會存在"~/.bash_history"裡
以上這些就是關於"shell"的簡單介紹啦
↓寫這篇文章的時候在聽的歌
Some - BOL4
那我們明天見嘍,88