LINUX教程,linux文件管理(基礎)

 2023-10-06 阅读 29 评论 0

摘要:一:linux系統的單根目錄結構 linux與windows 的目錄結構對比 目錄 一:linux系統的單根目錄結構 文件的擴展名 二 系統目錄結構與作用 三 絕對路徑與相對路徑 四 文件管理 4.1 文件管理之:基本命令 4.2 文件管理 創建 復制 ? ?移動與刪除 4.3 查看文件內

一:linux系統的單根目錄結構

linux與windows 的目錄結構對比

目錄

一:linux系統的單根目錄結構

文件的擴展名

二 系統目錄結構與作用

三 絕對路徑與相對路徑

四 文件管理

4.1 文件管理之:基本命令

4.2 文件管理

創建

復制 ?

?移動與刪除

4.3 查看文件內容

?4.4 修改文件內容

1、什么是vim

2、為何要用vim ?

?4、vi編輯器的操作模式

?3、在vi編輯器中光標的移動

?4、在命令行模式下刪除與復制的操作

?5、粘貼命令

?6、復原和重做命令

?7、掌握擴展模式下常用的命令

8、掌握快速移動光標在文件中的位置的命令 ??

9、掌握快速在屏幕中移動光標的位置的命令 ??

10、三種模式下的操作匯總與補充 ?

?11、同時編輯多個文件

?12、文件內容對比

?13、vim執行過程

?13、練習


?linux:一切皆是文件的設計思想

LINUX教程,

ls -l 文件名 僅看的是文件的修改時間
Linux文件有
三種時間,用stat查看?
例如:stat anaconda-ks.cfg

?

?訪問時間:atime,查看內容,用cat檢測
修改時間:mtime,修改內容
改變時間:ctime,修改內容,修改權限等屬性,凡是有改動都會變

vim文檔?

文件的擴展名

linux 沒有文件擴展名

// 方法一:
ls -l 文件名 ? ?//看第一個字符
-?? ?普通文件(文本文件,二進制,壓縮文件,電影,圖片。。。),例如:/bin/ls
d?? ?目錄文件(藍色),例如/home/
b?? ?設備文件(塊設備)存儲設備硬盤,U盤,例如:/dev/sda
c?? ?設備文件(字符設備)打印機,例如:終端/dev/tty1
s?? ?套接字文件,例如:/run/rpcbind.sock?
p?? ?管道文件,例如:/run/systemd/initctl/fifo
l?? ?鏈接文件(淡藍色),例如:/bin

ps:通過顏色判斷文件的類型是錯誤的!!!

shell創建文件夾。// 方法二:
[root@xxx ~]# file /etc/grub.conf

bash shell對文件進行管理:

  1. 創建

  2. shell文件,復制

  3. 刪除

  4. 移動

  5. 查看

  6. linux用戶管理,編輯

  7. 壓縮

  8. 權限操作

  9. 查找

二 系統目錄結構與作用

Linux,

Windows: ?? ?以多根的方式組織文件 ?C:\ ? D:\ ? E:\
Linux: ? ?? ??? ?以單根的方式組織文件 ?/

FHS(Filesystem Hierarchy Standard)指的是文件系統層次化標準,多數Linux版本采用這種文件組織形式,是以樹形的結構來組織文件的。


[root@aliyun ~]# ls -l / ?# /是所有linux操作系統的頂點目錄,不像windows,每個分區都有一個頂點目錄
total 64

kali linux?# 1、命令相關目錄
lrwxrwxrwx. ?1 root root ? ? 7 Jul 11 ?2019 bin -> usr/bin # 普通用戶使用的命令如ls、date
lrwxrwxrwx. ?1 root root ? ? 8 Jul 11 ?2019 sbin -> usr/sbin # 管理員使用的命令


#2、啟動目錄
dr-xr-xr-x. ?5 root root ?4096 Feb 11 19:06 boot # 存放的啟動相關的文件,例如kernel,grub(引導裝載程序)
? ??
#3、系統文件目錄
drwxr-xr-x. 13 root root ?4096 Jul 11 ?2019 usr # 系統文件,相當于C:\Windows
lrwxrwxrwx. ?1 root root ? ? 7 Jul 11 ?2019 lib -> usr/lib # 庫文件Glibc
lrwxrwxrwx. ?1 root root ? ? 9 Jul 11 ?2019 lib64 -> usr/lib64 # 庫文件Glibc

