天天看點

linux學習筆記(開發人員)linux學習筆記

系統的學習了下,之前都是哪裡不會百度哪裡,常用的指令也就那麼幾個,覺得具體學一下還是很有必要,雖然沒有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 撤銷操作

輸入模式

linux學習筆記(開發人員)linux學習筆記

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

自定義程式使用

mail

郵件日志

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

繼續閱讀