1. 程式人生 > 資訊 >NASA:哈勃太空望遠鏡因計算機故障停機,現已運作 31 年

NASA:哈勃太空望遠鏡因計算機故障停機,現已運作 31 年

檔案處理基礎

Linux系統目錄的目錄結構

系統目錄作用介紹

絕對路徑與相對路徑

檔案管理

基本命令

檢視檔案內容的指令

一、Linux系統的目錄結構

​ Linux系統 目錄

​ Windows系統 資料夾

​ windows 系統:多跟結構

​ C:\a

​ D:\x

Linux系統:單根結構

​ a/b/c/d.txt

​ 登入系統之後輸入 ls /

​ 樹狀目錄結構:

以下是這些目錄的解釋:

  • /bin:

    bin是Binaries的縮寫,這個目錄存放著最經常使用的命令。

  • /boot:

    存放的是啟動Linux時使用的一些核心檔案,包括一些連線檔案以及映象檔案

  • /dev:

    dev是device(裝置)的縮寫,該目錄下存放的是Linux的外部裝置,在Linux中訪問裝置的方式和訪問檔案是相同的

  • /etc:

    etc是etcetera(等等)的縮寫,這個目錄用來存放所有的系統管理所需要的配置檔案和子目錄

  • /home:

    使用者的主目錄,在Linux中,每個使用者都有一個自己的目錄,一般該目錄是以使用者的賬戶命名的

  • /lib:

    lib是library(庫)的縮寫這個目錄裡存放著系統最基本的動態連線共享庫,其作用類似Windows裡的dll檔案

  • /lost+found:

    這個目錄一般情況下是空的,當系統非法關機後,這裡存放了一些檔案

  • /media:

    Linux系統自動識別一些裝置,例如u盤,等當識別後,Linux會把識別的裝置掛載到這個目錄下

  • /mnt:

    系統提供該目錄是為了讓使用者臨時掛載別的檔案系統的,我們可以將光碟機掛載在 /mnt/ 上,然後進入該目錄就可以檢視光碟機裡的內容了。

  • /opt:

    opt是optional(可選)的縮寫,這是給主機額外安裝軟體所擺放的目錄

  • /proc

    proc是processes(程序)的縮寫,/proc 是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心執行狀態的一系列特殊檔案,這個目錄是一個虛擬的目錄,它是系統記憶體的對映,我們可以通過直接訪問這個目錄來獲取系統資訊。
    這個目錄的內容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔案,比如可以通過下面的命令來遮蔽主機的ping命令,使別人無法ping你的機器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root:

    該目錄為系統管理員,也稱作超級許可權的使用者目錄

  • /sbin:

    s 就是 Super User 的意思,是 Superuser Binaries (超級使用者的二進位制檔案) 的縮寫,這裡存放的是系統管理員使用的系統管理程式。

  • /selinux:

    這個目錄是 Redhat/CentOS 所特有的目錄,Selinux 是一個安全機制,類似於 windows 的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux相關的檔案

  • /srv:

    該目錄存放一些服務啟動之後需要提取的資料

  • /sys:

    這是 Linux2.6 核心的一個很大的變化。該目錄下安裝了 2.6 核心中新出現的一個檔案系統 sysfs 。

    sysfs 檔案系統集成了下面3種檔案系統的資訊:針對程序資訊的 proc 檔案系統、針對裝置的 devfs 檔案系統以及針對偽終端的 devpts 檔案系統。

    該檔案系統是核心裝置樹的一個直觀反映。

    當一個核心物件被建立的時候,對應的檔案和目錄也在核心物件子系統中被建立。

  • /temp:

    tmp 是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時檔案的。

  • /user:

    usr 是 unix shared resources(共享資源) 的縮寫,這是一個非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄。

  • /usr/bin:
    系統使用者使用的應用程式。

  • /usr/sbin:
    超級使用者使用的比較高階的管理程式和系統守護程式。

  • /usr/src:
    核心原始碼預設的放置目錄。

  • /var
    var 是 variable(變數) 的縮寫,這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌檔案。

  • /run
    是一個臨時檔案系統,儲存系統啟動以來的資訊。當系統重啟時,這個目錄下的檔案應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。

