开源 程序员 java 编程 wordpress 微软 shell linux centos 云计算 Python mysql nginx apache Windows Android google php Ubuntu Firefox

《循序漸進Linux(第2版) 基礎知識 服務器搭建 系統管理 性能調優 虛擬化與集群應用》——4.3 文件管理與編輯

4.3 文件管理與編輯

4.3.1 mkdir命令
1.功能說明
mkdir命令用於創建一個目錄。mkdir是make directory的縮寫。其格式如下。

mkdir [選項] 目錄名

2.舉例
在/home下創建user1目錄,同時在user1下創建user2目錄,也就是說,連續創建兩個目錄。

[root@mylinux~]#mkdir –p /home/user1/user2
這樣就在/home目錄下創建了嵌套目錄user1/user2。

4.3.2 more命令
1.功能說明
如果一個文本文件比較長,一屏無法顯示完畢,就需要使用more命令。more命令讀取文本文件時,每次顯示一屏,並且在每屏後暫停,同時在屏幕底部顯示單詞“More”。如果此時按Enter鍵,more命令就會接著再顯示文本的一行,依此類推;如果按空格鍵,more命令就繼續顯示文本文件的另一屏信息。其格式如下。

more [選項] 文件名
                              

2.舉例
1)要以分頁的方式顯示Makefile文件的內容,可使用以下命令。

[root@mylinux~]#more Makefile
2)要顯示Makefile文件的內容,每10行顯示一屏,同時清除屏幕,使用以下命令。

[root@mylinux~]#more –c -10 Makefile
4.3.3 cat命令
1.功能說明
cat命令用來將文件的內容輸出到標準輸出,類似於DOS下的type命令,同時cat還可以用於連接合並文件。其格式如下。

cat [選項] 文件名
或者:

cat 文件1 文件2 >文件3
cat命令的選項及其說明如表4.16所示。

screenshot
    

2.舉例
1)要查看Kconfig文件的內容,同時將文件中的制表符顯示為“^I”,並對非空行進行編號輸出,可以使用以下命令。

[root@mylinux~]#cat –ab Kconfig
2)以下命令將文件file1.txt和file1.txt的內容合並後輸出到文件file3.txt。

[root@WEBServer base]# ls
file1.txt file2.txt
[root@WEBServer base]# cat file1.txt
This is file1.txt
[root@WEBServer base]# cat file2.txt
This is file2.txt
[root@WEBServer base]# cat file1.txt file2.txt >file3.txt
[root@WEBServer base]# more file3.txt
This is file1.txt
This is file2.txt
[root@WEBServer base]# ls
file1.txt file2.txt file3.txt
4.3.4 diff命令
1.功能說明
diff命令用來比較文件的差異。diff以逐行的方式比較文本文件的異同,如果指定比較的是目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中的子目錄。其格式如下。

diff [選項] 文件1 文件2
diff命令的選項及其說明如表4.17所示。

screenshot

2.輸出格式
通常輸出信息由如下格式組成。

n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
其中,字母a、d、c之前的n1和n2代表文件1的行號,字母a、d、c之後的n3和n4代表文件2的行號,字母a、d、c分別表示附加、刪除和修改操作。在上面輸出形式的每行後緊跟著兩個文件的若幹不同行,其中以“<”打頭的行屬於文件1,以“>”打頭的行屬於文件2。

3.舉例
比較文件file1.txt和文件file2.txt的異同,同時將/home/admin/file3.txt文件和當前目錄下的file2.txt文件進行比較。

[root@WEBServer opt]# ls
file1.txt file2.txt
[root@WEBServer opt]# cat file1.txt 
This is file1.txt
[root@WEBServer opt]# cat file2.txt 
This is file2.txt
[root@WEBServer opt]# cat/home/admin/file3.txt
This is file3.txt
[root@WEBServer opt]# diff file1.txt file2.txt 
1c1
< This is file1.txt
---
> This is file2.txt
[root@WEBServer opt]# diff /home/admin/file3.txt  file2.txt 
1c1
< This is file3.txt
---
> This is file2.txt
[root@WEBServer opt]# diff -c/home/admin/file3.txt  file2.txt 
*** /home/admin/file3.txt 2008-07-20 14:15:48.000000000 +0800
***file2.txt2008-07-20 14:14:21.000000000 +0800
--- 1 ---
! This is file3.txt
--- 1 ----
! This is file2.txt

