1、文件系統(tǒng)與目錄結(jié)構(gòu)
在不重啟的情況下愚屁,磁盤掃描搜索新增加的磁盤的方法:
echo '- - -' > /sys/class/scsi_host/host2/scan
centos6和centos7 根目錄差別:
run目錄是centos7新增加的
除了/\以及nul以外做祝,理論上其他字符都可以用作文件名:
touch ?"a b" ? 創(chuàng)建了叫a b的文件
touch ?/root/-a ? 創(chuàng)建了叫-a的文件
但不建議這樣做啡彬,避免引起不必要的誤讀和操作麻煩
命令: lsblk ?= list ?block ?列出塊設(shè)備的意思
dd ? if=/dev/zero ? of=/data/bigfile ? bs=1m ? count=1024
以上命令實現(xiàn)在data目錄下生成一個1G的bigfile文件,從dev目錄中用0填滿bigfile
pwd ?-P ? ?絕對路徑
顯示當(dāng)前目錄或文件夾真實路徑
../ ? ? ./ ?相對路徑
../ ? 表示父目錄 ? ./表示當(dāng)前目錄
命令:basename ? 文件路徑
只查看路徑的基名
命令: dirname ? ?文件路徑
只查看路徑的基目錄寂玲,不要文件
du ?-sh ? ?/*
查看并列出根目錄下各文件大刑迥蟆(如此類推)
*文件系統(tǒng)如果是NTFS格式冠摄,則linux系統(tǒng)默認(rèn)是無法識別的
cd ?~tiny
直接進(jìn)tiny用戶的家目錄
cd ? -?
回到剛才離開的目錄
echo ?$OLDPWD
$OLDPWD記錄上一次進(jìn)入過的文件夾路徑
2、ls 命令
ls ? -R ?
遞歸顯示文件夾內(nèi)的所有文件
ls ?-ld ? ? (ls ? -l ?相當(dāng)于 ll)
顯示當(dāng)前文件夾內(nèi)各文件(或文件夾)的詳細(xì)列表几缭,不顯示遞歸子文件
ll ?/bin ? 與ll ?/bin/ ?效果不一樣 ?/bin實際上是個軟鏈接
ls ?/data ?-1
文件名優(yōu)先級排列順序:
數(shù)字 > 字母(不區(qū)分大小寫) > 字母+數(shù)字
ls ? -S?
按文件大小排序(默認(rèn)從大到泻佑尽)
ls ? -Sr
按文件大小排序(從小到大)
ls ? -t
按修改時間(mtime)排序(從最新到最舊)
ll ? --time=atime ? ?/data/file
查看讀文件/data/file的時間
ll ? --time=ctime ? ?/data/file
查看/data/file文件的元數(shù)據(jù)的變化時間
stat ? /data/file
?查看/data/file文件的三個時間,數(shù)據(jù)修改時間年栓,讀取時間乔询,元數(shù)據(jù)修改時間
ls ? -ltu
按atime從新到舊,詳細(xì)列表排序
ls ? -U
按創(chuàng)建時間從新到舊 排序
ls ? -X
按文件后綴排序
ls ? -d ?*/
只顯示當(dāng)前文件夾的內(nèi)容韵洋,不顯示子文件夾內(nèi)容
3、文件通配符
通配符 ?* ? 代表文件名的字符(不代表文件內(nèi)容)
ls ?黄锤?
查看文件名是單個字符的文件
ls ?~-/file
查看上個瀏覽過的文件的file文件夾
ls ? file[1..20]
?顯示名稱是1到2和0的file前綴文件夾搪缨,..在里面沒用
ls ?file ?[137]
表示顯示file文件名包含1或者3或者7的文件
ls ?file[1-7] ?或者ls ?file{1..7} ? (花括號內(nèi)這樣書寫獲得順序)
顯示文件名包含1234567順序的文件
笛卡爾積的ls文件查看,按照ASCII碼規(guī)則顯示文件
ls ?f[wang]
表示查看文件名f +w或 a或 n或 g 四個字符的f文件
ls ?f[^wang]
表示查看不包含w a?n g 四個字符的f文件
ls ?-d ?.* ? (也可以 ?l. ?)
只顯示當(dāng)前目錄的隱藏文件
ls ?-R ? .[^.]* ? (排除 ..)
顯示當(dāng)前目錄的隱藏子文件
4鸵熟、touch命令
touch ? ?路徑/新建文件名
如果文件名已經(jīng)存在副编,touch命令并不會新建并覆蓋原有文件,但會把原有文件的三時間刷新到現(xiàn)在流强。
touch ? -t ? 201910200830.50 ? /etc/hosts
指定了/etc/hosts文件的atime和mtime的時間戳
touch ?-c ? f2
如果f2文件不存在痹届,則不創(chuàng)建 ?(多用來刷新文件的三時間)
touch ?`date ?-d ? "-1 day" ?+%F`.log
反向單引號嵌套日期命令,創(chuàng)建指定日期的.log文件名文件
5打月、cp命令
cp ? ?etc/hosts ? ?~tiny/
被復(fù)制到的地址队腐,tiny家目錄后沒有明確文件名,則自動生成同名hosts文件奏篙,如果tiny家目錄下已經(jīng)有hosts文件柴淘,則直接覆蓋,如果在管理員賬戶下秘通,系統(tǒng)詢問你是否覆蓋为严。
為什么呢?
在root賬號里肺稀,cp命令并不是真cp第股,而是別名 cp -i ?,將會詢問你是否覆蓋
cp ? ?文件1 ? 文件2 ? ?目標(biāo)文件目錄
當(dāng)多個文件復(fù)制到一個文件目錄下時话原,目標(biāo)文件必須是文件夾夕吻,否則報錯
cp ? -r ? 文件夾 ? ?目標(biāo)文件目錄
必須加-r才可以復(fù)制文件夾
如果以上操作再一次執(zhí)行诲锹,那么文件夾會直接被復(fù)制進(jìn)新建的文件夾底下,成了子文件夾
cp ? ?-a ? ?(包含-d ?-p ?-r ?梭冠,保留軟鏈接辕狰,保留文件原有屬性,遞歸復(fù)制子文件)
可用于完整文件復(fù)制控漠,相當(dāng)于文件備份
cp ? -av ?
可以看到復(fù)制過程(但容易造成死機)
cp ?-u
只復(fù)制新文件到舊同名文件蔓倍,舊文件不會覆蓋新同名文件
cp ? --backup=numbered ?復(fù)制文件 ? 被復(fù)制文件 ??
以上命令,被復(fù)制文件會被覆蓋盐捷,但事先會生成一份備份偶翅,可避免誤操作
cp ? /data/* ? /data/f1
以上復(fù)制命令,*表示data目錄下的所有文件碉渡,但是有個問題要注意聚谁,*并不包含.后綴的隱藏文件。
cp ?-a ? /dev/sda ? /data
復(fù)制設(shè)備文件滞诺,加-a 形导,只復(fù)制設(shè)備文件的屬性
rename ?"conf" ?"conf.bak" ? file*
rename命令,批量改名习霹,將原來帶.conf后綴的file.conf文件名朵耕,增加后綴.bak,變成file.conf.bak
6淋叶、mv命令
mv ?a ? b
沒有指明路徑阎曹,則表示將a文件改名為b,對于文件夾也適用
mv ?downloads/ ? D
改文件夾名字為D
mv ?-t ? ?移入的目錄 ? 移出的目錄
移出目錄與移入目錄的位置對調(diào)
在root管理員下煞檩,mv ?rm ?都是別名处嫌,會詢問你是否覆蓋或者是否刪除
7、rm命令
rm ? -r ?文件
遞歸刪除文件
rm ?-rf ? ?文件
強行刪除文件(慎用)
rm ?-rf ? ? / ? ?--no-preserve-root?
強行刪除根目錄下所有文件(非常危險)
出于安全起見斟湃,可以把rm定義成別名熏迹,別名實際是mv
lsof ? | grep deleted
以上命令可查看部分已經(jīng)被刪除了的文件,但還未釋放空間凝赛。有的時候當(dāng)一個用戶刪除了一個文件癣缅,但同時另一個終端的用戶在占用這個文件,就會出現(xiàn)這類情況哄酝。
> ? ?file
rm ? ?-f ? ?file
? 使用以上方法刪除大文件file友存,可確保空間立即被釋放陶衅。
8.tree命令
centos7系統(tǒng)默認(rèn)沒有安裝tree程序包:
輸入:rpm ? -ivh ?/run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
可進(jìn)行安裝屡立。
mkdir ?-p ? /data/dir1/dir2/dir3/dir4
自動判斷并創(chuàng)建子目錄dir1/dir2/dir3/dir4
rmdir ? /data/dir1
刪除子目錄(目錄必須是空的才可以刪)相比rm命令,rmdir相對安全,只能刪除空目錄
rmdir ? ?-p ? /data/dir1
遞歸刪除子目錄(只要遞歸的目錄是空的就可以刪)
cp ? ?/etc/hosts{,.bak}
以上命令利用花括號構(gòu)成參數(shù)組合膨俐,等價于:
cp ? /etc/hosts ? ?/etc/hosts.bak
表示對hosts文件在本地etc文件夾復(fù)制一份進(jìn)行備份hosts.bak
9勇皇、索引節(jié)點
inode ?--》節(jié)點編號
ls ?-i
可以查看當(dāng)前文件夾下各文件的節(jié)點編號
節(jié)點編號在同一個磁盤分區(qū)下,是唯一的
直接指針最大容量為48K=12X4k
間接指針通過不斷生成間接指針表焚刺,一個表4k敛摘,一個表指針4字節(jié),則一個表可以接受1024個間接指針乳愉,如此類推兄淫,4字節(jié)X1024X1024X1024。蔓姚。捕虽。
df ?-i
以上命令 查看各磁盤空間內(nèi)的節(jié)點編號存量
**如果系統(tǒng)遇到顯示磁盤空間滿,但是實際上查詢空間沒有滿的情況坡脐,這個問題很可能就是節(jié)點編號被消耗干凈了泄私,創(chuàng)建空文件也會占用節(jié)點編號。
當(dāng)命令參數(shù)過多時:
echo ?file{1..100000} ?| xargs ?rm
以上命令可以批量刪除花括號組合文件(參數(shù)過多時使用)
對于目錄的文件結(jié)構(gòu):
要訪問f1 备闲,f2 文件晌端,首先要查看目錄的節(jié)點編號,再通過節(jié)點編號找到目錄的數(shù)據(jù)內(nèi)容恬砂,目錄的數(shù)據(jù)內(nèi)容就是所存放的f1咧纠,f2兩個文件名以及各自的節(jié)點關(guān)系,如:f1對應(yīng)1000號節(jié)點 觉既,f2對應(yīng)2000號節(jié)點。
**當(dāng)系統(tǒng)刪除文件f1時乳幸,系統(tǒng)實際上是刪除了f1的節(jié)點空間瞪讼。實際的數(shù)據(jù)內(nèi)容空間,并未第一時間刪除粹断。等待新的數(shù)據(jù)對它進(jìn)行覆蓋
*shred ?-zv ?hosts
*shred ?-zv ?-n 6 ?hosts ?(覆蓋6次)
以上命令是利用其它字符覆蓋hosts的內(nèi)容符欠,真正刪除文件數(shù)據(jù)內(nèi)容
10、軟鏈接和硬鏈接
ln ?f1 ?f2
創(chuàng)建硬鏈接瓶埋,f1和f2 兩個節(jié)點編號相同
**硬鏈接本質(zhì)上是同一個文件曾撤,起了多個名字。
**假如用rm刪除了f2晕粪,對讀寫f1不受影響
**硬鏈接和windows里面的快捷方式挤悉,有區(qū)別
**硬鏈接的創(chuàng)建,不能跨分區(qū)
**硬鏈接不支持目錄的創(chuàng)建
ln ?-s ? f2 ?f2link
創(chuàng)建軟鏈接巫湘,f2和f2link 節(jié)點編號不同
**軟鏈接之間的文件大小毫無關(guān)系
**如果軟鏈接的原文件f2被刪除装悲,則鏈接不能訪問f2
**軟鏈接可以跨分區(qū)創(chuàng)建
**軟鏈接可以創(chuàng)建目錄鏈接
** ?ll -i ? 查看的鏈接數(shù)不會增長
以上創(chuàng)建f2的軟鏈接時出現(xiàn)紅色錯誤昏鹃。要避免創(chuàng)建錯誤,輸入的f2路徑必須是相對于目標(biāo)位置/root/的路徑诀诊,而不能是相對于當(dāng)前目錄data下的路徑洞渤。也可以直接鍵入f2的絕對路徑。
readlink ? 文件名
直接查看文件的軟鏈接
11属瓣、file命令
file ? ?文件
例: file ?tree.txt
以上命令可以查看文件屬于什么類型(文本载迄、壓縮、可執(zhí)行程序)奠涌,而判斷文件類型的方式是看該文件的頭部信息宪巨,叫magic number