二、絕對路徑與相對路徑

​ 從跟開始寫的的路徑就是絕對路徑,否則就是相對路徑

# 1、絕對路徑示例
touch /home/alice/file1
touch ~alice/file2

# 2、相對路徑示例
touch ../file3
touch file4
touch abc/file5

三、系統目錄作用介紹

root 使用者的家目錄:/root

在Linux檔案系統中有兩個特殊的目錄,一個使用者所在的工作目錄,也叫當前目錄,可以使用一個點 . 來表示;另一個是當前目錄的上一級目錄,也叫父目錄,可以使用兩個點 .. 來表示。

  • . :代表當前的目錄,也可以使用 ./ 來表示;
  • .. :代表上一層目錄,也可以 ../ 來代表。

如果一個目錄或檔名以一個點 . 開始,表示這個目錄或檔案是一個隱藏目錄或檔案(如:.bashrc)。即以預設方式查詢時,不顯示該目錄或檔案。

普通使用者的家目錄:/home/xx

/etc/sysconfig/network-scripts/ifcfg

四、檔案管理

1.基本命令

#1、檢視當前所在的目錄
[root@localhost ~]# pwd
/root

#2、切換目錄
cd  絕對路徑    如:cd /home/alice     cd ~alice
cd  相對路徑    如:cd home/alice      cd ..
cd -      # 返回上次目錄  
cd        # 直接回家,等同於cd ~
cd .      #保持當前目錄不變
cd ..     #切換到當前目錄的上一級目錄

#3、檢視目錄樹:需要先安裝tree命令,執行yum install tree -y
tree -a 目錄    # 顯示所有檔案,包括隱藏檔案
tree -d 目錄    # 只顯示子目錄
tree -L 1 目錄  # -L 遍歷目錄的最大層數,-L後應該是大於0的正整數
tree -F 目錄    # -F 在條目後加上檔案型別的指示符號,例如會在顯示出的目錄後面加上左斜槓/

[root@localhost ~]# tree /a  
/a
├── b
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── bb
│   ├── a.txt
│   ├── b.txt
│   └── c.txt
└── bbbb

瞭解一下tree命令其他選項
-a 顯示所有檔案和目錄。
-A 使用ASNI繪圖字元顯示樹狀圖而非以ASCII字元組合。
-C 在檔案和目錄清單加上色彩,便於區分各種型別。
-d 顯示目錄名稱而非內容。
-D 列出檔案或目錄的更改時間。
-f 在每個檔案或目錄之前,顯示完整的相對路徑名稱。
-F 在執行檔案,目錄,Socket,符號連線,管道名稱名稱,各自加上"*","/","=","@","|"號。
-g 列出檔案或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼。
-i 不以階梯狀列出檔案或目錄名稱。
-I 不顯示符合範本樣式的檔案或目錄名稱。
-l 如遇到性質為符號連線的目錄,直接列出該連線所指向的原始目錄。
-n 不在檔案和目錄清單加上色彩。
-N 直接列出檔案和目錄名稱,包括控制字元。
-p 列出許可權標示。
-P 只顯示符合範本樣式的檔案或目錄名稱。
-q 用"?"號取代控制字元,列出檔案和目錄名稱。
-s 列出檔案或目錄大小。
-t 用檔案和目錄的更改時間排序。
-u 列出檔案或目錄的擁有者名稱,沒有對應的名稱時,則顯示使用者識別碼。
-x 將範圍侷限在現行的檔案系統中,若指定目錄下的某些子目錄,其存放於另一個檔案系統上,則將該子目錄予以排除在尋找範圍外。

