Linux - 系統 - 文件目錄

吳宏東 - 記於2018年06月29日 - 博客 https://segmentfault.com/u/wu...php

Linux 文件目錄

文件類型

[-] 普通文件;
[d] 目錄;
[l] 符號連接;
[c] 字符設備;
[b] 塊設備;
[s] 套接字;
[p] 命名管道;html

常見後綴

*.txt 文本文件;
*.conf 配置文件;
.html/.xml/.yml/.sql HTML/XML/YAML/SQL文件;
.c/.cpp C/C++語言源程序文件;
.so/.ko/*.lib 模塊文件、庫文件;
.sh/.php/.py/.pl/*.rb Shell/PHP/Python/Perl/Ruby腳本文件;
*.rpm RPM文件;
*.tar tar 存檔文件;
.gz/.bz2/*.xz 由gzip/bzip2/xz生成的壓縮文件;
*.lock 用來表示某個程序或某種服務正在運行的鎖文件;
*~備份文件;linux

Shell 命令

cmd [-options] <arguments>;
單字符參數前使用一個減號(-),單詞參數前使用兩個減號(--);
多個單字符參數前可以使用一個減號;正則表達式

通配符

以.開頭的文件或目錄是隱藏的;
[*]匹配任何字符和任何數字的字符;
[?]匹配任何單字符;
[...]匹配任何包含在括號內的單字符;
[!...]匹配任何不包含在括號內的單字符;sql

# 列出當前目錄下全部c語言源文件
ls *.c;
# 列出/home目錄下全部子目錄下全部c語言源文件
ls /home/*/*.c;
# 列出當前目錄下全部以test開頭,隨後一個字符任意的.txt文件
ls test?.txt;
# 列出當前目錄下首字符是a或b或c的全部文件
ls [abc]*;
# 列出當前目錄下首字符不是a或b或c的全部文件
ls [!abc]*;
# 列出當前目錄下首字符是字母的全部文件
ls [a-zA-Z]*;

連接

硬連接:兩個文件指向硬盤上一個存儲空間,對兩個文件中任何一個進行修改都會影響另外一個文件,刪除其中一個硬盤空間不會釋放,連接數會減1;
軟連接:建立一個文件指向另外一個文件,沒法對軟連接文件進行內容修改,刪除軟連接文件的話,對源文件不影響,刪除源文件的話,軟連接文件會找不到源文件成爲死連接;shell

# 建立硬連接文件hard
ln source hard;
# 建立軟鏈接文件soft
ln -s source soft;

設備文件