#4、用戶家目錄
drwxr-xr-x. ?5 root root ?4096 Feb 24 16:42 home # 普通用戶家目錄
dr-xr-x---. 11 root root ?4096 Jul ?8 17:03 root # root用戶的HOME

#5、配置文件目錄
drwxr-xr-x. 79 root root ?4096 Jul ?8 17:04 etc # 配置文件,很重要,系統級服務配置文件都在這里
/etc/sysconfig/network-script/ifcfg-*,網絡配置文件
/etc/hostname,系統主機名配置文件
/etc/resolv.conf,dns客戶端配置文件
/etc/hosts,本地域名解析配置文件
/etc/fstab ? ?系統掛載目錄 開機自啟動掛載列表
/etc/passwd ?系統用戶文件
?

linux文件與目錄管理?#6、設備目錄文件
drwxr-xr-x ?19 root root ?2960 Feb 15 17:22 dev # 設備文件,/dev/sda /dev/sr0
/dev/cdrom 和/dev/sr0,系統光盤鏡像設備
/dev/null,黑洞設備,只進不出。類似于垃圾回收站
/dev/random,生成隨機數的設備
/dev/zero,能源源不斷地產生數據,類似于取款機,隨時隨地取錢
/dev/pts/0,虛擬的Bash Shell終端,提供給遠程用戶使用 0代表第一個終端 1代表第2個終端
以此類推
/dev/stderr,錯誤輸出 ? ?
/dev/stdin,標準輸入
/dev/stdout,標準輸出
?

#7、虛擬文件系統:類似于小汽車的儀表板,能夠看到汽車是否有故障,或者是否缺油了。
dr-xr-xr-x ?89 root root ? ? 0 Feb 15 17:22 proc # 虛擬的文件系統,反映出來的是內核,進程信息或實時狀態?
反映系統當前進程的實時狀態
/proc/meminfo:內存信息
/proc/cpuinfo:cpu信息

? ??

#8、可變的目錄與臨時目錄
drwxr-xr-x. 19 root root ?4096 Jul 11 ?2019 var ?#存放的是一些變化文件,比如數據庫,日志,郵件....?
/tmp,系統臨時目錄(類似于公共廁所),系統會定時刪除該目錄下長時間沒有訪問的文件。
/var,存放一些變化文件,如下
?? ??? ??? ??? ??? ?mysql: ??? ??? ?/var/lib/mysql
?? ??? ??? ??? ??? ?vsftpd:?? ??? ??? ?/var/ftp
?? ??? ??? ??? ??? ?mail:?? ??? ??? ?/var/spool/mail
?? ??? ??? ??? ??? ?cron:?? ??? ??? ?/var/spool/cron
?? ??? ??? ??? ??? ?log:?? ??? ??? ?/var/log 系統日志文件存放目錄
?? ??? ??? ??? ??? ??? ??? ??? ? ? ?/var/log/messages系統日志
?? ??? ??? ??? ??? ??? ??? ??? ? ? ?/var/log/secure系統登錄日志
? ? ? ? ? ? ? ? ? ? /var/tmp ??? ??? ?臨時文件(主要是程序產生的臨時文件)


# 9、設備(主要指存儲設備)掛載目錄
drwxr-xr-x. ?2 root root ?4096 Apr 11 ?2018 media # 移動設備默認的掛載點
drwxr-xr-x. ?2 root root ?4096 Apr 11 ?2018 mnt # 手工掛載設備的掛載點
drwxr-xr-x. ?2 root root ?4096 Apr 11 ?2018 opt # 早期第三方廠商的軟件存放的目錄.
drwxrwxrwt. 10 root root ?4096 Jul ?9 15:16 tmp # 臨時存放文件,類似于回收站,超過十天自動刪除
? ??
#10、其他的一些重要目錄
drwx------. ?2 root root 16384 Jul 11 ?2019 lost+found # 孤兒文件
這個目錄是使用標準的ext2/ext3檔案系統格式才會產生的一個目錄,目的在于當檔案系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。這個目錄通常會在分割槽的最頂層存在, 例如你加裝一顆硬盤于/disk中,那在這個系統下就會自動產生一個這樣的目錄『/disk/lost+found
lost+found這個目錄一般情況下是空的,當系統非法關機后,如果你丟失了一些文件,在這里能找回來用來存放fsck過程中部分修復的文件的
lost+found:幾乎每個被格式化過的Linux分區都會有,意外后找回的文件一般在這里面。
這個目錄是儲存發生意外后丟失的文件的。只有root用戶才能打開

