Linux基礎篇(8)小白如何學習Linux?文件管理之結構路徑及增刪改查(上)

##Linux基礎篇

前言:

對未來最大的慷慨 就是把一切獻給現在”                   

                                                      ——阿爾貝-加繆

    很慶幸我依然擁有着想象的能力 只是單單想象是不夠的 人往往都是不知足的 而且盲目樂觀 所以想象中的未來 大都比現在的正在前行的自己所能達到的那個目的地更加美好 可我的想象是那麼動人 讓我怎麼捨得不向之奔跑 這種結局與目標之前的差距 大概只有按着加繆的這句話 才能使其縮小

    偶爾也會迷茫 有朋友告訴我 如果有一天你發現自己不再迷茫 那說明你成功了 起碼正在過着令自己滿意的生活 也許未來的不可知 是我們前進的原動力 寫在這裏 共勉

一、目錄結構

微信圖片_20201127144927.png

 #linux一切皆文件的設計思想
/bin:  #bin 是 Binaries (二進制文件) 的縮寫, 這個目錄存放着最經常使用的命令。
/boot: #這裏存放的是啓動 Linux 時使用的一些核心文件,包括一些連接文件以及鏡像文件。
/dev: #該目錄下存放的是 Linux 的外部設備,在 Linux 中訪問設備的方式和訪問文件的方式是相同的。
/etc:#這個目錄用來存放所有的系統管理所需要的配置文件
/home:#用戶的主目錄,在 Linux 中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的,如上圖中的 alice、bob 和 eve。
/lib:#這個目錄裏存放着系統最基本的動態連接共享庫,其作用類似於 Windows 裏的 DLL 文件。幾乎所有的應用程序都需要用到這些共享庫。
/lost+found:#這個目錄一般情況下是空的,當系統非法關機後,這裏就存放了一些文件。
/media:linux #系統會自動識別一些設備,例如U盤、光驅等等,當識別後,Linux 會把識別的設備掛載到這個目錄下。
/mnt:#系統提供該目錄是爲了讓用戶臨時掛載別的文件系統的,我們可以將光驅掛載在 /mnt/ 上,然後進入該目錄就可以查看光驅裏的內容了。
/opt:#這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的。
/proc:#是一種僞文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。
這個目錄的內容不在硬盤上而是在內存裏,我們也可以直接修改裏面的某些文件,比如可以通過下面的命令來屏蔽主機的ping命令,使別人無法ping你的機器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:#該目錄爲系統管理員,也稱作超級權限者的用戶主目錄。
/sbin:#超級用戶的二進制文件,這裏存放的是系統管理員使用的系統管理程序。
/srv:#該目錄存放一些服務啓動之後需要提取的數據。
/sys:#這是 Linux2.6 內核的一個很大的變化。該目錄下安裝了 2.6 內核中新出現的一個文件系統 sysfs 。
/tmp:#tmp 是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時文件的。
/usr:#usr 是 unix shared resources(共享資源) 的縮寫,這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於 windows 下的 program files 目錄。
/usr/bin:#系統用戶使用的應用程序。
/usr/sbin:#超級用戶使用的比較高級的管理程序和系統守護程序。
/usr/src: #內核源代碼默認的放置目錄。
/var:  #var 是 variable(變量) 的縮寫,這個目錄中存放着在不斷擴充着的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。
/run:#是一個臨時文件系統,存儲系統啓動以來的信息。當系統重啓時,這個目錄下的文件應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。


1)/etc/目錄

特定主機系統範圍內的配置文件

