Bash編程014——文件管理
Unix/Linux系統(tǒng)中將幾乎一切都是為文件,所有操作都離不開文件炭玫,因而學(xué)習(xí)管理脑又、操作文件是極為重要的。注:目錄也是文件的一種泞边,它記錄著當(dāng)前目錄下的文件項(xiàng)该押,但并不實(shí)際保存文件的數(shù)據(jù)。
一般我們打開終端阵谚,所處的目錄默認(rèn)為當(dāng)前登錄用戶的家目錄(或者叫主目錄蚕礼, home directory)。對于一般的用戶$HOME環(huán)境變量記錄了家目錄的所在梢什,一般位于/home/username奠蹬,root用戶的家目錄是/root。shell中也使用~符號表示家目錄的所在嗡午。
14.0 查看當(dāng)前目錄
使用shell內(nèi)置命令pwd(print working directory)可以查看當(dāng)前目錄囤躁。
# 示例,直接打開終端
pwd
# 輸出:/home/ruo
14.1 更改目錄
我們可以使用shell的內(nèi)置命令cd(chang directory)來改變當(dāng)前所處的目錄荔睹。
命令格式:cd [dir]
dir分為相對路徑和絕對路徑狸演,Linux中文件系統(tǒng)擁有一個(gè)根目錄即/。以/開頭的路徑名即為絕對路徑名应媚,不以/開頭的路徑名即為相對路徑名严沥,一般相對路徑是指相對當(dāng)前的目錄。另外中姜,Linux中擁有兩個(gè)特殊的符號:.和..消玄。.代表當(dāng)前目錄,..代表當(dāng)前目錄的父目錄丢胚。(根目錄的父目錄為自身)翩瓜。
若cd后不加目錄名,則默認(rèn)切換到當(dāng)前用戶的家目錄携龟。
# 示例
cd /
pwd
# 輸出: /
cd
pwd
# 輸出:/home/ruo
cd /
cd ~
pwd
# 輸出:/home/ruo
cd命令依賴于CDPATH變量兔跌,CDPATH定義了搜索目錄的路徑,cd命令會先在CDPATH定義的路徑下尋找dir峡蟋,若找不到坟桅,則在當(dāng)前目錄下尋找,若找不到蕊蝗,給出信息不存在目錄仅乓。CDPATH中可以有多個(gè)搜索目錄,以:間隔蓬戚。
注:若是絕對路徑則會直接切換到對應(yīng)的目錄夸楣。
# 示例
echo $CDPATH
# 輸出為空,說明該變量未定義
CDPATH=/
cd ~
pwd
# 輸出如下:
bin Desktop Downloads Music ps.txt snap Templates Videos
Codes Documents fault.c Pictures Public t Test
cd bin
pwd
# 輸出為:/bin
14.2 列出當(dāng)前目錄下的文件
使用ls命令(來自于coreutils軟件)可以查看。注:文件包括子目錄豫喧。
使用格式:ls [options] [FILE]
列出FILE的信息石洗,若未給出則默認(rèn)為當(dāng)前目錄。
# 示例
cd ~
ls
# 輸出如下
bin Desktop Downloads Music ps.txt snap Templates Videos
Codes Documents fault.c Pictures Public t Test
ls /
# 輸出如下
bin etc lib mnt run sys vmlinuz
boot home lib64 opt sbin tmp vmlinuz.old
cdrom initrd.img lost+found proc snap usr
dev initrd.img.old media root srv var
注:Linux一般接受三種格式的選項(xiàng)參數(shù)紧显,-A讲衫,--option,option鸟妙。
常用選項(xiàng)介紹:
- -a --all :列出所有文件焦人,包括以.開頭的文件。
- -A --almost-all :列出所有文件重父,除了.和..花椭。
- -l:使用長格式列出。
- -S:按大小排序房午,大的在前矿辽。
- -t:根據(jù)最后修改時(shí)間排序,新的在前郭厌。
14.3 創(chuàng)建文件
使用touch命令創(chuàng)建文件袋倔。
使用格式:touch [option] FILE
其實(shí)這個(gè)命令是用于更改文件(包括目錄)的時(shí)間戳的,當(dāng)文件不存在時(shí)會創(chuàng)建一個(gè)空白文件折柠。若是存在的文件或目錄宾娜,則會更改它的最后修改時(shí)間為當(dāng)前時(shí)間。
使用stat filename可以查看文件的信息信息扇售。
stat ~/Desktop
# 輸出如下:
文件:'/home/ruo/Desktop'
大星八:4096 塊:8 IO 塊:4096 目錄
設(shè)備:802h/2050d Inode:5505264 硬鏈接:4
權(quán)限:(0755/drwxr-xr-x) Uid:( 1000/ ruo) Gid:( 1000/ ruo)
最近訪問:2019-01-06 19:45:57.934756875 +0800
最近更改:2019-01-06 19:45:57.482761809 +0800
最近改動:2019-01-06 19:45:57.482761809 +0800
創(chuàng)建時(shí)間:-
# 使用touch修改
touch ~/Desktop
stat ~/Desktop
# 輸出:
文件:'/home/ruo/Desktop'
大小:4096 塊:8 IO 塊:4096 目錄
設(shè)備:802h/2050d Inode:5505264 硬鏈接:4
權(quán)限:(0755/drwxr-xr-x) Uid:( 1000/ ruo) Gid:( 1000/ ruo)
最近訪問:2019-01-06 19:57:35.191433807 +0800
最近更改:2019-01-06 19:57:35.191433807 +0800
最近改動:2019-01-06 19:57:35.191433807 +0800
創(chuàng)建時(shí)間:-
14.4 創(chuàng)建文件夾
使用mkdir命令
mkdir ~/Test
stat ~/Test
# 輸出如下:
文件:'Test'
大谐斜:4096 塊:8 IO 塊:4096 目錄
設(shè)備:802h/2050d Inode:6044126 硬鏈接:2
權(quán)限:(0775/drwxrwxr-x) Uid:( 1000/ ruo) Gid:( 1000/ ruo)
最近訪問:2019-01-06 19:59:27.422286876 +0800
最近更改:2019-01-06 19:59:27.422286876 +0800
最近改動:2019-01-06 19:59:27.422286876 +0800
創(chuàng)建時(shí)間:-
14.5 刪除文件
使用rm命令可以刪除文件或目錄华弓。
使用格式:rm [option] [FILE]
# 示例
mkdir ~/Desktop/Test
cd ~/Desktop/Test
touch hello{1..10}.txt
ls
# 輸出如下:
hello10.txt hello2.txt hello4.txt hello6.txt hello8.txt hello.txt
hello1.txt hello3.txt hello5.txt hello7.txt hello9.txt
rm hello10.txt
ls
# 輸出如下:
hello1.txt hello3.txt hello5.txt hello7.txt hello9.txt
hello2.txt hello4.txt hello6.txt hello8.txt
刪除目錄需要加上-r參數(shù):
cd ~/Desktop
rm -r Test