linux文件系統(tǒng)
1.命令的一般用法
命令[-選項(xiàng)][參數(shù)列表]
ls 輸出當(dāng)前目錄下的所有文件和文件夾
ls -a 使用ls顯示隱藏文件或者文件夾
ls -l 可以顯示文件和文件夾的屬性
ls -la 可以顯示所有文件和文件夾的屬性
2.從linux終端獲取幫助
help cd ? ?查看cd命令的使用方法
type cd ? ?查看指定命令是否為內(nèi)建命令
命令 -- help ? ?可以用于非內(nèi)建命令的查看
man 命令 ? ?查看幫助信息
3.命令行文本編輯器
nano 文件名 ? ?如果該文件存在則打開(kāi),否則自動(dòng)新建該文件 t1.txt
移動(dòng)鼠標(biāo)可以插入內(nèi)容
^代表ctrl鍵 執(zhí)行相應(yīng)的保存操作即可
2.目錄和路徑
/ ?根目錄
/bin ?可執(zhí)行文件
/boot ?開(kāi)機(jī)引導(dǎo)文件
/dev ?硬件設(shè)備或者接口設(shè)備的抽象文件
/etc ?系統(tǒng)的主要配置文件
/home ?用戶的主目錄包括保存的文件,個(gè)人設(shè)置等
/lib ?/bin和/sbin中命令會(huì)調(diào)用的函數(shù)庫(kù)
/media ?可移除媒體的掛載點(diǎn)
/mnt ?臨時(shí)掛載的文件系統(tǒng)
/opt ?第三方應(yīng)用程序的放置目錄
/proc ?虛擬文件系統(tǒng)
/sbin ?必要的系統(tǒng)二進(jìn)制文件
/srv ?站點(diǎn)的具體數(shù)據(jù)
/tmp ?臨時(shí)文件
/usr ?用于存儲(chǔ)只讀用戶數(shù)據(jù)的第二層次
/var ?在正常系統(tǒng)運(yùn)行時(shí)不斷變化的文件
/run ?自最后一次啟動(dòng)以來(lái)運(yùn)行中系統(tǒng)的信息
? ? ? ? ? ? ?home --- user1
目錄樹(shù) / ----- bin ---- bash/cd
linux系統(tǒng)只有一個(gè)根
特殊目錄符號(hào)
. ? 當(dāng)前目錄
~ ? 當(dāng)前登陸賬戶的主目錄
.. ? 上層目錄
~account ? account賬戶的主目錄
- ? 上一個(gè)工作目錄
相對(duì)路徑和絕對(duì)路徑
絕對(duì)路徑: cd /home/lala/pycharm/bin/icons
相對(duì)路徑: cd ../../help
path 環(huán)境變量
echo $PATH ? ?顯示path環(huán)境變量?jī)?nèi)容
export PATH=~/pycharm/bin: $PATH ? ?添加path環(huán)境變量
目錄管理
pwd ? ?顯示當(dāng)前工作目錄
help pwd ?查看pwd幫助信息
查看文件目錄和文件
ls -a ?所有文件包括隱藏文件和. ..兩個(gè)特殊目錄
ls -A ?所有文件不顯示. ..兩個(gè)特殊目錄
ls -h ?以方便閱讀的形式顯示文件單位
ls -i ?顯示文件的節(jié)點(diǎn)信息
ls -l ?顯示文件的詳細(xì)信息
ls -R ?遞歸顯示目錄和子目錄的內(nèi)容
ls -S ?文件從大到小順序排列
ls -t ?按照文件的修改順序排列 新的在前面
常用的目錄操作
mkdir 文件名 ? ?創(chuàng)建新的文件夾
mkdir -p 文件名/文件夾/ ? 創(chuàng)建多級(jí)目錄(需要之前創(chuàng)建的文件名)
mv 文件夾1 文件夾2 ? ?把目錄名稱從文件夾1改名為文件夾2
mv 文件夾1 ~/文件夾2 ? ?把文件夾1移動(dòng)到文件夾2中
rm 文件名 ? ?刪除指定文件
rm -r 文件夾 ? ?遞歸刪除指定目錄
文件管理
- 普通文件 ?文本 二進(jìn)制 數(shù)據(jù)格式
d 目錄 ?directory 文件夾
l 連接文件 ?link ?快捷方式
b 塊設(shè)備 ?block ?硬盤 u盤 sd卡等
c 字符設(shè)備 ?character ?一些端口的接口設(shè)備 鼠標(biāo) 鍵盤等
s 套接字 ?sockets ?數(shù)據(jù)接口文件 常用于網(wǎng)絡(luò)上的數(shù)據(jù)連接
p 管道 ?pipe 解決多個(gè)程序同時(shí)訪問(wèn)一個(gè)文件引起的錯(cuò)誤
file 文件名 ? ?查看文件類型
ls -l | grep -w 文件名 ? 查看文件的詳細(xì)信息 ? 開(kāi)頭的字母可以反映文件的類型
管道是一系列把標(biāo)準(zhǔn)輸入輸出連接起來(lái)的進(jìn)程 在linux系統(tǒng)中有命名管道和匿名管道兩種
匿名管道符"|"表示 用來(lái)連接兩個(gè)或者多個(gè)命令 將前一個(gè)命令的輸出作為第二個(gè)命令的輸入?yún)?shù) ? 例如:ls | grep lib
命名管道有明確的名稱 以文件的形式儲(chǔ)存在文件系統(tǒng) 命名管道可以被多個(gè)進(jìn)程同時(shí)訪問(wèn) 達(dá)到通信的目的
mkfifo tst_fifo ? ?創(chuàng)建命名管道
ls -l | grep ^p ? ? 查看管道文件 此時(shí)文件開(kāi)頭信息為p
新建文件
1> 使用touch命令創(chuàng)建文件 ?touch是修改文件訪問(wèn)時(shí)間為當(dāng)前時(shí)間 ?當(dāng)文件不存在時(shí)會(huì)自動(dòng)創(chuàng)建
ls -l | grep ^- ? ?查看普通文件
touch lal.txt ? ?此時(shí)由于文件不存在會(huì)創(chuàng)建一個(gè)lal.txt
2> 文件編輯器創(chuàng)建 使用nano打開(kāi)時(shí) 若文件存在會(huì)直接打開(kāi) 若文件不存在會(huì)創(chuàng)建后打開(kāi)
nano lal2.txt ? 此時(shí)由于文件不存在會(huì)創(chuàng)建一個(gè)lal2.txt 并打開(kāi)
3> 使用重定向的方式創(chuàng)建文件 ?命令的結(jié)果會(huì)顯示在終端中 可以通過(guò)重定向的方式創(chuàng)建一個(gè)文件并保存執(zhí)行結(jié)果
> ?當(dāng)目標(biāo)文件已經(jīng)存在時(shí) >輸出內(nèi)容會(huì)覆蓋源文件中已經(jīng)存在的內(nèi)容
>> ?當(dāng)目標(biāo)文件已經(jīng)存在時(shí) >>輸出內(nèi)容會(huì)追加到源文件的后面
> 'line_>.txt' ? ?創(chuàng)建‘line_>.txt’
>> 'line_>>.txt' ? ?創(chuàng)建‘line_>>.txt’
ls -l > 'line_>>.txt' ? 把ls -l的結(jié)果覆蓋寫(xiě)入‘line_>>.txt’
ls -t >> 'line_>>.txt' ?把ls -t的結(jié)果追加寫(xiě)入‘line_>>txt’
復(fù)制 移動(dòng) 刪除文件
cp 文件名1 文件名2 ? ?復(fù)制文件名1命名為文件名2
cp -s 文件名1 文件名2 ? 為源文件創(chuàng)建快捷方式命名為文件名2
cp -p 文件名1 文件名2 ? ?完整復(fù)制文件的屬性和內(nèi)容
cp -a ?遞歸復(fù)制,復(fù)制的數(shù)據(jù)會(huì)保留原有數(shù)據(jù)的時(shí)間戳等信息
移動(dòng)文件
mkdir dir1 | mkdir dir2 ? ?創(chuàng)建兩個(gè)文件夾 dir1 dir2
touch test.txt | ls | grep mv test.txt ? ?創(chuàng)建test.txt文件并選擇此文件移動(dòng)
mv text.txt ~/dir2 ? ?把text.txt文件移動(dòng)到dir2文件夾中
mv -i text.txt ~/dir ? ?如果目標(biāo)文件存在則覆蓋
mv -b text.txt ~/dir ? ?自動(dòng)備份重名文件后直接移動(dòng)
rm -r 文件夾名 ? ?刪除目錄
rm 文件 ? ?刪除文件
rm -f 文件 ? ?強(qiáng)制刪除此文件,謹(jǐn)慎使用
搜索文件
使用which命令搜索path環(huán)境變量中包含的命令的具體路徑
which ls ? ?查找ls命令的路徑
使用locate查找文檔路徑
locate pycharm ? ?命令查找所有包括pycharm關(guān)鍵詞的文件
locate -c pycharm ? ?輸出查找到的文件個(gè)數(shù)
locate -l 3 pycharm ? ?輸出查找到的前三個(gè)文檔
使用find命令查找
find -mtime -3 | grep uiyui ? ?查找三天內(nèi)修改過(guò)的文件 | grep uiyui(篩選條件)
find /home -user lala ? ?尋找某路徑下屬于lala用戶的所有文件
find -name uiyui ? ?根據(jù)文件名查找文件路徑
find -type p ? ?根據(jù)文件類型來(lái)查找文件
顯示文件內(nèi)容
使用cat來(lái)實(shí)現(xiàn)文件的拼接和查看
nano moji1.txt ? ?創(chuàng)建moji1
nano moji2.txt ? ?創(chuàng)建moji2
cat moji1.txt moji2.txt > moji.txt ? ?合并為moji
cat moji.txt ? ?把moji.txt的內(nèi)容輸出到終端
cat -n moji.txt ? 查看文件內(nèi)容和行號(hào)
當(dāng)文件內(nèi)容較長(zhǎng)時(shí)可以通過(guò)more命令來(lái)實(shí)現(xiàn)分頁(yè)查看
more .bashrc ? ?使用more模式來(lái)閱讀.bashrc文件
空格鍵:下一屏內(nèi)容 ?回車:下一行內(nèi)容 ?B:顯示上一屏的內(nèi)容 ?Q:退出
less命令
less .bashrc ? ?使用less模式來(lái)閱讀.bashrc文件
空格:下一屏 ? B:上一屏 ?右鍵:文檔內(nèi)容右移 ?左鍵:文檔內(nèi)容左移
d:向下半屏 ?u:向上半屏 ?回車:下一行 ?y:上一行
使用head,tail命令讀取頭尾
head -n 5 .bashrc ?讀取.bashrc文件的前五行
head -c 100 .bashrc ?讀取.bashrc文件的前一百個(gè)字符
tail -n 5 .bashrc ?讀取文件的最后五行
tail -n + 115 .bashrc ?輸出文件第(+)115行到最后
grep命令是一個(gè)非常強(qiáng)大的文本處理命令 根據(jù)關(guān)鍵詞來(lái)實(shí)現(xiàn)對(duì)文本內(nèi)容的篩選
常用選項(xiàng)如下
-a 不忽略二進(jìn)制數(shù)據(jù)
-b 顯示行號(hào)和匹配字符在整個(gè)文檔的位置
-c 顯示匹配關(guān)鍵詞內(nèi)容的行數(shù)并合并
-e 指定關(guān)鍵詞 可以指定多個(gè)
-E 指定正則表達(dá)式
-i 查找是不區(qū)分大小寫(xiě)
-n 顯示匹配的行號(hào)
-w 顯示和關(guān)鍵詞完全匹配的內(nèi)容
-o 只輸出文件中匹配到的內(nèi)容 ?grep -n -w -o "if" .bashrc
使用管道符連接ls和grep命令可以實(shí)現(xiàn)關(guān)鍵詞篩選 ls | grep cp
文件的壓縮和備份
gzip壓縮
-d 解壓縮文件
-l 輸出壓縮包中儲(chǔ)存的原始文件信息
-# 指定壓縮等級(jí)
nano test.txt ? ?創(chuàng)建文件
ls -l | grep test.txt ? ?匹配文件
gzip test.txt ? ?壓縮文件
gzip -d test.txt.gz ? ?對(duì)壓縮文件解壓縮
bzip2壓縮使用和gzip相同 ?后綴文件是bz2
gzip和bzip2只能實(shí)現(xiàn)單個(gè)文件的壓縮,無(wú)法實(shí)現(xiàn)文件的打包
可以使用tar命令將多個(gè)文件合并為一個(gè)壓縮包
-c ?新建打包文件
-t ?查看打包文件中包含哪些文件
-x ?解壓文件包
-j ?通過(guò)bzip2的支持進(jìn)行壓縮/解壓縮
-z ?通過(guò)gzip的支持進(jìn)行壓縮/解壓縮
-C ?指定解包的目標(biāo)路徑
-p ?打包過(guò)程保留源文件的屬性和權(quán)限
-v ?輸出打包過(guò)程中正在處理的文件名
tar -zcv -f 輸出的文件名.tar.gz 要打包的目錄 ? ? 使用tar命令打包文件夾
# z使用gzip壓縮 c新建打包文件 ?v輸出打包過(guò)程中正在處理的文件名 -f向終端中寫(xiě)入
tar -ztv -f 輸出文件名.tar.gz ? ?查看打包后的壓縮包的內(nèi)容
tar -zxvf 輸出文件名.tar.gz -C 解壓目標(biāo)目錄 ? ?解壓到目標(biāo)目錄
# 可以使用tar命令來(lái)備份系統(tǒng)/etc目錄(良好的習(xí)慣)
sudo tar -zpvcf etc.tar.gz /etc