#4、瀏覽
ls        # 預設瀏覽當目錄
ls -l 目錄 # 瀏覽目錄下的子目錄子檔名的詳細資訊
ls -al 目錄 # 瀏覽的結果中包含隱藏檔案
ls -dl 目錄 # 檢視目錄

[root@localhost ~]# ll a.txt 
-rw-r--r--. 1 root root 0 12月 15 14:02 a.txt

# 各部分解析如下
-rw-r--r--. 許可權,後面的點代表是否在selinux開啟的情況下(enforcing或者permissive都屬於開啟)建立的檔案

1               硬連結個數
root            屬主
root            屬組
0               檔案大小,單位位元組
12月 15 14:02   檔案修改時間
a.txt           檔名字

# 許可權的第一個為代表檔案型別
格式         說明
-            普通檔案(文字,    二進位制,    壓縮包,    圖片,    日誌等)    
d            目錄檔案
b            裝置檔案(塊裝置)儲存裝置硬碟    /dev/sda1,    /dev/sda2
c            裝置檔案(字元裝置)印表機,終端    /dev/tty1,    /dev/zero
s            套接字檔案,    程序間通訊(socket)
p            管道檔案
l            連結檔案

2.建立/複製/移動/刪除

建立

# 1.建立檔案:touch
touch 123.txt  //無建立,有則修改時間
# 2.建立目錄:mkdir
mkdir cc
mkdir -p /home/dir8/1111  //遞迴建立,包括父目錄的建立


複製

cp 源 目標
選項與引數
-a:相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)

-d:若來源檔為連結檔的屬性(link file),則複製連結檔屬性而非檔案本身;

-f:為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除後再嘗試一次;

-i:若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)

-l:進行硬式連結(hard link)的連結檔建立,而非複製檔案本身;

-p:連同檔案的屬性一起復制過去,而非使用預設屬性(備份常用);

-r:遞迴持續複製,用於目錄的複製行為;(常用)

-s:複製成為符號連結檔 (symbolic link),亦即『捷徑』檔案;

-u:若 destination 比 source 舊才升級 destination !

移動與複製

#1、=============複製:mv   
mv 源 目標
# mv file2 /home/dir3   將file2移動到/home/dir3裡
# mv file4 file5                將file4重新命名為file5,當前位置裡的移動就是重新命名

#2、=============複製:rm
示例:刪除/home/dir1       
# cd /home
# rm -rf dir1       
-r 遞迴
-f force強制
-v 詳細過程

檢視檔案內容

cat  由第一行開始顯示檔案內容
tac  從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
nl   顯示的時候,順道輸出行號!
more 一頁一頁的顯示檔案內容
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
head 只看頭幾行
tail 只看尾巴幾行

主要介紹cat
cat     
-n  顯示行號
-A  包括控制字元(換行符)linux $  Windows ^M$

修改檔案內容

#1、命令列模式:在編輯模式下按下ESC鍵返回命令列模式。
vi的預設模式。在這一模式中,所有的輸入被解釋成vi命令,可以執行修改、複製、移動、貼上和刪除正文等命令,也可以進行移動游標、搜尋字串和退出vi的操作等。
​
#2、編輯/插入模式:輸入a、i、o之一
在編輯模式中,可以往一個檔案中輸入正文。在這一模式下,輸入的每一個字元都被vi編輯器解釋為輸入的正文。使用ESC鍵返回命令列模式。
a:進入插入模式並在游標之後進行新增。
i:進入插入模式並在游標之前進行插入。
o:進入插入模式並在當前(游標所在)行之下開啟新的一行。
​
#3、擴充套件/末行模式:輸入冒號:
在一些UNIX系統上也叫最後一行模式。在這一模式下,可以使用一些高階編輯命令,如搜尋和替代字串、存檔或退出vi編輯器等。要進入最後一行模式,需要在命令列模式中輸入冒號(:),冒號這一操作將把游標移到螢幕的最後一行。

