1.Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
a.相對路徑與絕對路徑
因為我們在Linux系統中,常常要涉及到目錄的切換,所以我們必須要了解 “路徑” 以及 “相對路徑” 與 “絕對路徑” 的概念。
在之前的學習中,就反復的強調了Linux的目錄是 “樹狀目錄” 。假設我們需要在任意一個目錄下切換到另一個目錄下,通常是使用的是 cd 這個命令,此時在寫切換的目錄名時就有兩種書寫方式,也就是我們常說的使用 “相對路徑” 與 “絕對路徑” 來書寫.
絕對路徑:路徑的寫法【一定由根目錄 / 寫起】,例如: /usr/share/doc 這個目錄。
相對路徑:路徑的寫法【不是由 / 寫起】,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 【cd../man】這就是相對路徑的寫法。相對路徑意指相對于當前的工作目錄
我們知道,在Linux的系統中完整的文件路徑名的長度最大可以達到4096個字符,所以一個文件路徑名太長的話,此時寫絕對路徑時就非常的麻煩,而且可能寫錯,所以此時選擇使用相對路徑來寫就會簡單一些。
但是,對于文件的正確性來說,絕對路徑是比較好的。當我們在寫 shell scripts 時,請務必使用絕對路徑。雖然可能寫絕對路徑會稍顯麻煩,但是這種寫法是絕對不會有問題的。
- 目錄管理命令:
pwd
查看當前所在目錄
ls(list):列出目錄的內容
格式:ls [OPTION]… [FILE]…
參數:
-a:顯示所有文件包括隱藏文件
-A:顯示除.和..之外的所有文件
-l,–long:顯示文件的詳細屬性信息
-h:對文件大小進行單位換算,可能影響精度
-d:查看目錄本身而非其內部的文件
-r:逆序顯示文件
-R:遞歸顯示文件
示例:
[root@ada-dog home]# ls
abc? ada? docker? mogilefs? openstack
[root@ada-dog home]# ls -al
total 4
drwxr-xr-x.? 7 root????? root??????? 75 Jun 30 08:35 .
dr-xr-xr-x. 17 root????? root?????? 224 Jun 29 14:57 ..
drwx——.? 3 docker??? testgrp???? 78 Jun 29 15:30 abc
drwx——. 14 ada?????? ada?????? 4096 Jun 29 22:59 ada
drwx——.? 3 docker??? docker????? 78 Jun 29 22:50 docker
drwx——.? 3 mogilefs? mogilefs??? 78 Jun 30 08:35 mogilefs
drwx——.? 3 openstack openstack?? 78 Jun 30 08:30 openstack
[root@ada-dog home]# ls -R
.:
abc? ada? docker? mogilefs? openstack
./abc:
./ada:
Desktop? Documents? Downloads? Music? Pictures? Public? Templates? Videos
./ada/Desktop:
./ada/Documents:
./ada/Downloads:
./ada/Music:
./ada/Pictures:
./ada/Public:
./ada/Templates:
./ada/Videos:
./docker:
./mogilefs:
./openstack:
cd 改變當前目錄
cd [dirName]
cd??? 進入用戶主目錄;
cd ~? 進入用戶主目錄;
cd –? 返回進入此目錄之前所在的目錄;
cd ..? 返回上級目錄(若當前目錄為“/“,則執行完后還在“/”;”..”為上級目錄的意思);
cd ../..? 返回上兩級目錄;
mkdir 創建目錄
mkdir [OPTION]… DIRECTORY…
-p:如果要建立目錄的父級目錄當前尚未創建,則一起建立父級目錄;
-m:建立目錄時,同時設置目錄的權限;
-v:顯示創建目錄的詳細信息;
[root@ada-dog tmp]# mkdir -pv /tmp/test/test1/test2
mkdir: created directory ‘/tmp/test’
mkdir: created directory ‘/tmp/test/test1’
mkdir: created directory ‘/tmp/test/test1/test2’
[root@ada-dog test2]# mkdir -m 711 test3
rmdir 刪除空目錄(rmdir – remove empty directories)
-p:假如刪除目錄之后其父目錄為空,則一起刪除,使用此參數需小心;
[root@ada-dog test2]# rmdir -pv /tmp/test/test1/test2/test3/
rmdir: removing directory, ‘/tmp/test/test1/test2/test3/’
rmdir: removing directory, ‘/tmp/test/test1/test2’
rmdir: removing directory, ‘/tmp/test/test1’
rmdir: removing directory, ‘/tmp/test’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busy
- 文件管理命令
cp 用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。它可以將單個源文件復制成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
-a:此參數的效果和同時指定”-dpR”參數相同;
-d:當復制符號連接時,把目標文件或目錄也建立為符號連接,并指向與源文件或目錄連接的原始文件或目錄;
-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
-i:覆蓋既有文件之前先詢問用戶;
-l:對源文件建立硬連接,而非復制文件;
-p:保留源文件或目錄的屬性;
-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一并處理;
-s:對源文件建立符號連接,而非復制文件;
-u:使用這項參數后只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件并不存在時,才復制文件;
-S:在備份文件時,用指定的后綴“SUFFIX”代替文件的默認后綴;
-b:覆蓋已存在的文件目標前將目標文件備份;
-v:詳細顯示命令執行的操作。
[root@ada-dog tmp]# cp -r /home/ada/ /tmp/ 將home目錄下的ada目錄全部復制到tmp目錄下;
mv 重命名或者移動文件
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
–backup=<備份模式>:若需覆蓋文件,則覆蓋前先行備份;
-b:當文件存在時,覆蓋前,為其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文件或目錄;
-i:交互式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入”y”,表示將覆蓋目標文件;輸入”n”,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。
–strip-trailing-slashes:刪除源文件中的斜杠“/”;
-S<后綴>:為備份文件指定后綴,而不使用默認的后綴;
–target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
[root@ada-dog ada]# mv -v /tmp/ada/Music/ music
‘/tmp/ada/Music/’ -> ‘music’
rm ???? 刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對于鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變。
rm [OPTION]… FILE…
-d:直接把欲刪除的目錄的硬連接數據刪除成0,刪除該目錄;
-f:強制刪除文件或目錄;
-i:刪除已有文件或目錄之前先詢問用戶;
-r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一并處理;
–preserve-root:不對根目錄進行遞歸操作;
-v:顯示指令的詳細執行過程。
刪除時加上-i確認沒誤刪除文件:
[root@ada-dog ada]# rm -ri music/
rm: remove directory ‘music/’? y
cat
cat [OPTION]… [FILE]…
-A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
-E :將結尾的斷行字節 $ 顯示出來;
-n :列印出行號,連同空白行也會有行號,與 -b 的選項不同;
-T :將 [tab] 按鍵以 ^I 顯示出來;
-v :列出一些看不出來的特殊字符
[root@ada-dog sysconfig]# cat -En /etc/issue
1? \S$
2? Kernel \r on an \m$
3? $
tail????? 讀取文件后幾行數據
tail [-n number] 文件
-n :后面接數字,代表顯示幾行的意思;
-f :表示持續偵測后面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測;
[root@ada-dog bin]# tail -n 4 /etc/netconfig
tcp6?????? tpi_cots_ord? v???? inet6??? tcp???? –?????? –
rawip????? tpi_raw?????? –???? inet????? –????? –?????? –
local????? tpi_cots_ord? –???? loopback? –????? –?????? –
unix?????? tpi_cots_ord? –???? loopback? –????? –?????? –
head??? 讀取文件前面幾行數據
head [OPTION]… [FILE]…
-n :后面接數字,代表顯示幾行的意思
[root@ada-dog bin]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
more?? 一頁一頁翻動讀取文件數據
more [options] file […]
空白鍵 (space):代表向下翻一頁;
Enter???????? :代表向下翻『一行』;
/字串???????? :代表在這個顯示的內容當中,向下搜尋『字串』這個關鍵字;
:f??????????? :立刻顯示出檔名以及目前顯示的行數;
q???????????? :代表立刻離開 more ,不再顯示該文件內容。
less???? 類似more的命令,但略有不同;
空白鍵:向下翻動一頁;
[pagedown]:向下翻動一頁;
[pageup]? :向上翻動一頁;
/字串 :向下搜尋『字串』的功能;
?字串 :向上搜尋『字串』的功能;
n :重復前一個搜尋 (與 / 或 ? 有關!)
N :反向的重復前一個搜尋 (與 / 或 ? 有關!)
q :離開 less 這個程序;
touch? 有兩個功能:一是用于把已存在文件的時間標簽更新為系統當前的時間(默認方式),它們的數據將原封不動地保留下來;二是用來創建新的空文件。
-a 或–time=atime或–time=access或–time=use 只更改存取時間
-c 或–no-create 不建立任何文檔
-d 使用指定的日期時間,而非現在的時間
-m ? 或–time=mtime或–time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
執行狀態返回值成功:0
執行狀態返回值失敗:1~255
[root@ada-dog ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
[root@ada-dog ~]# echo $?
0
[root@ada-dog ~]# ls /etce
ls: 無法訪問/etce: 沒有那個文件或目錄
[root@ada-dog ~]# echo $?
2
[root@ada-dog ~]# cdd /etc/
bash: cdd: 未找到命令…
相似命令是: ‘cd’
[root@ada-dog ~]# echo $?
127
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@ada-dog tmp]# mkdir -pv /tmp/{a_c,a_d,b_c,b_d}
mkdir: 已創建目錄 “/tmp/a_c”
mkdir: 已創建目錄 “/tmp/a_d”
mkdir: 已創建目錄 “/tmp/b_c”
mkdir: 已創建目錄 “/tmp/b_d”
[root@ada-dog tmp]# tree /tmp/
/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
[root@ada-dog tmp]# 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}}
mkdir: 已創建目錄 “/tmp/mylinux”
mkdir: 已創建目錄 “/tmp/mylinux/bin”
mkdir: 已創建目錄 “/tmp/mylinux/boot”
mkdir: 已創建目錄 “/tmp/mylinux/boot/grub”
mkdir: 已創建目錄 “/tmp/mylinux/dev”
mkdir: 已創建目錄 “/tmp/mylinux/etc”
mkdir: 已創建目錄 “/tmp/mylinux/etc/rc.d”
mkdir: 已創建目錄 “/tmp/mylinux/etc/rc.d/init.d”
mkdir: 已創建目錄 “/tmp/mylinux/etc/sysconfig”
mkdir: 已創建目錄 “/tmp/mylinux/etc/sysconfig/network-scripts”
mkdir: 已創建目錄 “/tmp/mylinux/lib”
mkdir: 已創建目錄 “/tmp/mylinux/lib/modules”
mkdir: 已創建目錄 “/tmp/mylinux/lib64”
mkdir: 已創建目錄 “/tmp/mylinux/proc”
mkdir: 已創建目錄 “/tmp/mylinux/sbin”
mkdir: 已創建目錄 “/tmp/mylinux/sys”
mkdir: 已創建目錄 “/tmp/mylinux/tmp”
mkdir: 已創建目錄 “/tmp/mylinux/usr”
mkdir: 已創建目錄 “/tmp/mylinux/usr/local”
mkdir: 已創建目錄 “/tmp/mylinux/usr/local/bin”
mkdir: 已創建目錄 “/tmp/mylinux/usr/local/sbin”
mkdir: 已創建目錄 “/tmp/mylinux/var”
mkdir: 已創建目錄 “/tmp/mylinux/var/lock”
mkdir: 已創建目錄 “/tmp/mylinux/var/log”
mkdir: 已創建目錄 “/tmp/mylinux/var/run”
[root@ada-dog tmp]# tree /tmp/
/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
25 directories, 0 files
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
元數據:metadata,表示的是文件屬性信息;大小,時間戳(最近訪問、最近更改、最近改動)
查看命令stat –文件名
touch –m 文件名
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
1)alias 新的命令=’原命令 -選項/參數’;alias命令的作用只局限于該次登入的操作。若要每次登入都能夠使用這些命令別名,則可將相應的alias命令存放到bash的初始化文件/etc/bashrc中。
[root@ada-dog tmp]# alias cls=’clear’
2)通過管道命令可以引用另一個命令的結果;
[root@ada-dog tmp]# tree /var/log/ >/tmp/a.txt | ls
a.txt
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
[root@ada-dog tmp]# ls -d /var/l[0-9]*[[:lower:]]
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@ada-dog tmp]# ls -d /etc/[0-9][^0-9]
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@ada-dog tmp]# ls -d /etc/[^a-z][a-z]*
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@ada-dog tmp]# touch /tmp/ tfile-$(date +%Y-%m-%d-%H-%M-%S)
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@ada-dog tmp]# cp -r /etc/p*[^0-9] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@ada-dog tmp]# cp -r /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@ada-dog tmp]# cp -r /etc/[lmn]*.conf /tmp/mytest3
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102013