/etc/sysconfig/network-script/ifcfg-eth0  #網卡配置文件
/etc/hostname҅     #系統主機名配置文件
/etc/resolv.conf  # dns客戶端配置文件
/etc/hosts҅        #本地域名解析配置文件
/etc/rc /etc/rc.d    #/etc/rc*.d 啓動、或改變運行級時運行的scripts或scripts的目錄.
/etc/hosts           #本地域名解析文件
/etc/resolv.conf     #DNS服務器配置
/etc/fstab           #開機自動掛載系統,所有分區開機都會自動掛載
/etc/inittab         #設定系統啓動時Init進程將把系統設置成什麼樣的runlevel及加載相關的啓動文件配置
/etc/exports         #設置NFS系統用的配置文件路徑
/etc/init.d/         #這個目錄來存放系統啓動腳本
/etc/profile         #全局系統環境配置變量
/etc/issue           #認證前的輸出信息,默認輸出版本內核信息
/etc/motd           #設置認證後的輸出信息
/etc/mtab           #當前安裝的文件系統列表.由scripts初始化,並由mount 命令自動更新.需要一個當前安裝的文件系統的列表時使用,例如df 命令
/etc/group           #類似/etc/passwd ,但說明的不是用戶而是組.
/etc/passwd          #用戶數據庫,其中的域給出了用戶名、真實姓名、家目錄、加密的口令和用戶的其他信息.
/etc/shadow          #在安裝了影子口令軟件的系統上的影子口令文件.影子口令文件將/etc/passwd 文件中的加密口令移動到/etc/shadow 中,而後者只對root可讀.這使破譯口令更困難.
/etc/sudoers         #可以sudo命令的配置文件
/etc/syslog.conf     #系統日誌參數配置
/etc/shells         #列出可信任的shell.chsh 命令允許用戶在本文件指定範圍內改變登錄shell.提供一臺機器FTP服務的服務進程ftpd 檢查用戶shell是否列在/etc/shells 文件中,如果不是將不允許該用戶登錄.
/etc/opt/           #/opt/的配置文件
/etc/skel/          #默認創建用戶時,把該目錄拷貝到家目錄下


2)/dev/目錄

#/dev目錄下的設備文件
/dev/cdrom 和 /dev/sr0҅ #系統光盤鏡像設備
/dev/null  #黑洞設備
/dev/random #生成隨機數的設備
/dev/zero  # 不斷產生數據
/dev/pts/0 #虛擬的bash shell 終端,提供給遠程用戶使用 0代表第一個終端,1代表第二個終端
/dev/stderr  #錯誤輸出
/dev/stdin҅  #標準輸入
/dev/stdout  #標準輸出


二、文件的時間

#linux文件有三種時間,用stat命令查看:stat 加文件名
#訪問時間:atime,使用cat查看內容。
#修改時間:mtime,修改內容。
#改變時間:ctime,修改改內容,修改權限等屬性,凡是有改動都會變。


三、文件的類型

#方式一

ls -l 文件名 //看第一個字符
文件類型
- 普通文件(文本文件,二進制文件,壓縮文件,電影,圖片。。。)
d 目錄文件(藍色)
b 設備文件(塊設備)存儲設備硬盤,U盤 /dev/sda, /dev/sda1
c 設備文件(字符設備)打印機,終端 /dev/tty1, /dev/zero
s 套接字文件
p 管道文件
l 鏈接文件(淡藍色) 相當於windows的快捷方式 
      -        rw-r--r--    1       root  root   0   11月 22 05:13   a.txt
#例:文件類型     權限    硬鏈接個數  所有者 所屬組  大小     修改時間     文件名




#方式二

[root@web01 ~]# file a.txt  # file命令
a.txt: empty


四、路徑

#絕對路徑示例
touch /home/alice/file1
touch ~alice/file2
#相對路徑示例
touch ../file3
touch file4
touch abc/file5


五、文件管理(創建,複製,移動,刪除)

1)創建文件

touch file.txt    #無則創建 有則修改時間
touch /home/file1.txt
touch file{1..20}
touch Ego{n,N}.txt   #等同於Egon.txt EgoN.txt



2)創建目錄

mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir -v /home/{dir6,dir7}
mkdir -p /home/dir8/111/222  #遞歸創建



3)複製

cp 源文件  目標文件
cp -v install.log /home/dir1
cp -v install.log /home/dir1/aaa.txt
cp -r /etc /home/dir1
cp install.log /home/dir2
cp anaconda-ks.cfg !$
cp anaconda-ks.cfg /home/dir2
cp -r /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf
/etc/hosts .



4)移動

# mv file2 /home/dir3
# mv file4 file5 #重命名


5)刪除

rm -rf dir
-r 遞歸刪除 #也用於刪除目錄
-f 強制不提示
-v 打印過程