4.3.5 grep命令
1.功能說明
grep命令是Linux下的文本過濾工具,grep根據指定的字符串,對文件的每一行進行搜索,如果找到了這個字符串,就輸出該行的內容。其格式如下。

grep [選項] 需要查找的字符串文件名

2.舉例
1)列出install.log文件中含有rpm字符串的行。

[root@WEBServer ~]# grepRPMinstall.log
Installing RPM
2)列出install.log文件中含有rpm字符串的行,忽略大小寫,並標識出每行的具體行號。

[root@WEBServer ~]# grep -ni rpm install.log
386:Installing rpm - 4.4.2-47.el5.x86_64
412:Installing rpm-libs - 4.4.2-47.el5.x86_64
413:Installing rpm-python - 4.4.2-47.el5.x86_64
580:Installing rpm-libs - 4.4.2-47.el5.i386
792:Installing redhat-rpm-config - 8.0.45-22.el5.noarch
1191:Installing rpm-devel - 4.4.2-47.el5.x86_64
1192:Installing rpm-build - 4.4.2-47.el5.x86_64
1194:Installing rpm-devel - 4.4.2-47.el5.i386
1337:Installing RPM

4.3.6 rm命令
功能說明
rm命令用來刪除某個目錄及其下的所有文件及子目錄。對於鏈接文件,只是斷開了鏈接,原文件保持不變。其格式如下。

rm [選項] 文件或者目錄

註意
 使用rm命令要特別小心,“rm-rf”組合要慎用,因為一旦文件被刪除,就不能被恢復。Linux沒有類似於Windows的回收站。因此,為了防止文件或者目錄被誤刪除,可以使用rm的“-i”選項,來逐個確認要刪除的文件。使用“-i”選項時,如果用戶輸入“y”,文件將被刪除;如果輸入其他任何信息,文件則不被刪除。
4.3.7 touch命令
1.功能說明
touch命令用來改變指定文件的訪問時間和修改時間,若指定文件不存在則創建此文件。如果沒有指定時間,則使用當前時間。其格式如下。

touch [選項] 設定的時間文件

2.舉例
下面是touch命令的一個操作實例,“#”號後面的內容為命令註釋。

[root@mylinux~]# touch test.txt#創建一個文件test.txt
[root@mylinux~]# ls -l#顯示文件創建時間(修改時間)
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt
[root@mylinux~]# ls –lu#顯示文件的訪問時間
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt
[root@mylinux~]# date   #顯示系統當前時間
Fri Jul 18 06:45:21 CST 2008
[root@mylinux~]# touch -a test.txt #改變文件的訪問時間為系統當前時間


[root@mylinux~]# ls -lu
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:45 test.txt
[root@mylinux~]# ls -l 
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt
[root@mylinux~]# touch -m test.txt #改变文件的修改时间为系统当前时间
[root@mylinux~]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt
[root@mylinux~]# touch linux.txt
[root@mylinux~]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt
-rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt
[root@mylinux~]# ls -lu 
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt
-rw-r--r-- 1 root root 0 Jul 18 06:45 test.txt
[root@mylinux~]# touch -a -r linux.txt test.txt 
#将test.txt文件的访问时间修改为linux.txt文件的访问时间
[root@mylinux~]# ls -lu
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt
-rw-r--r-- 1 root root 0 Jul 18 06:47 test.txt
[root@mylinux~]# touch -d "20080718 06:40" linux.txt 
#将linux.txt文件的修改时间设定为2008年7月18日6点40分
[root@mylinux~]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 18 06:40 linux.txt
-rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt

4.3.8 ln命令
1.功能說明
ln命令用來在文件或目錄之間創建鏈接。

Linux下的鏈接有兩種,一種是硬鏈接(Hard Link),另一種是符號鏈接(Symbolic Link),默認情況下ln命令產生的是硬鏈接。

硬鏈接:是指通過文件的inode來進行鏈接。在Linux的文件系統中,保存在磁盤的所有類型的文件都會分配一個編號,這個編號稱為inode號(Inode Index)。多個文件指向同一個inode在Linux系統中是允許的,這就是所謂的硬鏈接。硬鏈接的作用是允許一個文件擁有多個有效的路徑名,這樣用戶就可以對一些重要文件建立硬鏈接,以防止誤刪除操作。因為對應該文件的inode有一個以上的鏈接,所以只刪除一個鏈接並不影像inode本身和其他鏈接,只有當最後一個鏈接被刪除後,文件的數據塊及目錄的鏈接才會釋放,也就是說,此時文件才會被真正刪除。
符號鏈接:也叫軟鏈接,軟鏈接類似於Windows中的快捷方式,因此軟鏈接是一個指向真正的文件或者目錄位置的符號連接。
ln命令的格式如下。

