走進Linux伺服器之一:Linux操作基礎——Linux基本檔案操作(讀寫)

從日至臻發表於2020-10-21

前言

之前討論過如何對檔案和資料夾進行增刪和移動的操作,這裡我們來討論一下如何對檔案進行讀寫操作。

檔案閱讀操作

cat指令檢視全部內容

cat指令是一個專門用來檢視,也是一個只能用來檢視檔案的操作。
比如我們在我的伺服器上面寫一個C語言原始檔,程式碼如下:

#include <stdio.h>

int main(){
	printf("This is the first C program on Kanna's server.\n");
	return 0;
}

我們可以直接用一下形式直接檢視檔案內容
cat 檔名
以上面的C語言檔案為例:

[root@kanna ~] ls
Kanna.c
[root@kanna ~] cat Kanna.c 
#include <stdio.h>

int main(){
	printf("This is the first C program on Kanna's server.\n");
	return 0;
}
[root@kanna ~]

head、tail檢視開頭、結尾

顧名思義,這兩個指令就是用來看檔案的開頭和結尾的。
以這個txt檔案為例:
1.txt:

1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999
1010101010

這個檔案有很多行,一般來講如果我們只想看開頭幾行或者結尾幾行就可以用head和tail這兩個指令。
這兩個指令一般後面都要加上 -數字 以選擇檢視開頭\結尾幾行。
例子如下:

[root@kanna ~] ls
1.txt  Kanna.c
[root@kanna ~] head -3 1.txt 
1111111111
2222222222
3333333333
[root@kanna ~] tail -2 1.txt 
9999999999
1010101010
[root@kanna ~] 

例子中我們用head函式和tail函式看到了開頭三行和結尾三行。

more翻頁方式檢視檔案

當我們要檢視的檔案行數特別多的時候就可以用more指令來進行檢視,這個檢視的方式支援在終端中對檔案進行翻頁。
舉例:

[root@kanna ~] more passwd.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
syslog:x:996:994::/home/syslog:/bin/false
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
--More--(59%)

中間這一大堆的東西可以先不管,我們只看輸出的最後一行,這裡寫著只在終端顯示了這個檔案的前59%,在這裡我們按下回車可以一行一行向下繼續閱讀,按下空格可以直接切換到下一頁。

grep對檔案進行關鍵字查詢

比如我有一個這個名字為alpha.txt的檔案:

apple
banan
coconut
dog
elephant
frog
google
hello
ice
juice
kill
lemon
mango
name
orange
pen
quit
run
start
tall
universe
view
want
x-ray
yellow
zero

如果我想查詢有or的單詞,我可以:

[root@kanna ~] grep or alpha.txt 
orange

在Xshell(我用來連線伺服器的終端)中的顯示是這樣的:
在這裡插入圖片描述

檔案改寫操作

重定向

之所以把重定向放在這個位置,是因為重定向本身也涉及到關於檔案的寫入操作,重定向不像聽起來那麼深奧,其實重定向就是把本來應該在終端輸出的資訊輸出到了檔案中,比如在上面用more翻頁性檢視一個長文件時,例子中的passwd.txt就是我運用cat指令檢視在根目錄下etc資料夾在中的passwd檔案進行重定向到這個txt文件中的。

這個操作有點像C++的檔案流操作,本來用cout輸出到輸出埠的字元輸出到檔案中。

比如我們用pwd指令:

pwd

結果是這樣的:
在這裡插入圖片描述
我們建立一個名為workd的txt文字文件,把pwd的結果重定向到這個文件中,語法如下:

pwd > workd.txt

在這裡插入圖片描述
我們可以看到最後檢視workd.txt文件的時候,這個文件中顯示的是剛才pwd的結果。這就是重定向之後的結果。

重定向一般在要生成比較長的文件的時候經常用,比如用objdump來反彙編程式的時候經常用,以上面我們的Kanna.c檔案為例,我們先把他編譯,然後用objdump反彙編,把結果重定向到txt文件中:
在這裡插入圖片描述

這個時候我們再檢視Kanna.txt,由於反彙編的輸出特別多,所以我們用more來檢視