六、查看文件內容

 (cat less more head tail grep)
 more  #翻頁查看
 cat -n #顯示行號 -A #包括控制字符/換行符
 head -2 #默認頭10行 指定2行
 tail -1  #默認後10行 指定後1行
 tail -f /var/log/messages  #實時監測文件的尾部
 grep  #針對文件內容進行過濾
 # grep 'root' /etc/passwd
 # grep --color '^root' /etc/passwd
 grep --color 'bash$' /etc/passwd
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages #系統的日誌文件
===============================================================================
dos2unix  #將windows格式的文件轉成unix格式
unix2dos  #將Unix格式的文件系統轉換winowns格式


七、修改文件內容(VIM)

1)VIM概念

什麼是vim?:vim可以理解爲windows下面的文本編輯器比如記事本word文檔

它的主要用途是:它可以執行輸出,刪除,查找,替換,塊操作的衆多文本操作,而且可以根據自己的需求對文本進行編輯。

爲何要用vim? :主要可以用來修改配置,以及編寫腳本

vi與vim的區別 :vi不顯示高亮顏色語法,vim顯示高亮語法,其他功能沒有什麼區別


2)vim的四種模式

vim編輯器的四種模式:命令模式====>編輯模式====>可視化模式====>末行模式


#模式之間的轉換:編輯文件進入命令模式=》按i a o進入編輯模式=》ctrl加v進入可視化模式=》按shift :進入末行模式。按esc返回命令模式 。保存編輯的文件或退出進入末行模式w    q    wq     q!   x   wq! 

3)命令模式

光標定位=> 上下左右鍵   或 h j k l 鍵
在光標所在的當前行移動光標 :$行尾        0行首
gg  將光標定位到行首
G    將光標定位到行尾    如;3G是將光標定位到地3行
yy    複製  以行爲單位     如:3yy就是複製3行
p    當前光標的下一行粘貼     大P當前光標的上一行進行粘貼
D     從光標處刪除到行尾
d    刪除   dd刪除光標所在的當前行 3dd 刪除3行
x    刪除光標所在的字符
u    恢復
R   進入替換模式
ctrl -r    執行上一步操作
shift+M   將光標移動到當前頁面的中間
shift+L    將光標移動到當前頁面的行尾
shift+H   將光標移動到當前頁面的行首



4)插入模式

進入到插入模式: i a o s I A O s (這幾個進入插入模式的區別)
 i :在光標所在字符前開始插入
 a :在光標所在字符後開始插入
 o :在光標所在行的下面另起一新行插入
 s :刪除光標所在的字符並開始插入
 I :在光標所在行的行首開始插入 如果行首有空格則在空格之後插入
 A :在光標所在行的行尾開始插入
 O :在光標所在行的上面另起一行開始插入
 S :刪除光標所在行並開始插入



5)可視模式

按ctrl+v 進入可視化模式

1,添加加多行註釋:

前提:註釋的行需要整齊排列

先將光標移動到首行的開頭位置

在命令模式,按ctrl+v

上下鍵選中第一列

shift+i,然後輸入#

連續按兩下ESC


2,取消多行註釋:

註釋的行需要整齊排列

在命令模式,按ctrl+v

上下鍵選中#號

按下d


7)末行模式

w 保存
q 退出
wq 保存並退出(相當與把文件存入or寫入磁盤)
w! 強制保存
q! 不保存並退出
wq! 強制保存退出
x 保存並退出



8)查找替換

查找替換
:% s/root/yang/g   :   %表示全文   g表示全局替換       %等同於1,$
#尾部加g的作用 :不加g只替換每行的第一個,加g爲全局替換
:4,9 s/^#// :4-9行的開頭#號替換爲空
:  ,8 s/root/yang/   : 從當前行到第8行
:5,10 s/.*/#&/        5-10前加入#字符 
#w 存儲當前文件
:w /tmp/aaa.txt 另存爲/tmp/aaa.txt
:1,3 w /tmp/2.txt
#r讀入文件
:r /etc/hosts 讀入文件到當前行後
:5 r /etc/hosts 讀入文件到第5行後



9)設置環境