linux遠程文件管理、drwxrwxr-x ? 6 root root ?4096 Feb 23 19:24 application
drwxr-xr-x ?25 root root ? 660 Jul ?8 17:00 run # ?存放程序運行后所產生的pid文件
drwxr-xr-x. ?2 root root ?4096 Apr 11 ?2018 srv # 物理設備產生的一些文件
dr-xr-xr-x ?13 root root ? ? 0 Feb 16 01:22 sys # 硬件設備的驅動程序信息
?

三 絕對路徑與相對路徑

絕對路徑: 從/開頭的路徑 /home ~alice 相對路徑: 相對于當前目錄開始

. 鏈接到當前目錄

.. 鏈接到上一級目錄?

~ 當前用戶的家目錄

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

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

四 文件管理

4.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 ? ? ? ? ? ?鏈接文件

注意: Linux文件擴展名不代表任何含義, 僅僅是為了運維人員便于識別

4.2 文件管理

創建

#1、=============創建文件:touch?? ?
touch file1.txt ??? ??? ??? ?//無則創建,有則修改時間
touch /home/file10.txt
touch file{1..20}
touch Ego{n,N}.txt ? ? //等價touch Egon.txt EgoN.txt
touch -t 2011111111 2018.rmvb?
修改文件時間 語法:
-t STAMP
? ? ? ? ? ? ? use [[CC]YY]MMDDhhmm[.ss] instead of current time
? ??
了解文件的三個時間參數:https://www.cnblogs.com/linhaifeng/articles/13324247.html

#2、=============創建目錄:mkdir?? ?
mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7}
?? ?mkdir: 已創建目錄 “/home/dir6”
?? ?mkdir: 已創建目錄 “/home/dir7”
mkdir -p /home/dir8/111/222 ? ? //包括其父母的創建

復制 ?

#1、=============復制:cp?? ?
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 .

cp -rv /etc /tmp
\cp -rv /etc /tmp

擴展用法:
cp -rfv /etc/hosts{,.old}
cp -rvf /etc/sysconfig/network-scripts/ifcfg-eth0{,.old}


關于-f參數的一個實驗
[root@aliyum ~]# echo "1111" > /opt/a.txt
[root@aliyum ~]# echo "2222" > /t2/a.txt
[root@aliyum ~]#?
[root@aliyum ~]# chmod o=wx /t2
[root@aliyum ~]# chmod o=- /t2/a.txt?
[root@aliyum ~]#?
[root@aliyum ~]# ll -d /t2
drwxr-x-wx 2 root root 4096 Oct 20 00:07 /t2
[root@aliyum ~]# ll /t2/a.txt?
-rw-r----- 1 root root 5 Oct 20 00:07 /t2/a.txt
[root@aliyum ~]#?
[root@aliyum ~]# su - xxx
Last login: Tue Oct 20 00:05:43 CST 2020 on pts/2
[xxx@aliyum ~]$ cp /opt/a.txt /t2/a.txt ?# 失敗
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$ \cp /opt/a.txt /t2/a.txt ?# 失敗
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$?
[xxx@aliyum ~]$?
[xxx@aliyum ~]$ cp -f /opt/a.txt /t2/a.txt ?# 成功
[xxx@aliyum ~]$ exit
logout
[root@aliyum ~]# cat /t2/a.txt?
1111
[root@aliyum ~]#?


