從零開始的Linux學習Ⅱ
常用的文件管理工具有:cp , mv , rm
- cp命令——copy:
NAME
cp - copy files and directories
復制 文件 和 目錄
SYNOPSIS
單源復制 cp [OPTION]... [-T] SOURCE DEST
多源復制 cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
常用OPTION:
-i:交互式復制,即覆蓋之前提醒用戶確認;
-f:強制覆蓋目標文件;
-r, -R:遞歸復制目錄;
-d:復制符號鏈接文件本身,而非其指向的源文件;
-v:顯示過程
--preserv=
mode:權限
ownership:屬主和屬組
timestamps: 時間戳
context:安全標簽
xattr:擴展屬性
links:符號鏈接
all:上述所有屬性
cp SRC...DEST
復制 源 目標
情況一:
(1)如果DEST不存在:新建DEST,並將SRC中的內容填充至DEST中;
如果目標存在:如果DEST是文件:將SRC中的內容覆蓋至DEST中;(可以使用-i來提醒用戶是否覆蓋)
(2)如果DEST是目錄文件:在DEST下新建與源文件同名的文件並將SRC中的內容填充至新文件中;
情況二:如果SRC是目錄則必須使用-r選項
(2)如果DEST不存在,則先創建DEST目錄,並將SRC中的所有內容復制到DEST目錄中
2.mv命令:move:
NAME
mv - move (rename) files
移動 (重命名)文件
SYNOPSIS
單源移動 mv [OPTION]... [-T] SOURCE DEST 多源移動 mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE..
常用OPTION:
-i:交互式
-f:force 強制
- rm命令:
NAME
rm - remove files or directories
SYNOPSIS
rm [OPTION]… FILE…
常用OPTION:
-r, -R, –recursive:遞歸刪除目錄及其內容;
-f,force:強制刪除,不提示確認;
-i,–interactive:交互式,提示確認;
因為刪除命令是很危險的操作,請不要隨便使用刪除命令!
如需刪除可以先創建一個模擬回收站備份文件後,等確認沒用後再進行刪除;
極度危險
bash的工作特性
bash的基礎特性:命令的執行狀態結果
命令執行的狀態結果:
bash通過狀態返回值來輸出此結果:
成功:0
失敗:1-255
命令執行完成之後,其狀態返回值保存於bash的特殊變量$?中;
命令正常執行時,有的還回有命令返回值:
根據命令及其功能不同,結果各不相同;
引用命令的執行結果:
$(COMMAND)
或`COMMAND`
bash的基於特性:引用
強引用:‘‘
弱引用:""
命令引用:``
bash基礎特性:快捷鍵
Ctrl+a:跳轉至命令行行首
Ctrl+e:跳轉至命令行行尾
Ctrl+u:刪除行首至光標所在處之間的所有字符;
Ctrl+k:刪除光標所在處至行尾的所有字符;
Ctrl+l:清屏,相當於clear
- 命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄:
{ }:可承載一個以逗號分隔的路徑列表,並能夠將其展開為多個路徑:
例如:/tmp/{a,b} 相當於 /tmp/a /tmp/b
文件的元數據信息
文件的數據分為兩類:一類為數據,即文件的實際內容;另一類為元數據,用來描述文件的特征。
元數據內容:
1.文件名
2.文件大小
3.文件所在數據塊
4.數據塊的大小
5.文件類型
6.文件所在的Inode
7.硬鏈接次數
8.權限
9.屬主id
10.屬組id
11.最近一次訪問時間戳
12.最近一次更改文件內容的時間戳
13.最近一次更改文件元數據的時間戳
- 查看文件的元數據——stat命令
NAME
stat - display file or file system status
SYNOPSIS
stat [OPTION]... FILE...
OPTION
-f 輸出文件系統的狀態,而非文件的狀態
-t 顯示簡要格式的文件元數據信息
- 修改文件的時間戳
可以使用touch命令更改文件的時間戳:
NAME
touch - change file timestamps
SYNOPSIS
touch [OPTION]... FILE...
常用OPTION:
-a change only the access time
僅修改 access time;
-c, --no-create
do not create any files
僅修改文件的時間,若該文件不存在則不創建新文件
-d, --date=STRING
parse STRING and use it instead of current time
後面可以接欲修訂的日期而不用目前的日期,也可以使用 –date=”日期或時間”
-m change only the modification time
僅修改 modification time ;
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
後面可以接欲修訂的時間而不用目前的時間,格式為[[CC]YY]MMDDhhmm[.ss]
命令的別名
定義別名命令——alias
使用alias命令就可以在命令中引用另一個命令的執行結果
語法:# alias name=’command line’
alias的作用僅在該次登入的操作,即輸入一次alias後,這個修改只在當前的Shell生效。如果重新開啟一個Shell,或者重新登錄,則這些alias將無法使用。
在Centos7中系統默認包含的有
alias永久化的方法:
(1)若要每次登入就自動生效別名,則把別名加在/etc/profile或~/.bashrc中。
然後# source ~/.bashrc
(2)若要讓每一位用戶都生效別名,則把別名加在/etc/bashrc最後面,
然後# source /etc/bashrc
練習:
請使用命令展開行功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c ,a_d , b_c , b_d
mkdir -p {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
mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys}
![](http://i2.51cto.com/images/blog/201810/07/1040103d5be01f587ebdd158fe127c5e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201810/07/9656f0b88119dfb267c11ebef9751b6e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
(3)、顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
ls -d /var/l?[[:lower:]]
![](http://i2.51cto.com/images/blog/201810/07/50ae8af220becf818e06c9f318d61825.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
(4)、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
ls -d /etc/[0-9]*[^0-9]
(5)、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字符的文件或目錄。
ls -d /etc/[^a-z][a-z]*
(6)、在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如: tfile-2016-05-27-09-32-22。
touch /tmp/tflie-$(date +\%F-\%H-\%M-\%S)
(7)、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
cp -r /etc/p*[^0-9] /tmp/mytest1/
(8)、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
cp -r /etc/*.d /tmp/mytest2/
(9)、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
cp -r /etc/[lmn]*.conf /tmp/mytest3/
從零開始的Linux學習Ⅱ