#臨時設置:
:set nu 設置行號 當次顯示行——臨時
:set ic 不區分大小寫
:set nonu 取消設置行號
:set noic
#永久的環境:修改vim環境配置文件
/etc/vimrc 影響所有系統用戶    vim /etc/vimrc
~/.vimrc 影響某一個用戶
# vim ~/.vimrc 新建文件也可以
set ic
set nu



10)同時編輯多個文件

vim -o 文件1 文件2  #水平分割
vim -O 文件1 文件2  #垂直分割
#Ctrl + ww 切換
vim -p /etc/hosts /etc/grub.conf
使用 ^Pgup, ^PgDn 切換



11)文件內容對比

#相同文件之間差異對比,通常用與對比修改前後的差異

diff  #文件對比

vimdiff #以vim方式打開兩個文件對比,高亮顯示不同的內容

patch 命令


12)vim執行過程

#1,vim 打開文件 a.txt

#2,進入編輯模式編輯文件

#3,編輯文件的時候vim會自動創建一個臨時文件 ( .a.txt.swp )隱藏文件

#4,編輯完成,vim會自動刪除臨時文件

#5,退出,修改成功

八、文件查找

查看命令所屬文件 # which ls

一些命令的路徑都被配置到了環境變量PATH裏了 # echo $PATH


#語法:

find [options] [path...] [expression]


1)按文件名查找

[root@localhost ~]# find /etc -name "ifcfg-eth0"
[root@localhost ~]# find /etc -iname "ifcfg-eth0" # -i 忽略大小寫
[root@localhost ~]# find /etc -iname "ifcfg-eth*"



2)按文件大小找

[root@localhost ~]# find /etc -size +3M # 大於3M
[root@localhost ~]# find /etc -size 3M
[root@localhost ~]# find /etc -size -3M
[root@localhost ~]# find /etc -size +3M -ls   # -ls找到後的處理動作



3)按時間找(atime、mtime、ctime)

[root@localhost ~]# find /etc -mtime +3 # 修改時間超過3天
[root@localhost ~]# find /etc -mtime 3 # 修改時間等於三天
[root@localhost ~]# find /etc -mtime -3  #修改時間3天以內



4)按文件屬主、屬組找

[root@localhost ~]# find /home -user egon #所有者
[root@localhost ~]# find /home -group it #所屬組
[root@localhost ~]# find /home -user egon -o -group it
[root@localhost ~]# find /home -nouser #
[root@localhost ~]# find /home -nogroup #
[root@localhost ~]# find /home -nouser -o -nogroup



5)按文件類型

[root@localhost ~]# find /dev -type f  #普通文件
[root@localhost ~]# find /dev -type d   #目錄
[root@localhost ~]# find /dev -type l   #鏈接
[root@localhost ~]# find /dev -type b   #塊設備
[root@localhost ~]# find /dev -type c   #字符設備
[root@localhost ~]# find /dev -type s   #套接字
[root@localhost ~]# find /dev -type p  #管道



6)根據inode號查找

[root@localhost ~]# find / -inum 1811



7)按文件權限

[root@localhost ~]# find . -perm 644 -ls
[root@localhost ~]# find . -perm -644 -ls
[root@localhost ~]# find . -perm -600 -ls
[root@localhost ~]# find /sbin -perm -4000 -ls # set uid
[root@localhost ~]# find /sbin -perm -2000 -ls # set gid
[root@localhost ~]# find /sbin -perm -1000 -ls # sticky



8)找道後處理的動作

-print
-ls
-delete
-exec
-ok
[root@localhost ~]# find /etc -name "ifcfg*" -print # 必須加引號
[root@localhost ~]# find /etc -name "ifcfg*" -ls
[root@localhost ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \; #非交互
[root@localhost ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; # 交互
[root@localhost ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@localhost ~]# find /etc -name "ifcfg*" -delete #



9)find結合xargs

[root@localhost ~]# find . -name "egon*.txt" |xargs rm -rf
[root@localhost ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {}
/var/tmp
[root@localhost ~]# find /test -name "ifcfg-ens33" |xargs -I {} mv {} /ttt
[root@localhost ~]# find /ttt/ -name "ifcfg*" |xargs -I {} chmod 666 {}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章