========================================================
小知識:root用戶使用cp (默認有一個別名 alias cp='cp -i') -i ? 顯示提示信息(是否覆蓋)
1. /bin/cp -rf /etc /tmp
2. # unalias cp ? ? ? ? ? ? ? ?
? ? # cp -rf /etc /tmp ?
3. # \cp -rf /etc /tmp
4.-f 參數是強制復制,比如你在A文件夾里面有個文件名叫B,然后你把C文件夾里面的另一個文件名叫B的復制到A里面,這個時候會照成沖突,然后會提示你要不要繼續復制.加上-f 就不會提示你了.

你輸入-f 還是會提示你的原因是
-------------------------------------------------------------
有的系統在安裝的時候,cp - i 的 alias 就是 cp
也就是說你在執行cp的時候,其實是執行的cp -i?
取消掉cp的alias就好了?
==========================================
解決辦法
unalias cp?
========================================================

?移動與刪除

#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 詳細過程

4.3 查看文件內容

==文本文件 (cat less more head tail grep)
/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?? ?//系統的主日志文件

cat ? ??
-n ?顯示行號
-A ?包括控制字符(換行符)linux $ ?? ?Windows ^M$
========================================================
擴展知識:
dos2unix ?? ?將Windows格式的文件轉換成Unix格式
unix2dos ?? ?將Unix格式的文件轉換成Windows格式
例如
# unix2dos file1
# dos2unix file2
========================================================

less ?more head ?tail ?
# head ?/etc/passwd
# head -2 /etc/passwd
# tail /etc/passwd
# tail -1 /etc/passwd
# more /etc/passwd ?# 使用more命令之后,每次在屏幕上顯示一屏(一頁)的文件內容,并且在屏幕的尾部將會出現“—More--(n%)”的信息,其中,n%是已經顯示文件內容的百分比。按空格下一頁,按b上一頁,more +40 a.txt從第40行開始查看

# tail -f /var/log/messages ??? ??? ??? ?//-f 動態查看文件的尾部
# logger xxxxxxxxx ? ? ? ? ? ? ? ? ??? ?//手動產生日志信息

grep 針對文件內容進行過濾
# grep 'root' /etc/passwd
# grep --color 'root' /etc/passwd
# grep --color '^root' /etc/passwd
# grep --color 'bash$' /etc/passwd
?

?4.4 修改文件內容

1、什么是vim

可以理解為windows下面的文本編輯器,比如記事本,比如word文檔。

vi編輯器通常被簡稱為vi,而vi又是visual editor的簡稱。它在Linux上的地位就像Edit程序在DOS上一樣。它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定制,這是其他編輯程序所沒有的。
? ?
vi 編輯器并不是一個排版程序,它不像Word或WPS那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。沒有菜單,只有命令,且命令繁多。

2、為何要用vim ?

1.修改配置
2.寫腳本

3、vi與vim的區別

vi不顯示高亮顏色語法

vim顯示高亮顏色語法。

其他功能沒有什么區別。

所以在linux系統下,使用vi還是vim取決個人習慣。

默認vi是安裝的 , vim需要通過yum install vim -y

?4、vi編輯器的操作模式

#1、命令行模式:在編輯模式下按下ESC鍵返回命令行模式。
vi的默認模式。在這一模式中,所有的輸入被解釋成vi命令,可以執行修改、復制、移動、粘貼和刪除正文等命令,也可以進行移動光標、搜索字符串和退出vi的操作等。

#2、編輯/插入模式:輸入a、i、o之一
在編輯模式中,可以往一個文件中輸入正文。在這一模式下,輸入的每一個字符都被vi編輯器解釋為輸入的正文。使用ESC鍵返回命令行模式。
a:進入插入模式并在光標之后進行添加。
i:進入插入模式并在光標之前進行插入。
o:進入插入模式并在當前(光標所在)行之下開啟新的一行。

#3、擴展/末行模式:輸入冒號:
在一些UNIX系統上也叫最后一行模式。在這一模式下,可以使用一些高級編輯命令,如搜尋和替代字符串、存盤或退出vi編輯器等。要進入最后一行模式,需要在命令行模式中輸入冒號(:),冒號這一操作將把光標移到屏幕的最后一行。

?3、在vi編輯器中光標的移動

?4、在命令行模式下刪除與復制的操作

