馬哥教育網絡班20期+第2周課程練習
練習題:
1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
(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
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
1)文件查看命令:cat、tac、more、less、head、tail
2)文件類型查看命令:file
3)文件的時間戳管理工具:touch
4)查看文件狀態:stat
5)復制命令:cp
6)移動文件
7)刪除
1)文件查看命令:cat、tac、more、less、head、tail
(1)cat
cat [OPTION]… [FILE]
-E 顯示行結束符$
-n 對顯示出的每一行進行編號
(2)tac
相當于cat查看的命令反向排序
(3)more
-d :顯示翻頁及退出提示
如:
more /etc/rc.d/rc.sysinit
more -d /etc/rc.d/rc.sysinit
按空格鍵:向后翻屏
b :向前翻屏
q :退出
(4)less
與man里面的相同,因為man是通過less打開的。
(5)head
head [選項] 文件名
-c # : 指定獲取前#字節
– # 或-n # :指定獲取前#行
(6)tail
tail [選項] 文件
-c # : 指定獲取后#字節
– # 或-n # :指定獲取后#行
-f :跟蹤顯示文件新追加的內容 (ctrl+c才能退出)
2)文件內容類型查看命令:file
3)文件的時間戳管理工具:touch
touch 選項 文件
-a:only atime(access time:訪問時間)
僅更新Access time(同時更新Change為current time)
-m:only mtime(modify time:修改時間)只改變修改時間
僅更新Modify time(同時更新Change為current time)
–c:不創建新文件
-t:使用指定的時間更新時間戳
(僅更改Access time與Modify time,Change time更新為current time)
例:
touch -t [[CC]YY]MMDDhhmm[.ss] filename
4)查看文件狀態:stat
可以查看文件名稱、大小、訪問時間、修改時間、改變時間等信息。
文件訪問時間:(Access time)讀取文件內容會變化
文件修改時間:(Modify time)改變文件內容或數據時會變化
文件改變時間:(Change time)元數據發生改變時會變化
5)復制命令:cp
cp 文件 –> 文件 : 覆蓋
cp 文件 –> 目錄 :新建
cp 多個文件 –> 目錄 : 新建
cp 目錄 –> 目錄 : 創建
cp 目錄 –> 文件 :報錯
常用選項:
-i:交互式
-a:相當于-dR –preserv=all,歸檔,復制時必須把文件保留為原來的樣子
–preserv [=ATTR_LIST]
mode : 權限
ownweship :屬主屬組
timestamp : 時間戳
links : 鏈接
xattr : 擴展屬性
context : 安全上下文
all : 以上所有
-d:–no-dereference
–preserv=links 不追蹤符號鏈接
-p:–preserv=mode,ownership,timestamp
-v:顯示復制過程 –verbose
-f:–force強制,如果存在覆蓋
6)移動文件:mv
-i : 交互式
-f : 強制
7)刪除:rm
rm 選項 文件
-i :交互式
-f :強制刪除
-r :遞歸
rm -rf
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
1)命令執行狀態返回值:
bash使用特殊變量 $? 保存最近一條命令的執行結果
0:成功,1-255:失敗
2)命令行展開:
~:展開為用戶的主目錄
~ USERNAME:展開為指定用戶的主目錄
{ }:可承載一個以逗號分隔的列表,并將其展開為多個路徑
如:
/tmp/new/{a,b} = /tmp/new/a , /tmp/new/b /tmp/new/{a,b}/hello = /tmp/new/a/hello , /tmp/new/b/hello
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
mkdir /tmp/{a,b}_{c,d}
(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
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、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
1)通過stat命令可以查看文件的元數據信息
2)文件的元數據信息有:
Access文件訪問時間:(Access time)讀取文件內容會變化
Modify文件修改時間:(Modify time)改變文件內容或數據時會變化
Change文件改變時間:(Change time)元數據發生改變時會變化
3)通過touch可以修改文件的時間戳信息
touch 選項 文件
-a:only atime(access time:訪問時間)
僅更新Access time(同時更新Change為current time)
-m:only mtime(modify time:修改時間)只改變修改時間
僅更新Modify time(同時更新Change為current time)
–c:不創建新文件
-t:使用指定的時間更新時間戳
(僅更改Access time與Modify time,Change time更新為current time)
touch -t [[CC]YY]MMDDhhmm[.ss] filename
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
1)定義一個命令的別名:alias
PS:在命令行中定義的別名,僅對當前shell進程有效,
如果想長久有效,需要在配置文件中添加此別名定義:
~/.bashrc:僅對當前用戶 /etc/bashrc:對所有用戶有效
2)在命令中引用另一個命令的執行結果
(1)`反引號,上分隔符(在鍵盤的左上角,~的下面)
反引號括起來的字符串被shell解釋為命令行,在執行時,shell首先執行該命令行,
并以它的標準輸出結果取代整個反引號(包括兩個反引號)部分.
如:
echo `date`
(2)$( )
如:
echo $(date)
6、顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄。
ls /var | grep '1.*[[:digit:]]\+.*[[:lower:]]$'
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
ls /etc | grep '^[[:digit:]].*[^[:digit:]]$'
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
ls /etc | grep '^[^[:alpha:]][:alpha:].*'
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22.
mkdir /tmp/tfile-`date +%F-%H-%M-%S`
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
法一 (太復雜了)
cp -a /etc/$(ls /etc | grep '^p.*[^[:digit:]$]') /tmp/mytest1
法二 (這個比較簡潔)
cp -a /etc/p*[^0-9] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
cp -a /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
cp /etc/{l,m,n}*.conf /tmp/mytest3
原創文章,作者:二極管,如若轉載,請注明出處:http://www.www58058.com/18471
寫的很棒,有的題目還有多種解題思路,但是好像10題的方法二有點小瑕疵吧,在測試一下,加油