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切換