馬哥教育網絡班21期+第2周課程練習
1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
cp:copy,復制文件
cp SRC DEST SRC為文件
如果目錄不存在:新建DEST,并將SRC中內容填充至DEST中
如果目錄存在:
如果DEST是文件:將SRC中的內容覆蓋至DEST中,建議使用-i選項
如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中
cp SRC… DEST SRC…:多個文件
DEST必須存在,且為目錄,其他情形均會出錯;
cp SRC DEST SRC是目錄:使用選項 -r
如果DEST不存在:則創建指定目錄,復制SRC目錄中所有文件至DEST中;
如果DEST存在:如果DEST是文件,報錯;如果DEST是目錄,DEST中創建一個與SRC同名的目錄并將SRC中內容復制到新目錄中
常用選項
-i:交互式
-r/-R:遞歸復制目錄及內部的所有內容
-a:歸檔復制,保存文件的所有屬性,相當于-dR –preserv=all
-d:不追蹤符號鏈接,–no-dereference –preserv=links
–preserv[=ATTR_LIST]
mode:權限
ownership:屬主屬組
timestamp:時間戳
links:符號鏈接
xattr:擴展屬性
context:上下文
all:所有屬性
-P:相當于–preserv=mode,owership,timestamp
-v:–verbose
-f:–force
[root@localhost ~]# cp /etc/fstab /tmp/
mv:move,移動文件
常用選項
-i:交互式
-f:強制
[root@localhost ~]# mv /etc/fstab /tmp/
rm:remove,刪除
rm [OPTION]… FILE…
常用選項:
-i:交互式
-f:強制刪除
-r:遞歸
rm -rf 目錄 可刪除非空目錄
[root@localhost ~]# rm -rf /tmp/fstab
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
命令的執行結果狀態
bash使用特殊變量 $? 保存最近一條命令的執行狀態結果
0:成功
1-255:失敗
[root@localhost ~]# mkdir aa [root@localhost ~]# echo $? 0 [root@localhost ~]# mkdir aa mkdir: 無法創建目錄"aa": 文件已存在 [root@localhost ~]# echo $? 1
命令行展開
~:展開為用戶的主目錄
~USERNAME:展開為指定用戶的主目錄
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
[root@localhost ~]# cd / [root@localhost /]# cd ~ [root@localhost ~]# cd ~tom [root@localhost tom]# mkdir /tmp/{a,b} [root@localhost tom]# ls /tmp/ a b
3、請使用命令行展開功能來完成以下練習:
(1)創建/tmp目錄下的:ac, ad, bc, bd
(2)創建/tmp/mylinux目錄下的:
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
(1)創建/tmp目錄下的:ac, ad, bc, bd
[root@localhost ~]# mkdir /tmp/{a,b}_{c,d} [root@localhost ~]# ls /tmp/ a_c a_d b_c b_d
(2)創建/tmp/mylinux目錄下的:
root@localhost ~]# mkdir /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}} -p [root@localhost ~]# tree /mylinux/ /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 24 directories, 0 files
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
元數據查看:stat
[root@localhost ~]# stat a 文件:"a" 大小:0 塊:0 IO 塊:4096 普通空文件 設備:803h/2051d Inode:70423606硬鏈接:1 權限:(0644/-rw-r--r--) Uid:(0/root) Gid:(0/root) 環境:unconfined_u:object_r:admin_home_t:s0 最近訪問:2016-07-17 14:35:34.196873268 +0800 最近更改:2016-07-17 14:35:34.196873268 +0800 最近改動:2016-07-17 14:35:34.196873268 +0800 創建時間:-
三個時間戳:
access time:訪問時間,簡寫為atime,讀取文件內容
modify time:修改時間,簡寫為mtime,改變文件內容
change time:改變時間,簡寫為ctime,元數據發生改變
touch -a 改變訪問時間
touch -m 改變修改時間
touch -t [[CC]YY]MMDDhhmm[.ss] 修改文件的修改時間
touch -c 如果文件不存在,則不予創建
[root@localhost ~]# touch -t 201607161223.34 a [root@localhost ~]# stat a 文件:"a" 大小:0 塊:0 IO 塊:4096 普通空文件 設備:803h/2051d Inode:70423606硬鏈接:1 權限:(0644/-rw-r--r--) Uid:(0/root) Gid:(0/root) 環境:unconfined_u:object_r:admin_home_t:s0 最近訪問:2016-07-16 12:23:34.000000000 +0800 最近更改:2016-07-16 12:23:34.000000000 +0800 最近改動:2016-07-17 14:37:09.712872323 +0800 創建時間:-
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
命令別名(alias)
通過alias命令實現:
(1)alias 顯示當前shell進程所有可用的命令別名
(2)alias NAME='VALUE' 定義別名NAME,其相當于執行命令VALUE
注意:在命令行中定義的別名,僅對當前shell進程有效,如果想永久有效,要定義在配置文件中
[root@localhost ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
僅對當前用戶:~/.bashrc
對所有用戶有效:/etc/bashrc
bash進程重新讀取配置文件:
source /PATH/TO/CONFIG_FILE
. /PATH/TO/CONFIG_FILE
alias cls = clear
撤銷別名:unalias 別名
[root@localhost ~]# alias cls='clear'
unalias -a 撤銷所有的別名
如果別名同原命令的名稱,則如果要執行原命令,可使用"\COMMAND"
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
*:任意長度的任意字符
?:任意單個字符
[^]:取反
[[:digit:]]:任意數字
[[:lower:]]:任意小寫字母
[[:upper:]]:任意大寫字母
[[:alpha:]]:任意大小寫字母
[[:alnum:]]:任意數字或字母
[[:space:]]:空格
[[:punct:]]:標點符號
[root@localhost var]# ls account cache db ftpgdm kerberos l4dddL local log nis preserve spool var adm crash empty games gopher l3db lib lock mail opt run tmpyp [root@localhost var]# ls -d /var/l*[[:digit:]]*[[:lower:]] l3db
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@localhost etc]# ls /etc/[[:digit:]]*[^[:digit:]]
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@localhost ~]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost ~]# touch /tmp/tfile-`date '+%Y-%m-%d-%H-%M-%S'`
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost ~]# mkdir /tmp/mytest1 [root@localhost ~]# cp -a /etc/p*[^[:digit:]] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@localhost ~]# mkdir /tmp/mytest2 [root@localhost ~]# cp -a /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@localhost ~]# mkdir /tmp/mytest3 [root@localhost ~]# cp -a /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:N21_孤狼,如若轉載,請注明出處:http://www.www58058.com/24191
寫的很好,排版也很漂亮,加油