設備文件指計算機外圍硬件裝置,即除了CPU和內存之外的設備;
全部設備文件都存放在/dev目錄下;
/dev/sd* 硬盤設備,sda1表示第一塊硬盤的第一個分區,sdb2表示第二塊硬盤的第二個分區;
/dev/sr0 光驅設備、移動設備;
/dev/console 系統控制檯;
/dev/tty* 本地終端設備;
/dev/pts/* 僞終端設備;
/dev/ppp* ppp設備,(Point to Point)協議設備,傳統的撥號上網;
/dev/lp* 並口設備,lp0表示第一個並口設備,lp1表示第二個並口設備;
/dev/null 空設備,也稱爲「黑洞」,全部寫入它的內容都將丟失,用於屏蔽終端輸出;
/dev/zero 零設備,能夠產生不斷的二進制零流,用於建立指定長度的空文件;segmentfault

Linux 目錄

/bin 存放二進制可執行程序;
/sbin 存放二進制可執行程序,可是隻有root用戶才能訪問;
/dev 存放設備文件;
/boot 存放系統引導文件;
/etc 存放系統配置文件;
/home 存放用戶文件根目錄;
/lib+lib64 存放共享庫和內核模塊;
/lost+found 存放系統檢查結果,發現不合法的文件都會存放在這裏,一般是空的,除非系統遭受異常損壞;
/mnt 臨時文件系統的掛載點目錄;
/media 即插即用的存儲設備的掛載點自動在這個目錄下建立;
/opt 第三方軟件的存放目錄;
/proc 是一個虛擬的文件系統,存放當前內存的映射,用於在不重啓機器的狀況下管理內核;
/root 超級用戶目錄;
/srv 系統對外提供服務的目錄;
/tmp 存放各類臨時文件;
/usr 存放系統應用程序;
/var 存放隨時須要修改的文件,如系統日誌、脫機工做目錄等;windows

文件目錄操做

# 顯示當前目錄下的全部文件和目錄(包含隱藏的)
ls -a;
# 以長格式列表顯示
ls -l;
# 以遞歸的方式顯示當前目錄及子目錄下的全部內容
ls -R;
# 僅顯示/home目錄自己,不顯示目錄下的內容
ls -dl /home;
# 顯示當前目錄的全路徑
pwd;
# 建立目錄連同子目錄一塊兒建立
mkdir -p /home/wuhd/test;
# 建立文件test.txt
touch test.txt;
# 進入/home目錄
cd /home;
# 進入當前目錄
cd .;
# 返回上一級目錄
cd ..;
# 返回上二級目錄
cd ../..;
# 顯示當前目錄以及子目錄的樹形結構
tree;
# 顯示/home目錄下的2級的樹形結構
tree -L 2 /home;
# 複製/home下某個文件到/opt目錄下
cp /home/test /opt/test;
# 複製/home下全部文件到/opt目錄下
cp /home/* /opt;
# 移動/home下某個文件到/opt目錄下
mv /home/test /opt/test;
# 強制刪除文件
rm -f /home/test;
# 刪除當前目錄下的全部隱藏文件
rm .*;
# 強制刪除wuhd目錄下的全部內容
rm -rf /tmp/wuhd;
# 在當前目錄及其子目錄下查找以yum開頭的文件
find . -name 'yum*';
# 在當前目錄及其子目錄下查找屬主wuhd的文件
find . -user "wuhd";
# 僅在當前目錄下查找以yum開頭的文件
ls yum*;

文本操做

正則表達式:bash

^ 匹配首字符,如^x,以字符x開始的字符串;
$ 匹配尾字符,如x$,以字符x結尾的字符串;
. 匹配任意一個字符,如l..e,可匹配love,life;
? 匹配任意一個可選字符,如xy?,可匹配x,xy;
* 之前面一個字符匹配零次或屢次重複,如xy*,可匹配x,xy,xyy;
+ 之前面一個字符匹配一次或屢次重複,如xy+,可匹配xy,xyy,xyyy;
[...] 匹配任意一個字符,如[xyz],可匹配x,y,z;
| 以或邏輯匹配多個匹配,如abc|xyz,可匹配abc或xyz;
\ 轉義字符,如\*,可匹配字符*;
# 正序查看文件
cat /etc/passwd;
# 顯示行號
cat -n /etc/passwd;
# 倒序查看文件
tac /etc/passwd;
# 分屏顯示,空格鍵、回車鍵翻閱,q退出
more /var/log/messages;
# 分屏顯示,空格鍵、回車鍵、PgUp、PgDn翻閱,q退出
less /var/log/messages;
# 顯示前4行內容
head -10 /var/log/messages;
# 顯示後4行內容
tail -10 /var/log/messages;
# 行數 字數 字符數 文件名
wc /var/log/messages;
# 對文本內容排序(以ASCII碼順序)
sort txt;
# 相同行只輸出一行
sort -u txt;
# 對文本內容排序(以ASCII碼逆序)
sort -r txt;
# 對文本字符串數值排序
sort -n txt;
# 比較文件差別
diff httpd.conf httpd.conf.bak;
# windows替換爲linux
sed -i 's/windows/linux/g' txt;
# 刪除每行結尾的空格
sed -i 's/*$//' txt;
# 在每行行首加上"> '
sed -i 's/^/> /' txt;
# 在每行行首去掉"> "
sed -i 's/^> //' txt;
# 刪除全部空白行
sed -i '/^$/d' txt;

打包壓縮

# 將111文件夾打包成111.tar
tar -cvf 111.tar 111;
# 解包
tar -xvf 111.tar;
# 將111文件夾用gzip打包壓縮成111.tar.gz
tar -zcvf 111.tar.gz 111;
# 解壓縮
tar -zxvf 111.tar.gz;
# 將111文件夾用bzip打包壓縮成111.tar.bz
tar -jcvf 111.tar.bz 111;
# 解壓縮
tar -jxvf 111.tar.bz;
# 將111文件夾用xz打包壓縮成111.tar.xz
tar -Jcvf 111.tar.xz 111;
# 解壓縮
tar -Jxvf 111.tar.xz;

經常使用命令

# 顯示進程樹
pstree;
# 顯示系統運行時間、用戶數、平均負載
uptime;
# 顯示文件信息
stat txt;
# 顯示在線的登陸用戶
who;
# 顯示用戶本身的身份
whoami;
# 查找程序ls的位置
whereis ls;
# 顯示文件或目錄的大小,不顯示目錄中每一個文件大小
du -sh /;
# 顯示1949年日曆
cal 1949;
# 顯示1949年10月日曆
cal 10 1949;

VI 編輯器

普通模式:less

O 上開新行;
o 下開新行;
I 行首;
A 行尾;
/str 向右搜索str;
?str 向左搜索str;
n 下一個;
N 反向下一個;
u 撤銷操做;
Z+Z 保存退出;
Z+Q 不保存退出;
<ESC> 退出插入模式; 
yy 複製當行內容;
p 粘貼複製的內容;

命令模式:

:set number 顯示行號;
:set nonumber 不顯示行號;
:n 跳到第n行;
:d 刪除當前行;
:n1,n2 d 刪除從n1行到n2行內容;
:n1,n2 w file 保存從n1行到n2行內容到文件file;
:!cmd 執行shell命令cmd;
:r!cmd 執行cmd命令並將輸出的內容寫入到光標位置;
:q 退出vi;
:wq 保存退出vi;
:q! 強制不保存退出vi;
相關文章
相關標籤/搜索