標籤:dup 刪除空目錄 大小 檔案內容 沒有 重複 絕對路徑 捷徑 obb
shell中bash的特性
shell中bash的特性
bash特性之一:命令列展開
把命令列的給定的一個特殊符號自動替換為別的字串的機制
目錄:
命令:cd 【內建命令】
工作目錄:當前所處的目錄
cd:change directory(切換目錄)
cd 目標路徑(不能是一個檔案必須是一個目錄)
所有從根起始的都是絕對路徑:/檔案名稱
基名:路徑最後一個檔案的名字
/x/y/z/m/n: 目標路徑
/x/y/z/m: 是目錄名或者路徑名
兩個命令:
擷取路徑的基名: # basename
擷取路徑的目錄名:# dirname
注意: 檔案名稱可以使用除/(路徑分割符)以外的任一字元(空白符也是可以),但是不要使用特殊字元,且總長度不能超過255個
嚴格區分大小寫
注意:~ 相當於 /home
如果要切換到根目錄下的目錄具體操作:# cd /USERNAME(可以是空檔案或者目錄)【只有管理員可以此操作】
如果要切換到家目錄具體操作:# cd 或者 # cd ~
如果要切換到家目錄下的目錄具體操作:# cd ~USERNAME(可以是空檔案或者目錄)【只有管理員可以此操作】
# cd - :返回上一次所在的目錄
# cd . : 切換到目前的目錄
# cd .. :切換到父目錄(若目前的目錄為“/“,則執行完後還在“/";".."為上級目錄的意思)
# cd ../.. :切換上兩級目錄;
# cd !$ :把上個命令的參數作為cd參數使用
{}:可承載一個以逗號分隔的路徑列表,能夠將其展開為指定的多個路徑;
例如:
/tmp/{a,b,c} /tmp/a /tmp/b /tmp/c
/tmp/{a,b}/z /tmp/a/z /tmp/b/z
# pwd:顯示目前的目錄 print working directory
# mkdir:建立目錄 make directory
-p: 先建立父目錄
-v:顯示詳細資料
# rmdir:刪除空目錄 remove directory
命令:ls
# ls : 查看檔案(注意:在一個目錄下的其他目錄都是該目錄的檔案,一切皆檔案
bash特性之二:shell的引用
‘‘:強引用,變數替換不會進行
"":弱引用,能夠執行變數替換
``:命令引用(替換),引用命令的執行結果,命令替換的另外一符號:$(命令)
變數替換:${變數名}
# echo : 回顯變數值
命令引用:
bash的特性之三:命令曆史
bash儲存的過去曾經執行的命令的列表
當前shell進程儲存在緩衝區中
緩衝區中的命令會在shell退出時儲存至檔案中,.bash_history
使用上下方向鍵可以翻看此前曾經執行過的命令
history捷徑:
!#: #為命令曆史列表中的命令編號,可用執行第#條命令
!!: 執行上一條命令(重複執行,執行過的命令)
!-#: 執行命令曆史列表中的倒數第#條命令
!string: 執行命令曆史列表中最近一次以string開頭的命令
!$: 引用上個命令的最後一個參數 先按ESC,再按.
history常用選項:
-c : 清空列表
-d# : 刪除指定的曆史命令
-a : 追加當前會話的命令曆史到曆史檔案中
-n : 從曆史檔案中讀取所有未被讀取的行
-r : 讀取曆史檔案並將內容追加到曆史列表中
命令曆史相關環境變數:
HISTSIZE:命令曆史中可以儲存的命令的個數
HISTFILE:命令曆史檔案
HISTFILESIZE:命令曆史檔案可以儲存的命令的個數
HISTCONTROL:控制命令曆史產生
ignoredups:忽略記錄重複的命令,連續相同命令才為重複
ignorespace:不記錄以空白字元開頭的命令
ignoreboth:同時具有以上值的特性
補充:Linux檔案系統的另外一特性:以點號開頭的檔案為隱藏檔案:# ls -a:才能查看隱藏檔案
# cat 查看文字檔內容
shell中的變數賦值:
變數名=值
注意:變數在賦值時不能使用$,而$只在變數替換時使用
變數名只能包含字母,數字和底線,而且不能以數字開頭
變數名區別大小寫:
bash的特性之四:命令別名(alias)
alias :顯示當前shell中定義的所有別名
命名別名
# alias 別名=‘原始命令‘(沒有空格可以不加引號)
撤銷別名
# unalias 別名
bash的特性之五:globbing, 檔案名稱通配
萬用字元:
*:匹配任意長度的任一字元
abc abb abm xab ab
ab*
*ab
*ab*
?: 匹配任意單個字元(全檔案名稱精確匹配)
[]: 匹配指定字元範圍內的任意單個字元
a[xyz]b:
[a-z]
[A-Z]
[0-9]
[0-9a-zA-Z] 預設情況下是不區分大小寫
[[:upper:]] = [A-Z] 所有大寫字母
[[:lower:]] 所有小寫字母
[[:alpha:]] 所有字母表
[[:digit:]] 所有數字
[[:alnum:]] 所有字母表+數字
[[:space:]] 所有空白符
[[:punct:]] 所有標點符號
[^]: 匹配指定字元範圍外的任意單個字元
[^0-9]=[^[:digit:]]
練習:
複製/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現一位元字的檔案或目錄至/tmp下
l*[0-9]*[[:lower:]]
1、複製/etc目錄下以p開頭,中間跟了任一字元,並以d結束的檔案至/tmp目錄中:
2、複製/etc/目錄下以p開頭,中間跟了4個任一字元,並以d結尾的檔案至/tmp/a目錄中:如果a不存在,先建立出來
3、複製/etc/目錄下以任意一位元字開頭,並以非數字結尾的檔案至/tmp/b目錄下
4、複製/etc/目錄下以非字母開頭,後面跟了一個字母及其他任何長度字元的檔案至/tmp/c目錄中
1、cp -r /etc/p*d/tmp
2、cp -r/etc/p????d /tmp/a
3、cp -r/etc/[0-9]*[^0-9]/tmp/b目錄下
4、cp -r/etc/[^[:alpha:]][[:aipha:]]*/tmp/c
5、自學——Linux的學習進度與任務【shell中bash的特性】