第二周blog 作業
-
1
目錄管理命令:mkdir、rmdir
mkdir命令
mkdir - make directories mkdir [OPTION]... DIRECTORY... -P:子目錄創建完,再創建父目錄,遞歸創建 -m=MODE:設置文件權限 -v:顯示創建過程 example: # mkdir /tmp/sadan 在/tmp目錄下創建sadan目錄 # mkdir -Pv /tmp/a/b/c/d 在/tmp目錄下逐步創建d、c、b、a目錄并顯示過程
rmdir命令
rmdir - remove empty directories(刪除空目錄) rmdir [OPTION]... DIRECTORY... -P:遞歸刪除 -v:顯示執行過程 example: # rmdir /tmp/sadan 刪除/tmp下的sadan目錄 # rmdir -P /tmp/a/b/c/d 刪除/tmp下a、b、c、d目錄并顯示過程 注:rmdir只能刪除空目錄,目錄中有文件時,無法進行刪除。
文件管理命令:cp、mv、rm
cp命令
cp - copy files and directories 復制文件或目錄 cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 當目地為目錄: 將文件復制到目錄文件下 當目地為文件: 1 文件不能為目錄 2 只能是單個文件 文件復制到文件時,既是覆蓋操作(內容改變,文件名不變) -P:復制鏈接文件時,不復制鏈接文件的源文件 --preserve:指定復制的屬性(默認為mode,ownership,timestamps) -a:用于歸檔 -L:復制鏈接文件時,直接復制其源文件,但名稱為鏈接文件名 -r,R:遞歸復制 -i:交互式 example: # cp /etc/passwd /tmp 將passwd文件復制到/tmp目錄 # cp -r /etc/ /tmp 將/etc目錄復制到/tmp目錄中 # cp -P /dev/cdrom /tmp 復制鏈接文件 # cp -L /dev/cdrom /tmp 復制鏈接文件的目標文件 # cp /etc/passwd /tmp/sadan cp: overwrite `/tmp/sadan'? y 覆蓋文件
mv命令
mv - move (rename) files 移動或重命名文件 mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... -i:交互式 -f:強制 當mv對文件使用沒有移動其位置時,為修改名稱操作。 example: # mv /etc/fstab /etc/fstab_mv 修改/etc目錄下fstab文件名為fstab_mv # mv /etc/fstab /tmp 將/etc/fstab文件移動到/tmp目錄下
rm命令
rm - remove files or directories 刪除文件或目錄 rm [OPTION]... FILE... -r:遞歸操作 -f:強制 -i:交互式 example: # rm -i /etc/fstab rm: remove regular file `/etc/fstab'? 交互式刪除/etc/fstab文件,輸入y或n執行操作 # rm -f /etc/fstab 強勢刪除/etc/fstab文件且不提示 # rm -rf /etc 直接刪除/etc目錄以及子文件
文件查看命令:cat、tac、head、tail、more、less
cat命令
cat - concatenate files and print on the standard output 連接文件并輸出到標準輸出 cat [OPTION]... [FILE]... -n:顯示行號 -E:用$顯示換行符號 example: # cat -n /etc/fstab /etc/hosts 同時將兩文件顯示到終端并顯示行號 # cat -E /etc/hosts 將/etc/hosts文件內容輸出到終端并用$來顯示換行符號
tac命令
tac - concatenate and print files in reverse 相反輸出文件內容 tac [OPTION]... [FILE]... example: # tac /etc/hosts 顯示相反輸出的內容
head命令
head - output the first part of files 輸出文件最開始的部分 head [OPTION]... [FILE]... -n #:顯示多少行(默認10) example: # head /etc/passwd 顯示passwd文件前10行信息 # head -n 5 /etc/passwd 顯示passwd文件前5行信息
tail命令
tail - output the last part of files 輸出文件最后的部分 tail [OPTION]... [FILE]... -n #:顯示多少行(默認10) -f:跟隨文件更新 example: # tail /etc/passwd 顯示passwd文件最后10行 # tail -n 5 /etc/passwd 顯示passwd文件最后5行 # tail -f /etc/passwd //tty1 # echo "archlinux" >> /etc/passwd //tty2 兩個不同終端執行命令,一直查看tty1終端的界面,發現終端多了一行archlinux。
more命令
more - file perusal filter for crt viewing 逐頁閱讀文件(無法回看) more [options] file... example: # more /etc/passwd 查看passwd文件
less命令
less - opposite of more more的對立-(與more相似是分頁瀏覽,但是允許回看) less [options] file... example: # less /etc/passwd 查看passwd文件
-
2
bash的命令執行狀態保存在$?中,使用echo $? 就能夠顯示上一條命令的狀態返回值。
狀態返回值范圍:
0:成功
1-255:失敗bash的命令行展開 ~:自動到用戶家目錄 {}:花括號中的所有元素依次展開 example: # touch /tmp/{a,b}_{c,d} 其結果為 a_c,a_d,b_c,b_d
-
3
(1) mkdir /tmp/{a,b}_{c,d}
(2) 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}} -
4
元數據包含:權限,屬主屬組,時間戳,文件大小,文件類型等文件屬性
使用stat命令查看
如:
# stat /etc/passwd
修改文件時間戳使用touch命令 touch [options] file -a:僅修改訪問文件的時間 -m:僅修改修改文件的時間 -t STAMP:指定時間代替當前時間([[CC]YY]MMDDhhmm[.ss]) example: # touch -a -t 201612080038.38 /etc/passwd Access: 2016-12-08 00:38:38.000000000 +0800 修改其訪問時間為指定時間 # touch -m -t 201612080038.38 /etc/passwd Modify: 2016-12-08 00:38:38.000000000 +0800 修改其修改時間為指定時間
-
5
定義別名的命令是alias
alias-Define or display aliases 定義或顯示別名 alias [-p] [name[=value] ... ] example: # alias [-p] 顯示所有定義的別名 # alias rr='rm -rf' 將rm -rf 命令執行定義為rr 命令引用: ``: `date +"%y-%m-%d"` $ : $(date +"%y-%m-%d") example: # mkdir /tmp/sadan-$(date +"%y-%m-%d") # ls sadan-16-12-01
-
6
ls -d /var/l*[0-9][^0-9]
-
7
ls -d /etc/[0-9]*[^0-9] -
8
ls -d /etc/[^[:alpha:]][[:alpha:]]* -
9
mkdir /tmp/tfile-$(date +”%Y-%m-%d-%H-%M-%S”) -
10
cp -r /etc/p*[^0-9] /tmp/mytest1 -
11
cp -r /etc/*.d /tmp/mytest2 -
12
cp -r /etc/[lmn]*.conf /tmp/mytest3
find詳解
-
find命令用來做什么?
-
find命令作用機制
-
find命令的優缺點
-
find命令的使用
find命令用來做什么?
首先查看man文檔中find命令的介紹,search for files in a directory hierarchy,在目錄層級中查找文件。 由其意可知道該命令用來查找文件。
find命令作用機制
那么find命令是如何查找文件的呢? find命令使用的是遍歷查詢(逐個查找)的方法,在各個層級遍歷,最終找到目標文件。
find命令的優缺點
find命令有許多的條件限定,然后也是遍歷當前文件系統所查詢,因此有以下各優缺點: 優: 1 查找精確 2 實時查找 缺: 1 消耗資源,查詢所需時間稍久
### find命令的使用
格式: find [path...] [options] [tests] [actions] path:查找路徑;默認為當前目錄 options:選項,find的各類選項 tests:匹配文本條件 actions:查找之后find對查詢到的結果的執行動作 options: -maxdepth levels:查找的路徑最大層級深度 -mindepth levels:查找的路徑最小層級深度 example: 查看/etc下的一級子文件 # find /etc -maxdepth 1 tests: 文件名 -iname pattern:忽略大小寫 -name pattern:根據文件名查找 此處的pattern是globbing匹配的標準 example: 查詢以s或S開頭的文件 # find /etc -iname s* -regex pattern:基于正則表達式模式查找文件,匹配的是整個路徑,而不是文件名 example: 根據匹配條件匹配路徑 # find /etc -regex '.*ts' 權限 權限分三類:u、g、o -perm [-|/]mode mode:精確查詢,完全符合mode的文件 (如:222,匹配到的必須是222) /mode: 三類權限中一類中達到mode標準即可 (如:222,匹配到的可以是121、112、211、222等) -mode: 三類權限全部要達到標準 (如:222,匹配到的權限可以是222、333、444等等) example: 查找/var目錄下,所有用戶都是只讀權限的文件 # find /var -perm 222 查找/var目錄下,至少有一類用戶有讀權限的文件 # find /var -perm -222 查找/var目錄下,所有用戶有讀權限的文件 # find /var -perm /222 文件類型 -type #: b:block,塊設備文件 c:character,字符設備文件 d:directory,目錄 p:pipe,管道 f:regular file,文件 l:symbolic link,符號鏈接 s:socket,套接字文件 example: 查找/dev目錄下的字符設備 # find /dev -type c 文件屬主屬組: -uid n:查找屬主為指定uid的文件 -gid n:查找屬組為指定gid的文件 -nouser:查找沒有屬主的文件 -nogroup:查找沒有屬組的文件 -user username:查找指定屬主名的文件 -group groupname:查找指定屬組名的文件 example: 查找/etc目錄下uid為100的用戶所擁有的文件 # find /etc -uid 100 查找/etc目錄下沒有屬主的文件 # find /etc -nouser 查找/etc目錄下屬主名為sadan的文件 # find /etc -user sadan 以下參數代表意義: +n:大于n -n:小于n n:等于n 時間戳: 按天查詢: -atime [+|-]n -mtime [+|-]n -ctime [+|-]n 按分鐘查詢: -amin [+|-]n -mmin [+|-]n -cmin [+|-]n example: 查找/var目錄下,三天前訪問過的文件 # find /var -atime +3 查找/var目錄下,五天內修改過的文件 # find /var -mtime -3 查找/var目錄下, 昨天這個時間移動過的文件 # find /var -ctime 1 查找/var目錄下,一分鐘以前訪問過的文件 # find /var -amin +1 文件大小: -size [+|-]n[cwbkMG] example: 查找/etc目錄下大于7k的文件 # find /etc -size +7k 查找/etc目錄下小于10M的文件 find /etc -size -10M 查找/etc目錄下等于15b的文件 find /etc -size 15b actions: -delete:刪除查找到文件 -ls:相當ls -l命令,顯示文件長格式信息 -fls file:將查找文件顯示長格式并保存到指定文件中 -ok COMMAND {} \; 需要用戶進行確定之后再執行指定操作 -exec COMMAND {} \; 直接執行指定操作 其{}代表的是前面匹配到的內容 條件關系: ! | -not : ! expr2; 非 -o: expr1 -a expr2; 或 -a: expr1 -a expr2; 與 ()需要加\ 如:\(\) example: 查找/etc下,前天到今天為止訪問過的大小為4k的文件,并刪除 find /etc -atime -2 -a -size 4k -delete 查找/var目錄下屬主為root,且屬組為mail的所有文件,并顯示長格式信息 find /var -user root -a -group mail -ls 查找/var目錄下屬主不為root,且屬組不為mail的所有文件,并將查找到的文件保存到/tmp目錄中 find /var !\(-user root -o -group mail\) -fls /tmp 查找/etc目錄下大于1M且類型為普通文件,并讓交互式刪除 find /etc -size +1M -a -type f -ok rm -rf {} \; 查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限,將查詢到的文件改名為*.new find /etc/init.d -perm -111 -a -perm 002 -exec mv {} {}.new \;
原創文章,作者:N25_sadan,如若轉載,請注明出處:http://www.www58058.com/63319
贊,寫的非常詳細~繼續加油~