1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
(1)目錄與路徑
相對路徑與絕對路徑
絕對路徑:路徑的寫法【一定由根目錄 / 寫起】
/usr/share/doc 這個目錄。
相對路徑:路徑的寫法【不是由 / 寫起】
由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 【cd ../man】這就是相對路徑的寫法。相對路徑意指相對于當前的工作目錄
(2) cat命令
cat是linux的基本文本輸出命令,通常用于查看文件內容。
語法
cat [OPTION]... [FILE]...
參數(shù)
-n 或? --number:由1開始對所有輸出的行數(shù)編號。
-b 或 --number-nonblank:和-n相似,只不過對于空白行不編號。
-s 或 --squeeze-blank:當遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行。
-v 或 --show-nonprinting:使用^和M-符號,除了LFD和TAB之外。
-E或--show-ends:在每行結束處顯示$。
-T或--show-tabs:將TAB字符顯示為^|。
-e:等價于-vE。
-A,--show-all:等價于-vET。
-t:等價于"-vT"選項。
cat主要功能
1、一次顯示文件的所有內容 cat filename
2、從磁盤創(chuàng)建一個新文件cat >filename(只能創(chuàng)建新文件不能編輯已有文件)
3、將幾個文件合并為一個文件cat? file1? file2? > file
實例





(3)?cd (切換目錄)
示例:


(4)?pwd(顯示當前所在的目錄)
參數(shù):
-P ?:顯示出確實的路徑,而非使用鏈接 (link) 路徑。(P是大寫)
示例:

(5)mkdir (建立新目錄)
[root@yangxu ~]# mkdir [-mp] 目錄名稱
參數(shù):
-m :配置文件目錄的權限!我們可以自己設定自己想要的權限,而不需要使用umask定義的默認權限
-p :幫助你直接將所需要的目錄遞歸建立起來!
范例:




(6) rmdir (刪除"空"目錄)
? ? ? ? ? ?rmdir [-p] 目錄名稱
? ? ? ? ?-p :連同上層『空的』目錄也一起刪除


注:不過要注意的是,這個 rmdir 僅能【刪除空的目錄】!
(7)?ls (查看文件和目錄)
? ? ? ? ? ls [-aAdfFhilRS] 目錄名稱
? ? ? ? ??ls [–color={none,auto,always}] 目錄名稱
? ? ? ? ? ls [–full-time] 目錄名稱
參數(shù):
-a ?:全部的文件,連同隱藏文件( 開頭為 . 的目錄) 一起列出來~
-A ?:全部的文件,連同隱藏文件,但不包括 . 與 .. 這兩個目錄,一起列出來~
-d ?:僅列出目錄本身,而不是列出目錄內的文件數(shù)據(jù)
-f ?:直接列出結果,而不進行排序 (ls 預設會以文件名排序!)
-F ?:根據(jù)文件、目錄等信息,給予附加數(shù)據(jù)結構,例如:
? ? ? *:代表可執(zhí)行文件; /:代表目錄; =:代表 socket 檔案; |:代表 FIFO 文件;
-h ?:列出文件的打小(例如GB、KB等等)
-i ?:列出 inode 位置,而非列出文件屬性;
-l ?:長數(shù)據(jù)串行出,包含文件的屬性等等數(shù)據(jù);
-n ?:列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在賬號管理提到!)
-r ?:將排序結果反向輸出,例如:原本文件名由小到大,反向則為由大到?。?/p>
-R ?:連同子目錄內容一起列出來;
-S ?:以文件容量大小排序!
-t ?:依時間排序
–color=never ?:不要依據(jù)文件特性給予顏色顯示;
–color=always :顯示顏色
–color=auto ? :讓系統(tǒng)自行依據(jù)設定來判斷是否給予顏色
–full-time ? ?:以完整時間模式 (包含年、月、日、時、分) 輸出
–time={atime,ctime} :輸出 access 時間或 改變權限屬性時間 (ctime)?
舉例:



(8) cp (復制命令)
? ? ? ? ? ? ? ? ? ? ??cp [-adfilprsu] 源文件(source) 目的文件(destination)
? ? ? ? ? ? ? ? ? ? ??cp [options] source1 source2 source3 …. directory
參數(shù):
-a ?:相當于 -pdr 的意思;
-d ?:若來源文件為鏈接文件的屬性(link file),則復制鏈接文件屬性而非檔案本身;
-f ?:為強制 (force) 的意思,若有重復或其他疑問時,不會詢問使用者,而強制復制;
-i ?:若目的文件(destination)已經(jīng)存在時,在覆蓋時會先詢問是否真的動作!
-l ?:進行硬式連結 (hard link) 的連結文件建立,而非復制文件本身;
-p ?:連同文件的屬性一起復制過去,而非使用默認屬性;
-r ?:遞歸持續(xù)復制,用于目錄的復制行為;
-s ?:復制成為符號鏈接文件 (symbolic link),亦即『快捷方式』文件;
-u ?:若 destination 比 source 舊才更新 destination?
舉例:






? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 原有pam目錄不存在,加上-r參數(shù),復制源目錄,目標目錄同時創(chuàng)建并復制進去



(9) rm (刪除文件或目錄)
? ? ? ? ?rm [-fir] 文件或目錄
參數(shù):
-f ?:就是 force 的意思,強制移除;
-i ?:互動模式,在刪除前會詢問使用者是否動作
-r ?:遞歸刪除!最常用在目錄的刪除了
舉例