ln [選項] 源文件目標鏈接名
ln命令的選項及其說明如表4.21所示。

screenshot
  

2.舉例
1)將/etc/inittab文件進行硬鏈接到/opt/backup目錄下,此時/opt/backup下就生成了一個inittab文件。可以看到,兩個文件沒有任何不同。

[root@mylinux ~]#ln /etc/inittab /opt/backup
[root@mylinux ~]#ll /opt/backup/inittab
total 8
-rw-r--r-- 2 root root 1666 Jul 19 11:17 /opt/backup/inittab
[root@mylinux ~]#ll /etc/inittab 
-rw-r--r-- 2 root root 1666 Jul 19 11:17 /etc/inittab
2)在當前目錄下有兩個文件mylinux1.txt和mylinux.txt,現在將mylinux1.txt硬鏈接到當前目錄下,鏈接名為mylinux.txt。當前目錄下存在相同的文件名mylinux.txt,如果使用ln的“-f”選項,就會刪除mylinux.txt文件。因此這裏使用“-b”選項先備份mylinux.txt文件,然後再把mylinux1.txt硬鏈接到mylinux.txt。下面的mylinux.txt~文件就是“-b”選項備份產生的文件。

[root@mylinux oracle]# ls
mylinux1.txt mylinux.txt
[root@mylinux oracle]# more mylinux.txt 
This is mylinux!
[root@mylinux oracle]# more mylinux1.txt  
This is mylinux1!
[root@mylinux oracle]# ln -b mylinux1.txt mylinux.txt 
[root@mylinux oracle]# ls
mylinux1.txt mylinux.txt mylinux.txt~
[root@mylinux oracle]# more mylinux.txt
This is mylinux1!
[root@mylinux oracle]# more mylinux.txt~
This is mylinux!

3)将/etc/inittab文件符号链接到/opt下。

[root@mylinux ~]#ln -s /etc/inittab /opt
[root@mylinux ~]#ll /opt/inittab
total 4
lrwxrwxrwx 1 root root 12 Jul 20 17:57 /opt/inittab -> /etc/inittab

4.3.9 file命令
1.功能說明
file命令用來顯示文件的類型。對於長度為0的文件,將識別為空文件;對於符號連接文件,默認情況下將顯示符號鏈接引用的真實文件路徑。其格式如下。

file [選項] 文件名
file命令的選項及其說明如表4.22所示。


screenshot

2.舉例
1)顯示/etc/init.d/halt文件的類型,顯示結果為Shell可執行文件。

[root@WEBServer bin]# file /etc/init.d/halt
/etc/init.d/halt: Bourne-Again shell script text executable
2)顯示/bin/sh文件的類型,顯示結果為符號鏈接文件。

[root@WEBServer bin]# file /bin/sh
/bin/sh: symbolic link to 'bash'
3)顯示/opt/file1.txt文件的類型,顯示結果為ASCII文本文件。

[root@WEBServer opt]# file file1.txt 
file1.txt: ASCII text
4)顯示/dev/had文件的類型,顯示結果為塊設備文件。

[root@WEBServer cicro]# file /dev/hda 
/dev/hda: block special (3/0)
4.3.10 cp命令
1.功能說明
cp命令用來將給出的文件或者目錄復制到另一個文件或者目錄中。cp與Windows下的copy命令類似,但是cp命令更加強大。其格式如下。

cp [選項] 源文件或目錄目標文件或目錄

