系統的學習了下,之前都是哪裡不會百度哪裡,常用的指令也就那麼幾個,覺得具體學一下還是很有必要,雖然沒有linux管理者學習那麼深,但是作為開發人員我覺得還算夠用。
linux作為一個作業系統核心,市面上有很多他的發行版本,如RedHat、CenOs、Ubuntu等,下面練習環境為centos
/bin 可執行指令的檔案位置 類似于win下的system32目錄
/sbin 超級管理者的可執行指令目錄
/lib 系統函數庫,類似win存dll的位置
/etc 配置檔案存放目錄
/home 各賬号預設目錄
/root root賬号預設目錄
/opt 應用安裝包存放位置
/usr 應用安裝位置,類似win預設的Program Files
/var 變化的檔案存放位置,經常存日志啥的
/tmp 臨時檔案存放位置
/mnt 預設挂載目錄,共享檔案夾,鏡像
/media 挂載CD光牒、u盤啥的
/dev 系統硬體管理區
/proc 虛拟目錄,系統記憶體映射,系統資訊,别動
/boot bios系統存放位置,别動
/lost+fount 系統異常後,異常檔案存儲 别動
/srv 系統相關 别動
/sys 系統相關 别動
vim分三個模式,底線指令模式,指令模式,輸入模式
底線指令行模式 輸入ESC 後,再輸入冒号,切換到底線指令行模式
set nu 顯示文本行号
set nonu 關閉文本行号
/關鍵字 搜尋關鍵字,回車執行搜尋,n查找下一處 N查找上一處
wq! w 寫入 q儲存 !強制 儲存并強制退出
指令模式 預設vim進入的就是正常模式,其他模式下ESC退回指令模式
dd 删除一行 , 4dd 就是删除4行
yy 複制一行,5yy 就是複制5行,p進行粘貼
i 目前光标開始插入,進入輸入模式
o 換行插入,進入輸入模式
gg 回到文檔首行
G 拉倒文檔尾部
x 删除光标所在字元
u 撤銷操作
輸入模式
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNykTMyYjMzEzMwUDNyYTMvwFNyYDMxIDMy8CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
shutdown -h now 立刻關機 h代表 halt
shutdown -h 1 一分鐘後關機,并通知其他使用者
shutdown 預設執行 shutdown -h 1
halt 就是調用shutdown -h
sync 存儲資料存到磁盤 關機重新開機前可執行
reboot 立即重新開機
具體關機指令之間的關系和不同,可參考網上其他資料
su - 使用者 切換到某使用者下
logout 登出使用者(套娃式往上一層退,比如目前登入zhangsan, su - root後,執行logout會回到zhangsan,在執行logout就會退出系統) 圖形化作業系統界面中調用的終端用此指令無效
exit 圖形化作業系統推出終端頁面,遠端登入效果和logout一樣
useradd lisi 添加使用者lisi,同時立即在/home 下生成lisi伴生的目錄,也是lisi登入後的預設目錄,預設也會生成同名的伴生角色組(group)
useradd -d /home/test wangwu 建立使用者同時,更改伴生目錄名稱
passwd lisi 給李四設定新密碼, 後面不跟使用者就是改目前登入使用者的密碼
userdel lisi 删掉使用者,保留伴生目錄
userdel -r lisi 此指令删除使用者sam在系統檔案中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時删除使用者的主目錄。
id lisi 檢視李四賬号的資訊
whoami/who am i 目前登入的使用者
groupadd china 建立組(角色)
groupdel china 删除組(角色)
useradd -g china lilei 建立新使用者lilei 到角色組china中
usermod -g Japan lilei 更改lilei的使用者組
usermod -d /home/magua lilei 更改預設home位置
/etc/passwd 存放使用者資訊的配置檔案
/etc/shadow 存放密碼的配置檔案
/etc/group 角色組的配置檔案
正常檔案有檔案所有者、檔案所在組、其他組的概念,正常通過ll 指令就能看的到檔案的權限歸屬等
檔案所有者 哪個使用者建立的 預設就是檔案所有者, 可以通過 chown [使用者] [檔案] 進行轉讓 (change owner)
檔案所在組 預設建立檔案的那個使用者所在的組, 可以通過 chgrp [組名] [檔案] 進行轉讓 (change group)
其他組 非檔案所在組的其他所有組
通過ll指令或是ls -lh可以看到檔案的對應所有者及權限
檔案權限 10個字元 -rw-r--r--
第0位 檔案類型符号
'-' 一般檔案
l 軟連接配接
b 塊裝置,硬碟啥的
c 字元裝置檔案 滑鼠鍵盤啥的
d 目錄
第1-3位 檔案所有者權限
第4-6位 檔案所在組權限
第7-9位 其他組權限
r read 隻讀權限 r=4 ,如果目錄沒有r 權限, 則ls 指令在此目錄不生效
w write 檔案修改權限|目錄修改權限,目錄有w權限,則代表目錄中檔案可以删除,跟目錄中檔案權限無關
x 檔案執行權限|目錄進入權限 x=1 , 目錄的x權限代表使用者是否可以進入目錄中
檔案權限修改指令
chmod change mode 修改權限 u 所有者 g 所在組 o 其他組 a 所有人
chmod u=rwx,g=rx,o=r hello.txt 更改檔案權限,數組表示相當于 754
chmod u-x,g+w hello.txt 所有者去除執行權限,所在組增加寫權限
chmod a-x hello.txt 所有使用者去除執行權限
chmod 754 hello.txt 三個數字代表三組,每個數字為rwx代表數字相加之和
控制檔案屬性,禁止修改、删除等
chattr chattr [-RV][-v<版本編号>][+/-/=<屬性>] [檔案目錄檔案名]
a:讓檔案或目錄僅供附加用途。
b:不更新檔案或目錄的最後存取時間。
c:将檔案或目錄壓縮後存放。
d:将檔案或目錄排除在傾倒操作之外。
i:不得任意更動檔案或目錄。 chattr +i /etc/passwd 禁止改動檔案 -i 解鎖
s:保密性删除檔案或目錄。
S:即時更新檔案或目錄。
u:預防意外删除。
-R 遞歸處理,将指定目錄下的所有檔案及子目錄一并處理。
-v<版本編号> 設定檔案或目錄版本。
-V 顯示指令執行過程。
+<屬性> 開啟檔案或目錄的該項屬性。
-<屬性> 關閉檔案或目錄的該項屬性。
=<屬性> 指定檔案或目錄的該項屬性。
0 關機
1 單使用者(找回密碼)
2 多使用者沒有網
3 多使用者有網 常用
4 保留
5 圖形化 常用
6 重新開機
init 各級别之間切換
man ls 展示ls指令的詳細說明文檔
help cd 獲得cd指令的幫助文檔, help是擷取shell内置指令的幫助,man則可以擷取後安裝軟體的一些指令
pwd 展示目前位置絕對路徑
ls 顯示目前目錄所有檔案和目錄
cd [目錄名] 目錄切換
mkdir [目錄名] 建立目錄 -p 建立多級目錄
rmdir [目錄名] 僅能删除空目錄
touch [檔案名] 建立一個空檔案
cp [原路徑位址] [目的路徑位址] 拷貝 -r 遞歸;強制不提示覆寫 \cp
rm [檔案名] 删除檔案或目錄 -r 遞歸(recursion) -f 強制不提示(force)
mv [old] [new] 剪切或重命名
cat [檔案名] 檢視檔案内容 -n 顯示行号
awk AWK 是一種處理文本檔案的語言,是一個強大的文本分析工具 awk '{print $1,$4}' log.txt
cut 文本切割
-b :以位元組為機關進行分割。這些位元組位置将忽略多位元組字元邊界,除非也指定了 -n 标志。
-c :以字元為機關進行分割。
-d :自定義分隔符,預設為制表符。
-f :與-d一起使用,指定顯示哪個區域。
-n :取消分割多位元組字元。僅和 -b 标志一起使用。如果字元的最後一個位元組落在由 -b 标志的 List 參數訓示的
範圍之内,該字元将被寫出;否則,該字元将被排除
more [檔案名] 分頁檢視檔案 可以和cat組合使用 cat --n [檔案名] | more
uniq 檢查及删除文本檔案中連續重複出現的行列,一般與 sort 指令結合使用。
-c或--count 在每列旁邊顯示該行重複出現的次數。
-d或--repeated 僅顯示重複出現的行列。
-u或--unique 僅顯示出一次的行列。
sort 排序
-b 忽略每行前面開始出的空格字元。
-c 檢查檔案是否已經按照順序排序。
-d 排序時,處理英文字母、數字及空格字元外,忽略其他的字元。
-f 排序時,将小寫字母視為大寫字母。
-i 排序時,除了040至176之間的ASCII字元外,忽略其他的字元。
-m 将幾個排序好的檔案進行合并。
-M 将前面3個字母依照月份的縮寫進行排序。
-n 依照數值的大小排序。
-u 意味着是唯一的(unique),輸出的結果是去完重了的。
-o<輸出檔案> 将排序後的結果存入指定的檔案。
-r 以相反的順序來排序。
-t<分隔字元> 指定排序時所用的欄位分隔字元。
+<起始欄位>-<結束欄位> 以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。
less [檔案名] 分頁檢視檔案,相當于more plus++ ,大檔案懶加載,效率高;pageup down 翻頁;/n N 查找
echo 輸出字元串或環境變量到控制台;
head -n 6 [檔案名] 檢視某檔案前6行, 預設 head [檔案名]是 -n 10 顯示前10行
tail -n 8 [檔案名] 檢視檔案尾多少行,預設10行;-f 動态檢視
'>' 輸出重定向, 覆寫寫 如 echo "hello" > a.txt 檔案不存在則建立;可用于儲存日志,複制檔案,清空檔案等
'>>' 追加寫入 如 echo "world" >> a.txt 檔案不存在則建立
ln -s [源檔案、目錄] [連結名] 建立軟連接配接或符号連結,删除和正常檔案删除一樣
history 檢視執行過得曆史指令;history 10 最近10條; !387 重新執行一下 編号為387的指令
date 顯示目前日期
date “+%Y-%m-%d %H:%M:%S” 2021-06-01 15:54:01
date -s "2021-06-01 15:54:01" 改時間
cal 顯示當月月曆
cal 2020 顯示2020年全月月曆
cal 6 2020 顯示2020年6月
find path -option [ -print ] [ -exec -ok command ] {} \; 遞歸查找指定目錄下的檔案和目錄 後選跟執行指令
find /opt -name *.txt -exec -lh {} \; 查找opt下 所有字尾為txt的檔案,并展開資訊
find /opt -size +200M 查找opt下超過200M的檔案 +大于 -小于 不寫 等于;(機關c/k 位元組 M G 不寫機關預設塊 1塊=521k)
find /opt -user root 查找opt下所有屬于root的檔案 檔案多 可以配合 | more 分頁檢視
find . -mtime +7 查找目前目錄改動時間7天以前的檔案 +n -n
find . -cmin -9 查找目前目錄9分鐘以内建立的檔案 +n -n
find . -type b/d/c/p/l/f 根據類型查找檔案 (裝置、目錄、字元裝置、管道、符号連結、普通檔案)
find . -empty 空檔案
find . -perm 755 檢視權限為755的檔案
locate [檔案名] 基于檔案資料庫搜尋檔案所在路徑,搜尋前要更新資料庫updatedb,要不然資料不準
which [指令] 檢視指令所在位置
grep 是一種使用正規表達式的多用途文本搜尋工具(global search regular expression(RE) and print out the line)
grep -n "yes" /home/hello.txt 或者 cat /home/hello/txt | grep "yes" 找到含yes的行并顯示行号
grep -v 反向比對
gzip [檔案名] 壓縮檔案,僅支援壓縮檔案,夾不支援 ,壓縮字尾為.gz 源檔案消失
gunzip [*.gz] 解壓檔案
zip [壓縮後檔案名] [壓縮檔案或目錄]
unzip -d [解壓後目錄] [*.zip]
tar -option [壓縮後檔案名.tar.gz] [壓縮檔案或目錄] 打包或是解壓 同一個指令;tar -zxvf xxx.tar.gz -C /zzz/bbs
-c或--create 建立新的備份檔案
-v或--verbose 顯示指令執行過程。
-z或--gzip或--ungzip 通過gzip指令處理備份檔案
-f <備份檔案>或--file <備份檔案> 指定備份檔案
-x或--extract或--get 從備份檔案中還原檔案。
tar -xzvf filename.tar 解壓
tart -czvf filename.tar dirname 打包壓縮
linux 背景存在一個crond的任務,監聽crontab檔案,我們可以在crontab檔案中編寫腳本,定時執行周期性任務
crontab
-l 展示任務檔案中的所有内容
-e 編輯目前使用者的定時任務檔案
-r 删除目前使用者所有定時任務
crontab 定時任務占位符說明
位置
含義
範圍
第1位*
一小時中的第幾分
0-59
第2位*
一天中的第幾小時
0-23
第3位*
一月中的第幾天
1-31
第4位*
一年中的第幾月
1-12
第5位*
一周的星期幾
0-7(0和7都是星期日)
crontab 特殊符号說明
符号
*
如第1個*,代表每小時每分鐘都執行
,
代表多個時間段,如 0 7,9,15 * 就是每天 的7 9 15點都執行
-
代表連續時間段,如 0 7-9 * 就是每天 的7 8 9點都執行
*/n
代表 每隔多長時間執行一次 /10 * 代表每10分鐘執行一次
ps -ef|grep atd 先看看程序開沒開,at指令 ,臨時執行任務,執行一次後消失
at [日期] 回車後[指令] 兩次ctrl D 結束編輯
at now+1min echo hello > /tmp/hello.txt 1分鐘後執行
at 20:00 2008-10-1 在具體時間執行
at 17:00 tomorrow 明天下午五點執行
at 6:00 pm + 3 days 在3天後下午6點執行
at 23:00 < a.txt 将a.txt導入
at -l 或 atq 查詢未執行的臨時任務
at -r 或 at -d 或 atrm [任務号] 删除任務
linux管理日志的程序為rsyslogd,程序配置檔案為/etc/rsyslog.conf,可從配置檔案看出系統日志基本都在/var/log下
第1個星号代表日志類型
日志類型
日志内容
auth
使用者認證時産生的日志
authpriv
ssh、ftp等登入資訊的驗證資訊
daemon
一些守護程序産生的日志
ftp
FTP産生的日志
lpr
列印相關活動
mark
服務内部的資訊,時間辨別
news
網絡新聞傳輸協定(nntp)産生的消息。
syslog
系統日志
security
uucp
Unix-to-Unix Copy 兩個unix之間的相關通信
console
針對系統控制台的消息。
cron
系統執行定時任務産生的日志。
kern
系統核心日志
local0~local7
自定義程式使用
郵件日志
user
使用者程序
第2個星号代表日志級别
日志等級
說明
7
emerg
緊急情況,系統不可用(例如系統崩潰),一般會通知所有使用者。
6
alert
需要立即修複的告警。
5
crit
危險情況,例如硬碟錯誤,可能會阻礙程式的部分功能。
4
error/err
一般錯誤消息。
3
warning/warn
警告。
2
notice
不是錯誤,但是可能需要處理。
1
info
通用性消息,一般用來提供有用資訊。
debug
調試程式産生的資訊。
none
沒有優先級,不記錄任何日志消息。
簡單了解就是日志備份切割,基本原理是crond定時任務發起,由/etc下cron.daily 、cron.weekly 這種每天或每周等定時任務調用/etc/logrotate.conf
配置參數
compress
通過gzip壓縮轉儲以後的日志
nocompress
不壓縮
copytruncate
用于還在打開中的日志檔案,把目前日志備份并截斷
nocopytruncate
備份日志檔案但是不截斷
create *mode owner group*
轉儲檔案,使用指定的檔案模式建立新的日志檔案
nocreate
不建立新的日志檔案
delaycompress
和 compress 一起使用時,轉儲的日志檔案到下一次轉儲時才壓縮
nodelaycompress
覆寫 delaycompress 選項,轉儲同時壓縮。
errors address
專儲時的錯誤資訊發送到指定的Email 位址
ifempty
即使是空檔案也轉儲,這個是 logrotate 的預設選項。
notifempty
如果是空檔案的話,不轉儲
mail *address*
把轉儲的日志檔案發送到指定的E-mail 位址
nomail
轉儲時不發送日志檔案
olddir *directory*
轉儲後的日志檔案放入指定的目錄,必須和目前日志檔案在同一個檔案系統
noolddir
轉儲後的日志檔案和目前日志檔案放在同一個目錄下
prerotate/endscript
在轉儲以前需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行
daily
指定轉儲周期為每天
weekly
指定轉儲周期為每周
monthly
指定轉儲周期為每月
rotate count
指定日志檔案删除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
tabooext [+] list
讓logrotate不轉儲指定擴充名的檔案,預設的擴充名是:.rpm-orig, .rpmsave, v, 和 ~
size size
當日志檔案到達指定的大小時才轉儲,bytes(預設)及KB(sizek)或MB(sizem)
missingok
在日志輪循期間,任何錯誤将被忽略,例如“檔案無法找到”之類的錯誤。
日志管理工具journalctl是centos7上專有的日志管理工具,記憶體日志,重新開機後清空,配置檔案 /etc/systemd/journald.conf,7專有不過多描述
linux系統上磁盤、分區、目錄的關系
磁盤(硬碟)-->多分區( 1-4 )-->分區挂載目錄;分區是實體上的區分,目錄是邏輯上的區分
磁盤類型:IDE和SCSI,SCSI比IDE的貴也好,常用的基本都是SCSI,IDE驅動器辨別為hdx~,SCSI為sdx~
字元
hd 或sd
表明磁盤類型 hd代表IDE,sd代表SCSI
x
a基本盤,b基本從屬盤,c輔助主盤,d輔助從屬盤
~
分區标志,前4個分區就是1-4,比如sda1意思就是SCSI類型主盤的第一個分區
lsblk 檢視磁盤挂載情況 (list block)
lsblk -f 檢視檔案系統格式 及 分區唯一UUID
這個是在虛拟機的可視化界面操作,新增盤需要重新開機機器lsblk才會顯示,此處不示範
加入新增一塊盤後,可以用lsblk 看到有盤但是沒有分區,也沒有挂載目錄,假設盤名為 sdb,開始建立分區
指令操作後,lsblk 會看到sdb1的分區,此時有分區也暫時不能挂載,還需要格式化
格式化後用lsblk可以看到,系統為分區配置設定了UUID,此時可以挂載目錄了
指令行挂載,系統重新開機後挂載失效
編輯/etc/fstab 檔案,新增一行後,mount -a 生效,重新開機也行
df 檢查檔案系統的磁盤空間占用情況。常用df -hT
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-T :顯示檔案系統類型, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
du 檢查具體目錄空間占用情況 du -h --max-depth=1 /opt
--max-depth 目錄深度
-h 以人們較易讀的容量格式 (G/M) 顯示
-s 顯示目錄總共占多少,不列出子目錄
ls -Rl /opt |grep "^-" | wc -l 查詢opt下所有普通檔案個數,包括子目錄下面的檔案
ps -aux 檢視所有程序 aux是一個指令 不是三個,輸出格式; 程序名稱後面的字母d,代表deamon 守護程序
ps -ef |grep php 也是查所有程序,用grep過濾了一下
kill [-9] pid 殺程序 其中9就是信号
killall 程序名或父程序id 殺一片 ,比如nginx
pstree 樹狀檢視程序 -u 顯示程序使用者 -p顯示pid
top 動态檢視程序、記憶體狀态 預設3秒一刷, -d 可以改時間 top顯示時候: P按cpu M按記憶體排序;u 檢視指定使用者程序 k 殺程序 -9
iotop io狀态 指令如果沒有需要安裝
service [服務名] start|stop|status|reload|restart 服務的開停、檢視狀态等,centos 7.0以後服務指令為systemctl
chkconfig centos 6版本 管理服務開機啟停指令
chkconfig --list | [grep ] 檢視所有服務 開閉情況
chkconfig [服務名] on/off 開機自啟停服務 重新開機後生效
systemctl start|stop|status|reload|restart [服務名] 7版本啟停
systemctl centos 7版本 管理服務開機啟停指令
systemctl enable/disable [服務名]
systemctl list-unit-files | [grep] 開啟自啟動清單
systemctl is-enable [服務名] 檢視是否開機自啟動
setup 啟動視窗檢視linux 防火牆、網絡配置、服務啟動情況等,界面操作,可檢視開機自啟動的服務
netstat -anp | more 檢視端口情況 netstat -tnulp 端口占用
iptables centos 6版本防火牆名稱
firewalld centos 7版本防火牆名稱
rpm(英文全拼:redhat package manager)
rpm -qa|grep xx 查詢是否安裝了某個rpm包
q 使用詢問模式
-qi 顯示套件的相關資訊 rpm -qi firefox 檢視firefox的軟體詳情
-i rpm -i xxx.rpm 安裝 pm -ivh xxxxx.rpm 安裝軟體包 v提示 h進度條
-U 更新指定的套件檔 rpm -U xxx.rpm 更新
-l 顯示套件的檔案清單 rpm -ql firefox 檢視火狐 安裝後檔案都在哪
-f 查詢擁有指定檔案的套件 rpm -qf /etc/passwd 檢視這個檔案屬于哪個安裝包
-e 删除(erase)指定的套件 rpm -e --nodeps xxx.rpm
yum [options] [command] [package ...] 基于 RPM 包管理,可以處理級聯依賴關系,類似maven 、npm
yum list app* 查找app開頭的npm包
yum install xxx 安裝
國内 yum 源
将yum源設定為163 yum,可以提升軟體包安裝和更新的速度,同時避免一些常見軟體版本無法找到。
安裝步驟
首先備份/etc/yum.repos.d/CentOS-Base.repo
下載下傳對應版本 repo 檔案, 放入 /etc/yum.repos.d/ (操作前請做好相應備份)
CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
運作以下指令生成緩存
0-9個級别,0是全量備份,後續都是增量,隻對分區級别有增量一說,單獨檔案或檔案夾隻能是全量備份,也就是0級别;
增量備份0-9是個遞歸方式,第一次是0,第二次1,第三次是2,然後是9,然後又是0,循環備份,配置crond可以做到無人值守備份。
dump
-0123456789 備份的層級。
-f 備份後檔案名
-j 調用bzlib 壓縮
-u 備份完畢後,在/etc/dumpdates中記錄備份的檔案系統,層級,日期與時間等。
-W 展示/etc/dumpdates檔案内容
根據備份檔案恢複
restore
-C 對比備份檔案和原檔案的差別,顯示差異
-i 互動模式還原,還原一個問一個
-r 還原内模式
-t 檢視備份檔案裡有啥
-f 指定 備份檔案
shell 是使用者操作linux的橋梁,正常使用者敲指令給linux核心,核心是不懂什麼意思的,shell在這裡做一個雙向翻譯的工作。
分為系統變量和自定義變量,系統變量如$HOME,$PATH等,編碼大多用自定義變量
1.變量與值之間不能有空格 如A=100
2.變量名可以字母下劃線數字混合,但不能以數字開頭,盡量大寫變量名
3.變量使用應該以$+變量名進行使用,以區分正常字元串
将指令的傳回值賦給變量 ``包裹,或用$()包裹
在/etc/profile中編寫 export 變量名=變量值 儲存後,source /etc/profile 立即生效,echo 變量名檢視
位置變量及預定義變量
$0:Shell 的指令本身
$1到9:表示 Shell 的第幾個參數 10以後 ${10}
$#:傳遞到腳本的參數個數,${#變量名}擷取變量長度
$$:腳本運作的目前程序 ID 号
$*:以一個單字元串顯示所有向腳本傳遞的參數
$@: 以數組形式顯示所有向腳本傳遞的參數
$? :顯示最後指令的執行情況
$!:背景運作的最後一個程序的 ID 号 背景方式運作 指令後 跟 & 如 ./hello.sh &
$-:顯示 Shell 使用的目前選項
三種寫法,計算 (2+3)*4
if 條件用[ 條件判斷式 ]來包裹表達式,判斷式與[]兩邊必須有空格,不為空表示true ,反之false,常用在條件判斷式符号如下
= 字元串比較是否相等
-lt 小于 less then
-le 小于等于 less then or equals
-gt 大于 greater then
-ge 大于等于 greater then or equals
-eq 等于 equals
-ne 不等于 not equals
-f 檔案存在 且是個正常檔案
-e 檔案存在
-d 檔案存在 且是個目錄
具體文法
兩種用法
執行指令及結果
basename /opt/tomcat/bin/startup.sh .sh 傳回的就是startup ,不加字尾 就是startup.sh
dirname /opt/tomcat/bin/startup.sh 傳回/opt/tomcat/bin