more Kanna.txt

在這裡插入圖片描述
可以看到這麼多才顯示了2%,如果要是在終端輸出檢視會非常不方便。這就讓重定向操作起到了作用。

gedit檔案編輯器

gedit檔案編輯器經常在有GUI的Linux系統上進行編輯,這個有點像Windows系統中的記事本。他們是什麼檔案都可以開啟的,雖然有些檔案開啟是亂碼或者是機器碼。在虛擬機器中執行帶有GUI視覺化圖形操作介面的CentOS使用gedit對檔案進行編輯大致如此:
在這裡插入圖片描述

vi、vim檔案編輯器

但是我們再伺服器上面,基本用的Linux系統都是沒有GUI的,因為伺服器本身不需要GUI,伺服器上面的系統都是不帶有GUI的,只有終端。輸入命令。所以在終端中,我們只能用vi、vim進行操作。推薦使用vim,這個是帶顏色的,便於區分。
比如我們用vim來檢視我們的Kanna.c
在這裡插入圖片描述
這個是用vim檢視Kanna.c的情況。

vim的模式切換

當我們剛剛用vim進行檔案讀寫操作的時候,我們發現我們雖然可以移動終端的游標,但是我們並不能輸入字元,這是因為我們現在還是在vim的命令模式(command mode),在這個狀態下,只能進行檔案的儲存、退出操作。
在這裡插入圖片描述
如上圖,我們需要按下 i 鍵(insert),切換到編輯模式(edit mode)
也可以通過按下a、o等進入編輯模式,不同按鍵的區別請大家自己去嘗試。

vim的命令模式

在命令模式下,我們可以通過輸入一個分號 : 來進行命令的輸入。按下分號後發現終端的底部也會打出一個分號,這個時候我們再分號後面輸入我們需要的操作,就可以進行相關的操作。

  1. :q 即為quit。輸入:q之後直接關閉目前正在檢視的檔案。
  2. :q! 這是強制退出,在沒有儲存的情況下可以進行強制退出,退出之前進行的操作不會被儲存。
  3. :w 即為 write,儲存
  4. :wq 即為 write and quit,儲存並退出。
  5. :set nu 每一行顯示行號
  6. :set list 顯示控制字元
  7. :set nonu取消顯示行號
  8. :set nolist取消顯示控制字元
    接下來是不需要分號的操作:
  9. yy 實現複製一行的符號(怎麼選取複製在後面提到)
  10. p 和上面的yy聯合使用,進行貼上
  11. 數字+yy複製N行。比如3yy複製三行
  12. dd 即為 delete的縮寫,刪除一整行。
  13. 同理,數字+dd即為刪除N行。比如3dd刪除三行
  14. u即為undo,撤銷操作
  15. d長按 可以實現退格(backspace)操作
  16. 按下鍵盤上的0和$實現跨越到行首和行尾
  17. gg G跨越到頁首和頁尾
  18. 3G 進入第三行,3可以換成任意數字
  19. /string (n N 可以迴圈) 查詢字元,按下n選擇下一個 (string即為查詢的字元)
  20. n,m s/string1/string2/g 在n到m行中,把所有string1全部替換為string2,g是全域性的意思,s就是switch的意思。

vim的編輯模式

在編輯模式下,檔案就像在記事本中或者在gedit中開啟的一樣,我們可以通過方向鍵對游標進行操作,如果沒有方向鍵可以先按下ESC退出到命令模式,然後再命令模式的狀態下用H,J,K,L四個鍵對游標進行移動,H向左,J向上,K向下,L向右。選取到需要的地方再按下i切回編輯模式

vim的視覺化模式

由於我們再終端中不能操作滑鼠,就會使得我們想相對的選取部分文字會很麻煩,在vim中可以用視覺化模式進行這個操作。
在命令模式中按下鍵盤上的v鍵即可進入視覺化模式。之後可以通過游標向滑鼠一樣進行選取,按下yy複製、dd刪除。

總結

本文介紹了一些關於Linux系統中如何進行檔案讀寫的操作,接下來將會介紹使用者管理和組管理相關的操作。

相關文章