Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示
目錄管理命令:cd, pwd, ls, mkdir, rmdir, tree
- cd命令:change directory切換工作目錄
- cd path : 切換至指定目錄路徑
- cd : 切換至當前用戶的家目錄
- cd – : 切換至上一次工作目錄
- pwd命令:print working directory顯示當前工作目錄
- ls命令:顯示當前路徑下的文件
- ls :顯示當前路徑下的文件,默認不顯示隱藏文件
- ls -a :顯示當前路徑下的所有文件
- ls -A : 與-a選項的唯一區別是不顯示 . (當前目錄) 和 .. (上一級目錄)
- ls -l : 顯示當前路徑下的文件,同時展示出詳細信息
- ls -lh : -h(human readable)選項通常與-l選項同時使用,可以使顯示結果更利于人類解讀
- ls -d : 顯示目錄時只顯示其本身,而不顯示其下的文件列表(通常用于path/*這種用法,如ls-d /etc/* 執行結果為顯示etc目錄下的所有文件,但是現實etc下的目錄時不會顯示其下所包含的內容列表,如果不加 -d 選項,ls /etc/* 執行結果在線式etc目錄下的目錄時也會顯示出 這些目錄下的內容列表)
- ls -i : 顯示文件的同時顯示其inode
- mkdir命令:創建目錄
- mkdir [option] /path/to/dirname… : 創建目錄,可以同時創建多個,中間以空格分隔
- -p : 如果目錄已存在,不返回錯誤信息,如果要創建的上級目錄不存在,則自動遞歸創建上級目錄
- -m mode : 在創建目錄時為其設定權限
- -v : verbose顯示過程信息
- rmdir命令:刪除目錄
- rmdir [option] path/to/dirname… : 刪除時目標目錄可以是多個,中間以空格分隔,需要注意的是這個命令只能刪除空目錄,所以其不常用,常用的是rm這個功能更強的命令
- tree命令:顯示某目錄的詳細路徑結構信息(樹形結構)
- tree [option] /path/to/dirname… : 可以指定多個目錄對象一同展開,中間以空格分隔
~]# tree /tmp/magedu.com/
/tmp/magedu.com/
├── machine-id
└── mtab
- -d : 只顯示目錄
- -L # :執行顯示的層級#
- -P patten : 進行patten模式匹配執行結果,顯示匹配到的內容
文件管理命令:cat, more, less, head, tail, touch, cp, mv, rm
- cat命令:查看文本文件內容,一次性輸出所有信息
- cat [option] file…
- more命令:查看文本文件內容,提供翻頁功能
- more [option] file…
- less命令:查看文本文件內容,比more命令更強大,不僅提供翻頁功能,還可以在查看過程中進行匹配搜索等功能
- less [option] file…
- head命令:顯示文本文件的開頭N行內容,一次性輸出
- head [option] file… 不加選項默認顯示頭10行信息
- head -n # [or -#] : 顯示頭#行信息
- head -c # : 顯示頭#個字節的信息,例如head -c 10k 顯示頭10k Bytes的內容
- tail命令:顯示文本文件從結尾向上數N行內容,一次性輸出
- tail [option] file… 不加選項默認顯示結尾10行信息
- tail -n # [or -#] : 顯示尾#行信息
- tail -c # : 顯示尾#個字節的信息,例如tail -c 10k 顯示結尾向前數10k Bytes的內容
- touch命令:更改文件的時間戳
- touch [option] file… 如果文件存在,更改文件的時間戳。如果文件不存在,則新建此文件,因此touch命令也常用于新建空文件
- -a : 更改文件的access time
- -m : 更改文件的modify time
- -t time : 將文件的時間戳修改為指定的時間
- cp命令:復制文件
- cp [option] source… dest
-
- 如果source是一個文件,dest也是一個文件,則將source的內容覆蓋至dest
-
- 如果source是一個文件,dest不存在,則新建dest文件并將source的內容覆蓋至dest
-
- 如果source是一個目錄或多個文件,則dest必須是一個已存在的目錄,將source復制到dest目錄下面
-
- 如果source是一個目錄,可以加 -r 選項使得復制成功,執行結果為新建dest目錄,并將source目錄之下的所有文件遞歸復制到dest下面
- cp [option] -t directory source… : 此用法中 -t 之后為復制操作的目標目錄
- 常用的命令選項
-
- -r[or R] : 遞歸復制
-
- -i : 交互模式
-
- -d : 復制時遇到符號鏈接僅復制其本身,而不追蹤復制符號鏈接指向的源文件
-
- -p : 使復制后的復本保留原有文件的屬性
-
- -a : 歸檔復制,相當于 -dpr 3個選項疊加使用
-
- -f : 強制復制,忽略且不輸出交互信息(如不顯示是否覆蓋的交互信息而直接覆蓋)
-
- -v : verbose顯示過程信息
- mv命令:移動文件
- mv [option] soure… dest
-
- 如果dest存在且是一個目錄,則將source移動至dest目錄下
-
- 如果source是多個文件,則dest必須為一個已存在的目錄
-
- 如果source是一個文件(目錄也是文件),dest(dest=/path/filename)不存在,則將source文件重命名為filename并移動至/path路徑下
- 常用選項
-
- -i : 交互模式
-
- -f : 強制執行,不輸出交互信息
- rm命令:刪除文件(目錄)
- rm [option] file…
- -i : 交互模式
- -r : 遞歸刪除
- -f : 強制執行刪除,不輸出交互信息
Bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示
- Bash的命令執行狀態返回值保存在變量”?”中,可以使用 echo $? 輸出其值。
- 值為 0 : 表示命令執行成功
- 值為 1-255 : 表示命令執行失敗
- Bash的命令行展開
- ~: 表示當前用戶的家目錄
- ~username: 表示username用戶的家目錄
- {x,y,…}: 大括號中的元素集合可以分別展開
-
- 例如/tmp/{x,y}表示: /tmp/x /tmp/y
請使用命令行展開功能來完成以下練習
- 創建/tmp目錄下的:a_c, a_d, b_c, b_d
]# mkdir /tmp/{a,b}
]# touch /tmp/{a,b}/{c,d}
]# tree /tmp/{a,b}
/tmp/a
├── c
└── d
/tmp/b
├── c
└── d
- 創建/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 -p /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}}
]# tree /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
文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息
- 文件的元數據包括:名稱,路徑,大小,inode號,文件類型,硬鏈接數,權限,時間戳等
- inode : 文件的元數據保存在磁盤上的inode區域中,每一個文件都有一個對應的inode號碼
- 硬鏈接數 : 一個文件的硬鏈接數為N,表示該文件在磁盤上有N個與其對應的inode號碼相同的文件
- 權限 : 文件的權限包括r(讀),w(寫),x(執行),suid,sgid,sbit這幾種權限,它們可以分別對應到文件的屬主、屬組和其他人上
- 時間戳 : 包括有訪問時間、修改時間、屬性更改時間
-
- access time(atime) : 訪問時間。文件被訪問,即文件在使用cat, more, less, head等命令查看,或者cp等命令將其作為源文件復制給其他路徑下,或者使用grep命令進行匹配查找等操作時,atime都會改變
-
- modify time(mtime) : 更改時間。指文件內容被修改時,mtime會改變
-
- change time(ctime) : 屬性更改時間。指文件的元數據被改變,例如chmod, chown, mv等命令改變了文件權限名稱路徑等信息,ln命令增加了文件的硬鏈接等操作都會改變ctime
- stat命令可以顯示文件的元數據信息
- stat [option] file…
- touch命令可以用來修改文件的時間戳信息
如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果
- 定義命令別名
- 直接輸入命令(只能對當前shell有效)
-
- alias command1=command2定義了command1作為command2的別名
]# alias "abc"="ls -l"
]# abc
total 15088
drwxr-xr-x. 2 root root 24 Dec 9 21:51 a
drwxr-xr-x. 28 1001 1001 4096 Dec 7 16:50 apr-1.6.3
-rwxr-xr-x. 1 root root 1072661 Dec 7 16:47 apr-1.6.3.tar.gz
drwxr-xr-x. 21 1001 1001 4096 Dec 7 16:54 apr-util-1.6.1
-rwxr-xr-x. 1 root root 554301 Dec 7 16:37 apr-util-1.6.1.tar.gz
- 定義在bash登錄執行的配置文件中
]# vim .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
- 引用另一個命令的執行結果
- 使用$(command)
]# ls
anaconda-ks.cfg scripts vmware-tools-distrib
]# ls $(ls)
anaconda-ks.cfg
scripts:
file_type.sh num_sum.sh sum_txt_linecount.sh sum_uid.sh sys_info.sh user_type.sh
vmware-tools-distrib:
bin caf doc etc FILES INSTALL installer lib vgauth vmware-install.pl
- 使用`command`
- 使用管道
ls -l /etc | less
顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄
可以采用glob匹配文件名的機制來完成
]# ls /var
adm cache crash db empty games gopher kerberos l2cn1 l4_t lib list12a local lock log mail nis opt preserve run spool tmp yp
]# ls /var/l*[[:digit:]]*[a-z]
/var/list12a
/var/l4_t:
lu98i
顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
]# ls -d /etc/*
/etc/123 /etc/cron.weekly /etc/groff /etc/locale.conf
/etc/1a /etc/crypttab /etc/group /etc/localtime
/etc/1A1 /etc/csh.cshrc /etc/group- /etc/localtime.bak
/etc/1.b /etc/csh.login /etc/grub2.cfg /etc/login.defs
/etc/1b.d
]# ls -d /etc/[0-9]*[^[:digit:]]
/etc/1a /etc/1.b /etc/1b.d
顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄
]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/1a /etc/1A1 /etc/1b.d
在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
]# ls /tmp/tfile*
/tmp/tfile-2017-12-10-09-17-45
復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
]# cp -a /etc/p*[^0-9] /tmp/mytest1/
]# ls /tmp/mytest1/
pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols python
復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
]# cp -a /etc/*.d /tmp/mytest2/
]# ls /tmp/mytest2/
1b.d chkconfig.d dracut.conf.d init.d logrotate.d my.cnf.d prelink.conf.d rc1.d rc4.d rc.d statetab.d tmpfiles.d
bash_completion.d cron.d gdbinit.d krb5.conf.d modprobe.d pam.d profile.d rc2.d rc5.d rsyslog.d sudoers.d xinetd.d
binfmt.d depmod.d grub.d ld.so.conf.d modules-load.d popt.d rc0.d rc3.d rc6.d rwtab.d sysctl.d yum.repos.d
復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
]# cp -a /etc/[lmn]*.conf /tmp/mytest3
]# ls /tmp/mytest3
ld.so.conf libaudit.conf libuser.conf locale.conf logrotate.conf man_db.conf mke2fs.conf nsswitch.con
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89774
總結的不錯,繼續加油哈~
@馬哥教育:哈,謝謝老師鼓勵