寫(xiě)作:N27_loong 2018-6-1
失蹤人口終于回歸了!
首先,祝大家工作愉快迁酸,六一節(jié)日快樂(lè)讲冠!linux的學(xué)習(xí)沒(méi)有別的途徑瓜客,就像賣(mài)油翁說(shuō)的“唯手熟爾”。希望在前進(jìn)的路上沟启,一直有你陪伴忆家!
一、 Linux上常用的文件管理命令都有哪些德迹,使用方法
1. 文件類(lèi)型的分類(lèi)
文件類(lèi)型:
- 普通文件類(lèi)型
d:目錄文件
b:塊設(shè)備
c:字符設(shè)備
l:符號(hào)鏈接文件
p:管道文件芽卿,pipe
s:套接字文件,socket
例如:
[root@loong ~]# ll
總用量 44
-rw-r--r--. 1 root root 26150 7月 9 18:43 install.log
說(shuō) 明:自左向右:
- 這是一個(gè)普通文件
rw- 文件屬主的權(quán)限
r-- 文件屬組的權(quán)限
r-- 其他用戶(hù)的權(quán)限
1 數(shù)字表示被硬鏈接的次數(shù)
root 文件的屬主胳搞,本例中文件屬主是root
root 文件的屬組卸例,本例中文件屬組是root組
26150 文件的大小,字節(jié)數(shù)
7月...文件最后一次被修改的時(shí)間
install.log 文件名
[root@loong ~]# ll /dev
總用量 0
brw-rw----. 1 root disk 8, 0 7月 14 07:44 sda
brw-rw----. 1 root disk 8, 1 7月 14 07:44 sda1
brw-rw----. 1 root disk 8, 2 7月 14 07:44 sda2
說(shuō)明:自左向右
b:塊設(shè)備
rw-:屬主權(quán)限肌毅,可讀寫(xiě)筷转。
rw-:屬組權(quán)限
---:其他用戶(hù)權(quán)限
1 :被硬鏈接的次數(shù)
root:設(shè)備文件屬主
disk:設(shè)備文件屬組
8,:設(shè)備主設(shè)備號(hào)悬而,標(biāo)識(shí)設(shè)備類(lèi)型
0 :設(shè)備次設(shè)備號(hào)呜舒,標(biāo)識(shí)同類(lèi)型的不同設(shè)備
7月....:設(shè)備文件最后修改的時(shí)間
sda:設(shè)備文件名
2. 目錄管理的命令mkdir,rmdir
-
mkdir:創(chuàng)建一個(gè)目錄
語(yǔ)法:mkdir [OPTION]... DIRECTORY...
-p:自動(dòng)創(chuàng)建路徑上不存在的目錄
-v:顯示命令的創(chuàng)建過(guò)程
-m:設(shè)定權(quán)限
例如:在/tmp目錄下建立mydir目錄并在此目錄下再建立名稱(chēng)為1的目錄
[root@loong ~]# ls /
bin boot cgroup data dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var
[root@loong ~]# cd /tmp
[root@loong tmp]# ls
yum.log
[root@loong tmp]# mkdir -pv /tmp/mydir/1
mkdir: 已創(chuàng)建目錄 "/tmp/mydir"
mkdir: 已創(chuàng)建目錄 "/tmp/mydir/1"
[root@loong tmp]# ls
mydir yum.log
[root@loong tmp]# cd mydir
[root@loong mydir]# ls
1
-
rmdir:移除一個(gè)目錄。要移除的目錄必須是一個(gè)空目錄笨奠。
語(yǔ)法:rmdir [OPTION]... DIRECTORY...
-p:刪除某一空目錄后如父目錄為空袭蝗,則一并刪除。有較大風(fēng)險(xiǎn)般婆,盡 量不用
-v:顯示命令的創(chuàng)建過(guò)程例如:刪除上例中建立的目錄
[root@loong tmp]# mkdir -pv /tmp/mydit/1 mkdir: 已創(chuàng)建目錄 "/tmp/mydit" mkdir: 已創(chuàng)建目錄 "/tmp/mydit/1" [root@loong tmp]# ls /tmp mydit yum.log [root@loong tmp]# ls mydit 1 [root@loong tmp]# rmdir mydit/1 (刪除名為1的目錄) [root@loong tmp]# ls mydit/1 ls: 無(wú)法訪問(wèn)mydit/1: 沒(méi)有那個(gè)文件或目錄 (目錄已刪除) [root@loong tmp]# rmdir mydit (刪除mydit目錄) [root@loong tmp]# ls yum.log [root@loong tmp]#
3.文件查看命令:
主要有cat,tac,head,tail,more,less命令到腥。其中more,less命令分屏查看。
-
cat:
將[文件]或標(biāo)準(zhǔn)輸入組合輸出到標(biāo)準(zhǔn)輸出蔚袍。-A, --show-all 等于-vET
-b, --number-nonblank 對(duì)非空輸出行編號(hào)
-e 等于-vE
-E, --show-ends 在每行結(jié)束處顯示"$"
-n, --number 對(duì)輸出的所有行編號(hào)
-s, --squeeze-blank 不輸出多行空行
-t 與-vT 等價(jià)
-T, --show-tabs 將跳格字符顯示為^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用乡范,除了LFD和 TAB 之外
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出 tac:
用法:tac [選項(xiàng)]... [文件]...
將每個(gè)指定文件按行倒置并寫(xiě)到標(biāo)準(zhǔn)輸出。
如果不指定文件,或文件為"-"晋辆,則從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)-
head:
head [選項(xiàng)]... [文件]...
將每個(gè)指定文件的頭10 行顯示到標(biāo)準(zhǔn)輸出渠脉。
如果指定了多于一個(gè)文件,在每一段輸出前會(huì)給出文件名作為文件頭瓶佳。
如果不指定文件连舍,或者文件為"-",則從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)涩哟。 顯示文件前15行[root@loong etc]# head -n20 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 adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin
more 分屏查看命令
less 分屏查看命令索赏。man命令實(shí)際上調(diào)用less命令來(lái)查看幫助手冊(cè)
-
對(duì)文件的操作命令(復(fù)制、移動(dòng)贴彼、刪除)
1.文件的復(fù)制:cp命令潜腻,用于實(shí)現(xiàn)文件的復(fù)制
源文件,目標(biāo)文件單源復(fù)制:cp [OPTION]... [-T] SOURCE DEST 多源復(fù)制:cp [OPTION]... SOURCE... DIRECTORY:目標(biāo)必須是目錄器仗; cp [OPTION]... -t DIRECTORY SOURCE...
常用選項(xiàng):
-i融涣,--interactive:交互式復(fù)制,即覆蓋目標(biāo)文件之前提醒用戶(hù)確認(rèn)精钮;
-f威鹿,force:強(qiáng)制覆蓋目標(biāo)文件;
-R轨香,-r忽你,--recursive:遞歸復(fù)制目錄及其內(nèi)容;
-P臂容,--no-dereference:復(fù)制鏈接文件本身科雳,而非默認(rèn)的復(fù)制鏈接文件指向的原文件內(nèi)容;
-d:相當(dāng)于--no-dereference脓杉;復(fù)制鏈接本身(默認(rèn)為復(fù)制鏈接文件的原文件內(nèi)容)糟秘;
--preserve[=ATTR_LIST]:
指明保留的原文件屬性列表;
默認(rèn)為default: mode, ownership, timestamps球散;
還包括其它屬性:context(安全上下文), links(符號(hào)鏈接), xattr(額外屬性), all尿赚;
-a,--archive:歸檔復(fù)制蕉堰;備份時(shí)才會(huì)使用凌净;
相當(dāng)于-dR --preserve=all;
注意:僅管理員有權(quán)限復(fù)制時(shí)保留屬主和屬組屬性
- 單源復(fù)制:cp [OPTION]... [-T] SOURCE DEST
- 如果目標(biāo)文件文件名與原文件不同名則:復(fù)制文件并重命名嘁灯;
復(fù)制過(guò)程:先創(chuàng)建目標(biāo)文件泻蚊,而后復(fù)制源文件的內(nèi)容導(dǎo)入至目標(biāo)文件躲舌;
- 如果目標(biāo)文件事先存在:
- 如果目標(biāo)文件文件名與原文件同名則:則覆蓋目標(biāo)文件丑婿,為安全計(jì)root用戶(hù)默認(rèn)使用-i選項(xiàng),為交互確認(rèn);
- 如果目標(biāo)文件是目錄則:在此目錄中創(chuàng)建一個(gè)與原文件同名的文件羹奉,則導(dǎo)入其內(nèi)容秒旋;- 多源復(fù)制 : 基本前提:目標(biāo)存在,且必須是目錄诀拭;否則即為錯(cuò)誤迁筛;即復(fù)制時(shí)目標(biāo)目錄必須提前創(chuàng)建;
[root@centos ~]# cp /etc/passwd /etc/gshadow /tmp/mytest
cp: 目標(biāo)"/tmp/mytest" 不是目錄 #目標(biāo)目錄不存在
[root@centos ~]# mkdir /tmp/mytest
[root@centos ~]# cp /etc/passwd /etc/gshadow /tmp/mytest
[root@centos ~]# ls /tmp/mytest
gshadow passwd
[root@centos ~]#
- 復(fù)制鏈接文件時(shí)要注意:
對(duì)于鏈接文件耕挨,默認(rèn)是復(fù)制鏈接文件所指向的原文件的內(nèi)容
[root@centos ~]# ll /etc/redhat-release
lrwxrwxrwx. 1 root root 14 6月 7 2018 /etc/redhat-release -> centos-release
[root@centos ~]# cp /etc/redhat-release /tmp
[root@centos ~]# ll /tmp/redhat-release
-rw-r--r--. 1 root root 27 2月 17 15:35 /tmp/redhat-release
[root@centos ~]# cat /tmp/redhat-release
CentOS release 6.3 (Final)
[root@centos ~]# cat /etc/centos-release
CentOS release 6.3 (Final)
如果使用-P選項(xiàng)细卧,則只復(fù)制了一個(gè)快捷方式,并無(wú)原文件內(nèi)容筒占。復(fù)制的文件不可用贪庙,要想正常使用,則要把源文件也復(fù)制到同一目錄下翰苫。
[root@centos ~]# cp -P /etc/redhat-release /tmp
[root@centos ~]# ll /tmp/redhat-release
lrwxrwxrwx. 1 root root 14 2月 17 15:42 /tmp/redhat-release -> centos-release
[root@centos ~]# cat /tmp/redhat-release
cat: /tmp/redhat-release: 沒(méi)有那個(gè)文件或目錄
[root@centos ~]# cp /etc/centos-release /tmp
[root@centos ~]# ll /tmp/redhat-release
lrwxrwxrwx. 1 root root 14 2月 17 15:42 /tmp/redhat-release -> centos-release
[root@centos ~]# cat /tmp/redhat-release
CentOS release 6.3 (Final)
- 復(fù)制時(shí)文件元數(shù)據(jù)的處理:
默認(rèn)是不保留所復(fù)制文件的屬主和屬組信息止邮,以哪個(gè)用戶(hù)復(fù)制文件,cp后的文件的屬主和屬組信息就是那個(gè)用戶(hù)奏窑。要保留原屬組和屬主信息要使用 cp -p選項(xiàng)
2.mv命令:(不需要-r選項(xiàng))與使用cp命令相似导披;
mv - move (rename) files 移動(dòng)或重命名文件
單源移動(dòng):mv [OPTION]... [-T] SOURCE DEST
多源移動(dòng):mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
注意:原文件目錄與目標(biāo)文件目錄相同時(shí),為rename埃唯;否 則為move撩匕;不區(qū)分目錄和文件,直接move墨叛;
常用選項(xiàng):
-i滑沧,--interactive:交互式復(fù)制,移動(dòng)時(shí)巍实,如果目標(biāo)文件存在時(shí)提示用戶(hù)確定是否覆蓋(僅root用戶(hù))滓技;
-f,force:強(qiáng)制棚潦,覆蓋前不提示令漂;
3.rm命令:
即能刪除文件又能刪目錄,但刪目錄時(shí)要用遞歸-r選項(xiàng)丸边;
rm - remove files or directories
rm [OPTION]... FILE...
常用選項(xiàng):
-r, -R, --recursive:遞歸刪除目錄及其內(nèi)容叠必;
-f,force:強(qiáng)制刪除妹窖,不提示確認(rèn)纬朝;
-i,--interactive:交互式骄呼,提示確認(rèn)共苛;
注意:請(qǐng)不要只想“rm -rf /”或“rm -rf / *”判没,在生產(chǎn)環(huán)境中,要自建回收站隅茎!禁用rm操作
二. bash工作特性之命令執(zhí)行狀態(tài)返回值
命令執(zhí)行狀態(tài)返回值:在 Linux 下澄峰,不管你是啟動(dòng)一個(gè)桌面程序也好,還是在控制臺(tái)下運(yùn)行命令辟犀,所有的程序在結(jié)束時(shí)俏竞,都會(huì)返回一個(gè)數(shù)字值,這個(gè)值叫做返回值堂竟,或者稱(chēng)為錯(cuò)誤號(hào) ( Error Number )魂毁。這個(gè)值保存在特殊環(huán)境變量?查看出嘹。
```
[root@loong ~]# ls /
bin boot cgroup data dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var
[root@loong ~]# echo $?
0
[root@loong ~]#
```
返回值是0漱牵,表示命令操作成功,反之將返回1~255之間的一個(gè)數(shù)值疚漆。
三 命令行展開(kāi)的練習(xí)
bash的特性之一酣胀,指使用"{ }"包括起來(lái),包含一個(gè)以逗號(hào)為分隔的路徑列表娶聘,并可展開(kāi)為多個(gè)路徑闻镶。
例如:如下方式同時(shí)創(chuàng)建/tmp/a和/tmp/b兩個(gè)目錄
[root@centos ~]# mkdir -v /tmp/{a,b}
mkdir: 已創(chuàng)建目錄 "/tmp/a"
mkdir: 已創(chuàng)建目錄 "/tmp/b"
1、創(chuàng)建/tmp目錄下的a_c,a_d,b_c,b_d目錄
[root@centos ~]# mkdir /tmp/{a,b}_{c,d}
[root@centos ~]# ls /tmp
8eabc a_c a_d b_c b_d issue.bak magedu soo.e vmware-root vmware-tools-distrib
[root@centos ~]#
2丸升、創(chuàng)建如下目錄結(jié)構(gòu)
[root@centos ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/rc.d/init.d,sysconfig/network-scripts,lab/modules,lab64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{log,run,lock}}
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/bin"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/boot"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/boot/grub"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/dev"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/etc"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/etc/rc.d"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/sysconfig"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/sysconfig/network-scripts"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/lab"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/lab/modules"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/lab64"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/proc"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/sbin"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/sys"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/tmp"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/usr"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/usr/local"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/usr/local/bin"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/usr/local/sbin"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/var"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/var/log"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/var/run"
mkdir: 已創(chuàng)建目錄 "/tmp/mylinux/var/lock"
[root@centos ~]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ └── rc.d
│ └── init.d
├── lab
│ └── modules
├── lab64
├── proc
├── sbin
├── sys
├── sysconfig
│ └── network-scripts
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
24 directories, 0 files
[root@centos ~]#
四 文件元數(shù)據(jù)信息有哪些铆农?分別什么含義?怎么修改時(shí)間戳信息狡耻?
文件的數(shù)據(jù)由兩部分組成:
元數(shù)據(jù)(metadata):存放于文件系統(tǒng)中的inode里墩剖;標(biāo)明文件的狀態(tài)。顯示內(nèi)容包括:
文件路徑
文件大小
文件占用block
每個(gè)IO block大小
文件類(lèi)型
文件所在設(shè)備的主/次設(shè)備號(hào)
文件的inode
文件被硬鏈接次數(shù)
文件權(quán)限
文件的屬主UID
文件的屬組GID
環(huán)境(SELinux)
access time:最近訪問(wèn)時(shí)間
modify time:最近更改時(shí)間夷狰,指數(shù)據(jù)發(fā)生變化
change time:最近改變時(shí)間岭皂,指元數(shù)據(jù)發(fā)生變化
數(shù)據(jù)(data):存放在data blocks里,為實(shí)際的文件內(nèi)容沼头。
查看文件元數(shù)據(jù)的命令是stat爷绘,修改文件時(shí)間戳使用touch命令。
touch命令用法:touch 文件名
選項(xiàng):
-c :文件不存在時(shí)进倍,不創(chuàng)建空文件
-a:僅修改access time
-m:僅修改modify time
-t:按指定的時(shí)間格式修改土至。
時(shí)間格式 [cc]YYMMDDhhmm[.ss],年月日時(shí)分秒
示例:
1猾昆、修改access time陶因,改為2020-02-10 05:05:5
touch -at 時(shí)間格式 文件路徑
[root@centos ~]# stat /etc/issue
File: "/etc/issue"
Size: 47 Blocks: 8 IO Block: 4096 普通文件
Device: 802h/2050d Inode: 87 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-13 15:31:36.481534982 +0800
Modify: 2012-06-26 17:29:36.000000000 +0800
Change: 2018-06-07 16:40:13.037753438 +0800
[root@centos ~]#touch -at 202002100505.05 /etc/issue
[root@centos ~]# stat /etc/issue
File: "/etc/issue"
Size: 47 Blocks: 8 IO Block: 4096 普通文件
Device: 802h/2050d Inode: 87 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-10 05:05:05.000000000 +0800
Modify: 2012-06-26 17:29:36.000000000 +0800
Change: 2020-02-13 17:18:49.333657546 +0800
修改modify time ,改為2020-01-12 23:23:23
touch -mt 時(shí)間格式 文件路徑
File: "/etc/issue"
Size: 47 Blocks: 8 IO Block: 4096 普通文件
Device: 802h/2050d Inode: 87 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-10 05:05:05.000000000 +0800
Modify: 2012-06-26 17:29:36.000000000 +0800
Change: 2020-02-13 17:18:49.333657546 +0800
[root@centos ~]# touch -mt 202001122323.23 /etc/issue
[root@centos ~]# stat /etc/issue
File: "/etc/issue"
Size: 47 Blocks: 8 IO Block: 4096 普通文件
Device: 802h/2050d Inode: 87 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-10 05:05:05.000000000 +0800
Modify: 2020-01-12 23:23:23.000000000 +0800
Change: 2020-02-13 17:24:18.979678792 +0800
[root@centos ~]#