(10)?mv (移動文件與目錄、文件重命名)
? ? ? ? ? ? mv [-fiu] source destination
? ? ? ? ? ??mv [options] source1 source2 source3 …. directory
參數(shù):
-f ?:force 強制的意思,強制直接移動而不詢問;
-i ?:若目標文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋!
-u ?:若目標文件已經(jīng)存在,且 source 比較新,才會更新 (update)
舉例:

(11) tac (反向顯示)
舉例

(12)?nl (顯示時添加行號)
? ? ? ? ? ? ?nl [-bnw] 文件
參數(shù):
-b ?:指定行號指定的方式,主要有兩種:
? ? ? -b a :表示不論是否為空行,也同樣列出行號;
? ? ? -b t :如果有空行,空的那一行不要列出行號;
-n ?:列出行號表示的方法,主要有三種:
? ? ? -n ln :行號在屏幕的最左方顯示;
? ? ? -n rn :行號在自己字段的最右方顯示,且不加 0 ;
? ? ? -n rz :行號在自己字段的最右方顯示,且加 0 ;
-w ?:行號字段的占用的位數(shù)。
舉例


(13)?head (取出前幾行)
? ? ? ? ? ? ?head [-n number] 文件
參數(shù):
-n ?:后面接數(shù)字,代表顯示幾行的意思
舉例


(14)?tail (取出后面幾行)
? ? ? ? ? ? tail [-n number] 文件
參數(shù):
-n ?:后面接數(shù)字,代表顯示幾行的意思
舉例:


2、bash的工作特性之命令執(zhí)行狀態(tài)返回值和命令行展開所涉及的內容及其示例演示。
1. 命令執(zhí)行狀態(tài)返回值
作為演示,我們鍵入一條命令 source /etc/profile,回車。
鍵入的命令到底有沒有執(zhí)行成功呢?我們輸入 echo $? 來查看該命令執(zhí)行狀態(tài)的返回值。返回值為 0,表示成功執(zhí)行。

我們再鍵入一條命令:source /etc,回車,然后再用 echo $? 查看。返回值為 1,表示該命令出錯。

我們最后鍵入 mann ls,回車,然后用 echo $? 查看。返回值為 127,不為 0,同樣表示該命令出錯。

2.命令行命令展開:
~:展開為用戶的主目錄
~USERNAME:展開為指定用戶的主目錄
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
/tmp{a,b} - /tmp/a. /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
3、請使用命令行展開功能來完成以下練習:
? (1)、創(chuàng)建/tmp目錄下的:a_c, a_d, b_c, b_d
? ? ? ? ? ?mkdir -p {a,b}_{c,d}

? (2)、創(chuàng)建/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 -pv /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、文件的元數(shù)據(jù)信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
1)文件的元數(shù)據(jù)信息及查看
文件的數(shù)據(jù)分兩種:一種元數(shù)據(jù),既屬性數(shù)據(jù);一種就是數(shù)據(jù)本身;可使用stat命令查看文件的元數(shù)據(jù):
可以使用stat命令查看元數(shù)據(jù);
舉例:

其中:
file:文件名;
size:文件大小
block:文件占了多少個數(shù)據(jù)塊
IO Block:文件所占數(shù)據(jù)塊的塊大小
Device:硬件,既說明該文件在硬盤的那個柱面
Inode:節(jié)點號
links:鏈接
Access(第一個):權限
Uid:該文件所屬的屬主
Gid:該文件所屬的屬組
context:安全上下文
Access(第二個):文件上一次的訪問時間
Modify:文件上一次修改的時間
Change:文件上一次屬性更改的時間
2)修改文件的時間戳信息:
?可以使用touch命令更改文件的時間戳:
?touch [-acdmt] 文件
選項與參數(shù):
-a ?:僅修訂 access time;
-c ?:僅修改文件的時間,若該文件不存在則不創(chuàng)建新文件;
-d ?:后面可以接欲修訂的日期而不用目前的日期,也可以使用 –date="日期或時間"
-m ?: 僅修改 mtime ;
-t ?: 后面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]
舉例:

查看目前時間點
然后我們使用touch命令看下效果;

3個時間點都已經(jīng)改變;
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執(zhí)行結果?
定義別名:alias
語法:# alias name='command line'
alias的作用僅在該次登入的操作,即輸入一次alias后,這個修改只在當前的Shell生效。如果重新開啟一個Shell,或者重新登錄,則這些alias將無法使用。
alias永久化的方法:
<1>.若要每次登入就自動生效別名,則把別名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc
<2>.若要讓每一位用戶都生效別名,則把別名加在/etc/bashrc最后面,然后# source /etc/bashrc
示例:
添加別名



重新再打開個shell,可以看見之前創(chuàng)立的別名已經(jīng)沒有;


可以編輯.bashrc文件,在里面添加別名,這個添加后對當前用戶有效;切換用戶后,就無效;


在文件末尾添加別名,對全局用戶有效;
刪除別名:

顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現(xiàn)一位數(shù)字(可以有其它字符)的文件或目錄。
? ? ? ? ? ??

顯示/etc目錄下,以任意一個數(shù)字開頭,且以非數(shù)字結尾的文件或目錄。

顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。

在/tmp目錄下創(chuàng)建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

復制/etc目錄下所有以p開頭,以非數(shù)字結尾的文件或目錄到/tmp/mytest1目錄中。

復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。

復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