?5、粘貼命令

?6、復原和重做命令

?7、掌握擴展模式下常用的命令

8、掌握快速移動光標在文件中的位置的命令 ?

9、掌握快速在屏幕中移動光標的位置的命令 ?

10、三種模式下的操作匯總與補充 ?

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

?11、同時編輯多個文件

#1、
vim -o 文件1 文件2 ?# 水平分隔
vim -O 文件1 文件2 ? # 垂直分隔
使用ctrl + ww切換

#2、
vim -p /etc/hosts /etc/grub.conf ? ? ?
使用 ^PgUp, ^PgDn切換

?12、文件內容對比

# 相同文件之間差異對比,通常用于對比修改前后的差異。
? ??
diff ? ? ? ? #文件對比(No)

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

# patch實驗:
touch a.txt b.txt
[root@localhost ~]# echo 111 >> a.txt
[root@localhost ~]# echo 222 >> b.txt?
[root@localhost ~]# diff -u a.txt b.txt > patch.diff
[root@localhost ~]# patch a.txt patch.diff?
patching file a.txt
[root@localhost ~]# cat a.txt
222

?13、vim執行過程

==============Vim非正常退出===============

(1)、模擬故障: 編輯文件的時候斷開連接即可(斷網或斷電) 重新連接服務器 再次進行編輯文件

(2)、故障報錯: Found a swap file by the name ".vim.log.swp" Swap file ".vim.log.swp" already exists

(3)、故障解決: 刪除臨時文件或者先恢復內容再刪除 使用-r選項進行恢復。

?13、練習

#Vim練習題一
1) 使用vi編輯器編輯文件/1.txt進入編輯模式寫入內容“hello world”
2) 進入命令行模式復制改行內容,在下方粘貼80行
3) 快速移動光標到文件的最后一行
4) 快速移動光標到當前屏幕的中間一行
5) 快速移動光標到文件的第五行
6) 在下方插入新的一行內容“welcome to beijing”
7) 刪除剛插入的一行
8) 撤銷上一步的操作
9) 進入擴展模式,執行文件的保存退出操作
10) 修改相應文件,內容如下:
?

#Vim練習題二
1.將/etc/passwd 復制到/root/目錄下,并重命名為test.txt

2.用vim打開test.txt并顯示行號

3.分別向下、向右、向左、向右移動5個字符,分別向下、向上翻兩頁

4.把光標移動到第10行,讓光標移動到行末,再移動到行首,移動到test.txt文件的最后一行,移動到文件的首行

5.搜索文件中出現的 root 并數一下一共出現多少個
? ??
6.把從第一行到第三行出現的root 替換成admin,然后還原上一步操作

8.把整個文件中所有的root替換成admin

9.把光標移動到20行,刪除本行,還原上一步操作

11.刪除從5行到10行的所有內容,還原上一步操作

12.復制2行并粘貼到11行下面,還原上一步操作(按兩次u)

13.復制從11行到15行的內容并粘貼到8行上面,還原上一步操作(按兩次u)

14.把13行到18行的內容移動文件的尾部,還原上一步操作(按兩次u)

15.將文件中所有的/sbin/nologin為/bin/bash

16.在第一行下面插入新的一行,并輸入"# Hello!"

17.保存文檔并退出


#Vim練習題三

根據文件回答下列習題

[root@xxx ~]# cat proxy.conf
server {
Listen 8080;
Server_Name vim.OldboyEDU.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forward-for;
proxy_intercept_errors on;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 3s;
proxy_next_upstream_tries 2;
error_page 500 502 403 404 = /proxy_error.html;
}
location = /proxy_error.html {
root /code/proxy;
}
}

1.使用vim打開proxy.conf文件

2.修改Listen為listen小寫,并將8080修改為80

3.修改Server_Name為server_name小寫。

4.修改vim.OldboyEDU.com為vim.oldboy.com

5.在server_name行下插入一行 root /code;

6.復制5-14行的內容,然后將其粘貼到14行下面

7.刪除與proxy_set_header相關的兩行全部刪除

8.如上操作完成后,在13-20行前面加上#號

9.刪除21-23的行,然后保存當前文件

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/127962.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息