#4、在vi編輯器常見指令
0 數字0 移動到這一行的最前面字元處
$ 移動到這一行的最後面字元處
dd 刪除游標所在的那一行
ndd n 為數字,刪除游標所在的向下n行, 例如:20dd則是刪除20行
yy 複製游標所在的那一行
nyy n 為數字,複製游標所在的向下n行,例如:20yy則是複製20行
p(小寫) p 為將已複製的資料在游標下一行貼上
P(大寫) P 則為貼在遊標上一行
u 復原前一個操作
ctrl + r 重做上一次操作
:w 將檔案存入/寫入磁碟
:q 退出並不存檔
:wq 儲存並退出
G 游標移動到這個檔案的最後一行
nG n為數字,游標移動到這個檔案的第N行
gg 移動到這個檔案的第一行
H 游標移動在這個螢幕最上方
M 游標移動在這個螢幕的中央那一行的第一個字元
L 游標移動到這個螢幕最下方的第一個字元

vi ===> vim 檔案編輯器
# vim /boot/grub2/grub.cfg
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
​
命令模式:
    a. 游標定位 
        hjkl  
        0 $ 
        gg G  
        3G      進入第三行 
        /string(n N 可以迴圈的)  快速定位到某一行  
                  
    b. 文字編輯(少量)
        y       複製  yy 3yy  ygg  yG (以行為單位)
        d       .刪除 dd 3dd dgg  dG      (以行為單位) 
        p       貼上
        x       刪除游標所在的字元
        D       從游標處刪除到行尾
        u       undo撤銷
        ^r      redo重做
         r      可以用來修改一個字元
    
    c. 進入其它模式
        a       進入插入模式
        i       進入插入模式
        o       進入插入模式
        A       進入插入模式
        
        :       進入末行模式
        ^v  進入可視塊模式
        R   進入替換模式
        
​
插入模式:
        ^p  唯一補齊
​
​
末行模式:
    a. 儲存退出
        :10 進入第10行   
        :w      儲存   
        :q      退出    
        :wq     儲存並退出      
        :w!     強制儲存    
        :q!     不儲存並退出       
        :wq!    強制儲存退出
        :x      儲存並退出
        
    b. 查詢替換
        :範圍 s/old/new/選項        
        :1,5 s/Note/yyy/                從1-5行的Note 替換為yyy   
        :5,$ s/Note/yyy/                $表示最後一行
        :1,$ s/to/xxx/g     =    :% s/to/xxx/g    %表示全文  g表示全域性
        :4,9 s/^#//                         4-9行的以#開頭的替換為空
        :% s#/dev/sda#/var/ccc#g
        :,8 s/to/xxx/           從當前行到第8行
        
    c. 讀入檔案/寫檔案
        :w
        :w /aaa.txt                         另存為/aaa.txt  
        :1,3 w /2.txt
        :1 w! /root/ccc.txt  如果目標檔案已經存在則需要加!號
        :r /etc/hosts
​
    d. 設定環境     
        臨時設定:       
        :set nu                                 設定行號      
        :set ic                                 不區分大小寫
        :set ai                             自動縮排
        :set list
        :set nonu                       取消設定行號     
        :set noic
​
        永久的環境:
        /etc/vimrc                      影響所有系統使用者
        ~/.vimrc                    影響某一個使用者
        # vim ~/.vimrc  # 在家目錄下新增一個檔案,輸入下述內容
        set ic
        set nu
​
# vim -O /etc/hosts /etc/grub.conf      ^w 按兩次切換
# vimdiff grub.conf /etc/grub.conf      對比檔案,^w 按兩次切換       
# vim -p /etc/hosts /etc/grub.conf      ^PgUp, ^PgDn
# 同時編輯多個檔案
#1、
vim -o 檔案1 檔案2  # 水平分隔
vim -O 檔案1 檔案2   # 垂直分隔
使用ctrl + ww切換
​
#2、
vim -p /etc/hosts /etc/grub.conf      
使用 ^PgUp, ^PgDn切換