馬哥教育網絡班21期+第二周練習
目錄管理
-
ls (list):列出目錄及內容
ls [OPTION]... [FILE]... -l:長格式顯示文件的詳細屬性信息 -rwxr-xr-x. 1 root root 1273 Jul 10 19:45 anaconda-ks.cfg 第1段:文件屬性段 左起第一位:文件類型 -:普通文件 (file) d:目錄文件 (directory) b:塊設備文件 (block) c:字符設備文件 (character) l:符號鏈接文件 (symbolic link file) p:命名管道文件 (pipe) s:套接字文件 (socket) 后面9位:文件權限,稱為mode,每3位一組,每一組:rwx(讀,寫,執行) r:讀,Read w:寫,Write x:執行,Excute .:表示文件有隱藏屬性 lsattr命令可以查看 第2段: 數字1:文件被硬鏈接的次數 第3段: 第一個root:owner,屬主,文件擁有者 第4段: 第二個root:group,屬組,文件所屬的組 第5段: 1273:size,文件大小,默認單位:字節 第6段: Jul 10 19:45:timestamp,時間戳,文件最近一次被修改的時間 訪問:access 修改:modify 改變:change,metadata,元數據 第7段: anaconda-ks.cfg:文件名 -h,--human-readable:做單位換算,以容易理解的格式顯示文件大小,與 -l 一起使用 -a,--all:顯示所有文件,包括以 .開頭的隱藏文件 . :表示當前目錄 ..:表示父目錄 -A,--almost-all:顯示不包含 . 和 .. 以外的所有文件 -d,--directory:顯示目錄自身屬性,通常與 -l 一起使用 -i,--inode:index node,顯示文件的索引節點號 -r,--reverse:逆序顯示 -R,--recursive:遞歸顯示,顯示子目錄中的內容 示例: 列出當前目錄下所有文件和目錄的詳細信息,并轉換顯示大小(含隱藏文件) ls -alhR
-
cd:change directory,切換當前工作目錄
cd [dirName] cd 或 cd ~:進入當前用戶的主目錄 cd ~USERNAME:進入指定用戶的主目錄 cd -:在當前目錄和前一次所在目錄之間切換
-
pwd:查看當前工作目錄
pwd [OPTION]... -L:顯示當前工作目錄連接路徑,默認 pwd 同 pwd -L -P:顯示當前工作目錄的物理路徑
-
mkdir:創建空目錄
mkdir [OPTION]... DIRECTORY... -p:遞歸創建目錄,創建目錄時先創建父目錄 -v:顯示創建過程信息 示例: 創建目錄 /mnt/test/x/m,y mkdir -pv /mnt/test/x/m /mnt/test/y mkdir -pv /mnt/test/{x/m,y} /tmp下創建目錄 a_b,a_c,d_b,d_c mkdir -pv /tmp/{a,d}_{b,c} /tmp下創建以下樹形結構目錄: mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
-
tree:查看目錄樹
tree [OPTION...] [DIRECTORY...] -a:顯示所有文件及目錄 -d:只顯示目錄 -f:顯示完整路徑 -L level:顯示指定層級目錄樹 -P pattern:只顯示指定 pattern 匹配的路徑
-
rmdir:刪除空目錄
rmdir [OPTION]... DIRECTORY... -p:刪除子空目錄后父目錄為空時一并刪除 -v:顯示刪除過程信息
文件管理
-
文件命名規則
1、長度不能超過255個字節 2、不能使用 / 做文件名 3、嚴格區分大小寫
-
stat:顯示文件或文件狀態
stat [OPTION]... FILE... -f:顯示文件系統狀態 -t:以簡要信息顯示文件狀態值 三個時間戳: atime,access time:訪問時間,讀取文件內容 mtime,modify time:修改時間,改變文件內容(數據) ctime,change time:改變時間,元數據發生改變
-
touch:改變文件的時間戳,文件不存在創建文件
touch [OPTION]... FILE... -a:只改變訪問時間(atime) -c,--no-create:只改變文件時間戳,不創建文件 -m:只改變修改時間(mtime) -t STAMP:指定時間改變時間戳 [[CC]YY]MMDDhhmm[.ss] 示例: 在/tmp目錄下創建以file開頭,后跟當前日期和時間的文件,文件名格式如:file-1970-01-01-00-00-00 touch file-$(date +%F-%H-%M-%S) 或 touch file-`date +%F-%H-%M-%S` 修改file開頭的文件的時間戳,指定時間為 1970-01-01 00:00:00 touch -t 197001010000.00 file*
-
file:檢測文件類型
file [OPTION] FILE... -b:只列出文件類型,不顯示文件名 -f<FILENAME>:指定文件,其中有一個或多個文件名,依序列出文件名及檢測文件類型
-
cp:copy,復制文件或目錄
cp [OPTION]... SOURCE DESCRIPTION cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... -a,--archive:歸檔復制,保留所有文件權限 -p:保留源文件屬主、屬組、時間戳 -f,--force:忽略交互提示,強制復制 -i,--interactive:復制前交互提示 -r,-R,--recursive:遞歸復制目錄 -l,--link:只硬鏈接文件不復制 -s,--symbolic-link:只符號鏈接文件不復制 -L,--dereference:源為鏈接文件時,不復制文件鏈接屬性 -P,--no-dereference:源為鏈接文件時,復制文件鏈接屬性 示例: 歸檔/etc/rc.d/init.d 到/tmp 目錄下,歸檔名為init.d.bak cp -a /etc/rc.d/init.d /tmp/init.d.bak 復制/etc/inittab 到/tmp目錄下,重命名為 inittab.bak,保留原有屬性 cp -p /etc/inittab /tmp/inittab.bak 復制/tmp下a_b、a_c、d_b、d_c 到/tmp/bak 目錄下 cp -r /tmp/{a,d}_{b,c} /tmp/bak 復制/etc/rc.local 到/tmp目錄下,保留文件鏈接屬性 cp -P /etc/rc.local /tmp/rc.local 復制/etc目錄下passwd、inittab、rc.d/rc.local 到/tmp/bak目錄下,并使用 -t選項 cp -t /tmp/bak /etc/{passwd,inittab,rc.d/rc.local}
-
install:復制文件并設定權限
install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY... -d:創建目錄 -t:先指定目標目錄,再指定源文件信息 -g:設定文件屬組 -o:設定文件屬主 -m:設定文件擁有權限 示例: 創建目錄 /tmp/x/y/z 和 /tmp/x/m/n install -d /tmp/x/{y/z,m/n} 復制 /tmp/passwd 到 /tmp/x 目錄下,并指定文件屬主、屬組為 apache,文件權限為 700 install -g apache -o apache -m 700 /tmp/passwd /tmp/x
-
rm:刪除文件或目錄
rm [OPTION]... FILE... -f,--force:忽略交互提示,強制刪除 -i:刪除前交互提示 -r,-R,--recursive:遞歸刪除目錄
-
mv:move,移動文件或目錄
mv [OPTION]... SOURCE DESCRIPTION mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... -f,--force:覆蓋前不提示,強制覆蓋 -i,--interactive:覆蓋前提示 -t:先指定目標目錄,再指定源文件信息 示例: 移動/tmp/bak目錄下passwd、inittab、rc.local文件到 /tmp目錄下,并覆蓋/tmp/rc.local mv -f /tmp/bak/{passwd,inittab,rc.local} /tmp/
文本處理
-
cat:連接并顯示文本文件內容
cat [OPTION]... FILE... -E,--show-ends:顯示行結束符 -n,--number:顯示行號 示例: 查看/tmp/passwd文件內容,并輸出行號及行結束符 cat -nE /tmp/passwd 將/tmp/passwd、/tmp/inittab合并為 test文件 cat /tmp/passwd /tmp/inittab > /tmp/test
-
tac:逆序顯示文件內容
-
more:分頁顯示,默認向下翻頁
more [options] FILE [...] -d:顯示翻頁及退出提示 -number:指定每頁顯示的行數 +/:查找文件第一個出現指定字符串的行,并從該行前兩行開始顯示 +number:從指定行號開始顯示
-
less:分頁顯示,向下或向上翻頁
less [options] File... -e:文件顯示到最后時,自動退出 -N:顯示行號 鍵盤操作: h 查看幫助信息 q,Q 退出命令 b 向下一頁 d 向下半頁 u 向上半頁 y 向上一行 PgUp 向上一頁 PgDn 向下一頁 Space 向下一頁 Enter 向下一行
-
head:查看文件前N行
head [OPTION]... [FILE]... -n:指定顯示多少行,不指定時默認顯示 10行
-
tail:查看文件后N行
tail [OPTION]... [FILE]... -f:查看文件尾部,不退出,等待顯示后續追加至此文件的新內容 -n:指定顯示多少行,不指定時默認顯示 10行
-
cut:分段截取內容
cut [OPTION]... [FILE]... -d:指定字段分隔符,默認是空格 -f:指定顯示的字段 -f 1:顯示第一字段 -f 1,5:顯示第一和第五字段 -f 1-3:顯示第一到第三字段 示例: 以冒號為分隔符,顯示/etc/passwd文件中用戶及使用shell cut -d":" -f1,7 /etc/passwd
-
sort:文本排序
sort [OPTION]... [FILE]... -f,--ignore-case:忽略字符大小寫 -n,--numeric-sort:以數值大小排序 -r,--reverse:降序排序 -t:指定字段分隔符 -k:以指定字段進行排序 -u,--unique:排序后去重 示例: 以第三個字段對/etc/passwd文件進行排序 sort -t":" -k3 -n /etc/passwd
-
uniq:查找相鄰重復行
uniq [OPTION]... [FILE]... -c,--count:顯示重復行出現的次數 -d,--repeated:僅顯示重復行 -D:顯示所有重復的行 -u,--unique:僅顯示不重復的行 示例: 顯示當前系統中所有用戶使用的shell cut -d":" -f7 /etc/passwd | sort | uniq
-
wc:文本統計
wc [OPTION]... [FILE]... -c,--bytes:統計文件包含多少字節 -m,--chars:統計文件包含多少字符 -l,--lines:統計文件包含多少行 -w,--words:統計文件包含多少單詞 -L,--max-line-length:統計最長的一行包含多少字符 示例: 統計/etc目錄下以大小寫P 開頭的文件個數 ls /etc/[pP]* | wc -l
-
tr:轉換或刪除字符
tr [OPTION]... SET1 [SET2] -d:刪除字符集中出現的所有字符 示例: /tmp/passwd文件中所有字符替換為大寫 tr 'a-z' 'A-Z' < /tmp/passwd
bash特性
-
bash特性
1、命令歷史、命令補全 2、管道、重定向 3、命令別名 4、命令行編輯 5、命令行展開 6、文件名通配 7、變量 8、編程
-
命令執行狀態
echo $?:查看返回值 0表示成功 非0表示失敗
-
命令行編輯
光標跳轉 Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u:刪除光標至命令行首的內容 Ctrl+k:刪除光標至命令行尾的內容 Ctrl+l:清屏
-
命令歷史
history:查看命令歷史 -c:清空命令歷史 -d OFFSET [n]:刪除指定位置命令 -w:保存命令至歷史文件(.bash_history) 命令歷史使用技巧: !n:執行命令歷史中的第 n 條命令 !-n:執行命令歷史中倒數第 n 條命令 !!:執行上一條命令 !string:執行命令歷史中最近一條匹配 string 開頭的命令 !$:引用前一個命令的最后一個參數 !$ 同 {Esc,.} 或 {Alt+.} 命令補全:搜索PATH環境變量所指定的每個路徑下以給出的字符串開頭的可執行文件,如果有多個,使用兩次Tab可以顯示列表,否則直接補全 路徑補全:搜索給出的起始路徑下的每個文件名,并試圖補全
-
變量
環境變量 PATH:命令搜索路徑 HISTSIZE:命令歷史緩沖區大小(默認為 1000)
-
命令別名
定義別名 alias CMDALIAS='COMMAND [options] [arguments]' Shell中定義的別名的有效范圍僅限當前Shell進程 取消別名 unalias CMDALIAS
-
命令引用
命令替換:$(COMMAND) 或 `COMMAND` 支持的引號 (反引號)``:命令替換 (雙引號)"":弱引用,可以實現變量替換 (單引號)'':強引用,不進行變量替換
-
文件名通配
通配符號 *:任意長度的任意字符 ?:任意單個字符 []:匹配指定范圍內的任意單個字符 [abc],[a-z],[A-Z],[0-9],[a-zA-z],[0-9a-zA-Z] [:space:]:空白字符 [:punct:]:標點符號 [:lower:]:小寫字母 [:upper:]:大寫字母 [:alpha:]:大小寫字母 [:digit:]:數字 [:alnum:]:數字和大小寫字母 [^]:匹配指定范圍外的任意單個字符
練習
-
顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄
ls /var/l*[0-9]*[a-z] ls /var/l*[[:digit:]]*[[:lower:]]
-
顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
ls /etc/[0-9]*[^0-9] ls /etc/[[:digit:]]*[^[:digit:]]
-
顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄
ls /etc/[^a-zA-Z][a-zA-Z]* ls /etc/[^[:alpha:]][[:alpha:]]*
-
復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
cp -r /etc/p*[^0-9] /tmp/mytest1 cp -r /etc/p*[^[:digit:]]
-
復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
cp -r /etc/*.d /tmp/mytest2
-
復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
cp /etc/{l,m,n}*.conf /tmp/mytest3 cp /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:N21-garyshan,如若轉載,請注明出處:http://www.www58058.com/24420
寫的很好,把一些常用的命令都列舉出來了,有的問題還用了多種方法解答,值得表揚