2.舉例
1)將當前目錄下的所有文件復制到/tmp目錄下,“./*”表示當前目錄下所有文件和目錄。

[root@mylinux~]#cp –r ./* /tmp
2)將/home/oracle目錄及其子目錄下的全部內容復制到/home/ixdba下。

[root@mylinux~]#cp –r /home/oracle /home/ixdba
4.3.11 find命令
1.功能說明
find命令用來在指定的路徑下查找指定的文件。其格式如下。

find path-name[-options] [-print –exec -ok命令 {} \;]
具體的選項說明如下。

path-name:find命令查找的目錄路徑,例如,可以用“.”表示當前目錄,用“/”表示系統根目錄。
-options:find命令的這個選項主要用來控制搜索的方式。
2.舉例
1)在系統根目錄下,查找文件類型為普通文件,屬於ixdba用戶,兩天以前,並且查找時不包含/usr/bin目錄的文件名為main.c的文件,並將結果輸出到屏幕。

[root@mylinux~]#find / -path "/usr/bin" -prune -o -name "main.c" -user ixdba -type f 
-mtime +2 -print
2)對上例中搜索的結果進行刪除操作。

[root@mylinux~]#find / -path "/usr/bin" -prune -o -name "main.c" -user ixdba -type f 
-mtime +2 –print–exec rm {} \;
3)在系統根目錄下查找不在/var/log和/usr/bin目錄下的所有普通文件。

[root@mylinux~]#find / \( -path /var/log –o –path /usr/bin \) –prune –o –name 
"main.c"–print
表示引用,告訴shell不對後面的字符做特殊解釋,而留給find命令去解釋其意義。

註意
 “( -path”中,在“(”和“-path”之間是有空格的,同時“/usr/bin )”在“bin”和“”之間也是有空格的。
4)查找系統中所有大小為0的普通文件,並列出它們的完整路徑。

[root@mylinux~]#find / -type f –size 0 –exec ls –al {} \;
5)查找系統/var/logs目錄中修改時間在7天以前的普通文件,然後以交互方式刪除。

[root@mylinux~]#find /var/log –type f –mtime +7 –ok rm {} \;
<rm ... /var/log/spooler.1 > ? y
<rm ... /var/log/spooler.3 > ? y
<rm ... /var/log/boot.log.2 > ? y
<rm ... /var/log/spooler.4 > ? y
<rm ... /var/log/Xorg.0.log.old > ? y
<rm ... /var/log/Xorg.0.log > ? y
<rm ... /var/log/secure.4 > ? y

6)在當前目錄及子目錄下查找所有“*.txt”文件。

[root@mylinux~]#find .–name "*.txt"–print`
7)在用戶自己的根目錄下查找文件名以一個大寫字母開頭,緊接著是一個小寫字母和兩個數字,最後以“.txt”結尾的文件。

[root@mylinux~]$ find ~ -name “[A-Z][a-z][0--9][0--9]*.txt” -print
8)在/etc目錄下查找文件屬主為ixdba用戶的文件。

[root@mylinux~]#find /etc –user ixdba -print
4.3.12 split命令
1.功能說明
split命令用來分割文檔,將一個文件分成數個。其格式如下。

split [選項] [input_file] [output_file]

input_file:需要分割的文件。
output_file:分割出來的文件序列,split命令分割後生成的文件序列名依次為output_fileaa、output_fileab、output_fileac等。如果沒有指定output_file,系統默認以“x”作為輸出文件名。
2.舉例
1)將access_log文件進行分割,設定每個分割文件的大小為10MB。

[root@mylinux ~]#split –b 10Maccess_logaccess_log_bak
執行完畢,在當前目錄下就生成類似access_log_bakaa、access_log_bakab和access_log_bakah等分割文件,每個文件大小10MB。

2)將/opt/etc.zip文件進行分割,指定每個文件大小為2MB,輸出文件序列以數字形式顯示,序列長度為3。

[root@mylinux ~]#split –b 2M–d –a 3 /opt/etc.zip /opt/etc.zip_bak
split命令執行完畢,在/opt/目錄下生成類似etc.zip_bak001、etc.zip_bak002和etc.zip_bak003等文件。

4.3.13 mv命令
1.功能說明
mv命令用來將文件或目錄改名或將文件由一個目錄移入另一個目錄中。如果源類型和目標類型都是文件或者目錄,mv將進行目錄重命名。如果源類型為文件,而目標類型為目錄,mv將進行文件的移動。如果源類型為目錄,則目標類型只能是目錄,不能是文件,此時完成目錄重命名。其格式如下。

mv [選項] 源文件或目錄目標文件或目錄

2.舉例
創建一個myDocument目錄和一個Document文件,然後將Document文件移動到myDocument目錄下,最後修改myDocument目錄為myDocument_1。

[root@dbbackup oracle]# mkdir myDocument
[root@dbbackup oracle]# touch Document
[root@dbbackup oracle]# ls
Document myDocument
[root@dbbackup oracle]# mv Document myDocument 
[root@dbbackup oracle]# mv myDocument myDocument_1
[root@dbbackup oracle]# ls
myDocument_1
[root@dbbackup oracle]#

延伸阅读

    评论