LInux目录管理命令

Linux目录结构介绍

Linux没有windows盘符的概念,Linux目录的顶点是/,称之为根,所有的目录都 在/下面。

Linux相对路径和绝对路径

在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置,例如,在《Linux文件系统的层次结构》中提到的 /home/cat 就表示的是 cat 文件所存放的位置。只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。
指明一个文件存放的位置,有 2 种方法,分别是使用绝对路径和相对路径。

Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构,如图所示。

绝对路径

绝对路径一定是由根目录 / 开始写起

例如,使用绝对路径的表示方式指明 bin 文件所在的位置,该路径应写为 /usr/bin。

[root@1y ~]# bin
bash: bin: command not found   <-- 没有找到
[root@1y ~]# /usr/bin
bash: /usr/bin: is a directory   <-- 是一个文件

可以看到,如果仅传递给 Linux 系统一个文件名,它无法找到指定文件;而当将 bin 文件的绝对路径传递 Linux 系统时,它就可以成功找到。

相对路径

和绝对路径不同,相对路径不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起。使用相对路径表明某文件的存储位置时,经常会用到当前目录(用 . 表示)和父目录(用 .. 表示)。

举个例子,当我们使用 root 身份登录 Linux 系统时,当前工作目录默认为 /root,如果此时需要将当前工作目录调整到 root 的子目录 Desktop 中,当然可以使用绝对路径,示例代码如下:

#绝对命令
[root@localhost ~]# pwd     <-- 显示当前所在的工作路径
/root
[root@localhost ~]# cd /root/Desktop
[root@localhost Desktop]# pwd
/root/Desktop

可以看到,通过使用绝对路径,我们成功地改变了当前工作路径。但除此之外,使用相对路径的方式会更简单。因为目前处于 /root 的位置,而 Desktop 就位于当前目录下,所以:

[root@1y ~]# pwd    <-- 显示当前所在的工作路径
/root
[root@1y ~]# cd ./Desktop
[root@1y Desktop]# pwd
/root/Desktop

此代码中,./Desktop 表示的就是 Destop 文件相对于 /root 所在的路径。

再举一个例子,如果以 root 身份登录 Linux 系统,并实现将当前工作目录由 /root 转换为 /usr 目录,有以下 2 种方式:

#使用绝对路径
[root@1y ~]# pwd <-- 显示当前所在的工作路径
/root
[root@1y ~]# cd /usr
[root@1y ~]# pwd
/usr
#使用相对路径
[root@1y ~]# pwd <-- 显示当前所在的工作路径
/root
[root@1y ~]# cd ../usr <-- 相对 root,usr 位于其父目录 /,因此这里要用到 ..
[root@1y ~]# pwd
/usr

总之,绝对路径是相对于根路径 / 的,只要文件不移动位置,那么它的绝对路径是恒定不变的;而相对路径是相对于当前所在目录而言的,随着程序的执行,当前所在目录可能会改变,因此文件的相对路径不是固定不变的。

Linux命令语法

命令 [选项1] [选项2] [选项n] [路径/文件]

针 [老护士|小护士] [胳膊|屁股] 人

说明:

#中括号里是可选 #所有元素之间必须要有一个空格,可以多个。

LInux基础命令

查看当前路径pwd(print working directroy)

pwd(英文全拼:print work directory) 命令用于显示当前用户所在的工作目录的完整路径。

[root@1y ~]# pwd
/root

切换路径cd(change directory)

cd(英文全拼:change directory)命令用于改变当前工作目录的命令,切换到指定的路径。

若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

另外,~ 也表示为 home 目录 的意思, 

        . 则是表示目前所在的目录, 

        .. 则表示目前目录位置的上一层目录。

特殊符号:
 ~   用户的家目录

管理员root来说~代表/root

普通用户下 ~表示/home/用户名
 .   表示当前目录
 .. 表示上一级目录

语法
cd [相对路径或绝对路径]

换到绝对路径:指定完整的目录路径来切换到目标目录。

cd /path/to/directory

切换到相对路径:指定相对于当前目录的路径来切换到目标目录。

cd relative/path/to/directory
实例

切换到 /usr/bin/ 目录:

cd /usr/bin

切换到上级目录:使用 .. 表示上级目录,可以通过连续多次使用 .. 来切换到更高级的目录。

cd ..
cd ../../   // 切换到上上级目录

切换到用户主目录(home):使用 ~ 表示当前用户的主目录,可以使用 cd 命令直接切换到主目录。

cd ~

切换到上次访问的目录:使用 cd - 可以切换到上次访问的目录。

cd -

切换到环境变量指定的目录:可以使用环境变量来指定目标目录,并使用 cd 命令切换到该目录。

cd $VAR_NAME

查看目录下内容ls(list)

ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。

语法
 ls [-alrtAFR] [name...]
参数 说明
-a 或 --all 显示所有文件(包括以 . 开头的隐藏文件)。
-A 或 --almost-all 显示除 . 和 .. 外的所有文件(包括隐藏文件)。
-l 以长格式(详细信息)列出文件(权限、所有者、大小、修改时间等)。
-h 或 --human-readable 与 -l 一起使用时,以人类可读的格式显示文件大小(如 KB、MB)。
-t 按修改时间排序(最新优先)。
-r 或 --reverse 反向排序(配合 -t-S 等使用)。
-S 按文件大小排序(大文件优先)。
-R 或 --recursive 递归列出子目录内容。
-F 或 --classify 在文件名后附加标识符(如 / 表示目录,* 表示可执行文件)。
--color 彩色输出(通常默认启用,--color=auto)。
-i 或 --inode 显示文件的 inode 编号。
-n 或 --numeric-uid-gid 以数字形式显示 UID 和 GID(替代用户名和组名)。
-d 或 --directory 仅显示目录本身,而非其内容(常用于配合 -l)。
-1 每行只显示一个文件(默认在终端宽度不足时自动启用)。
-m 以逗号分隔的列表形式显示文件。
-Q 或 --quote-name 用引号括住文件名(适用于含空格的文件名)。
--group-directories-first 先显示目录,后显示文件。
--time-style=<格式> 自定义时间显示格式(如 +%Y-%m-%d)。
实例
ls -l                    # 以长格式显示当前目录中的文件和目录
ls -a                    # 显示当前目录中的所有文件和目录,包括隐藏文件
ls -lh                   # 以人类可读的方式显示当前目录中的文件和目录大小
ls -t                    # 按照修改时间排序显示当前目录中的文件和目录
ls -R                    # 递归显示当前目录中的所有文件和子目录
ls -l /etc/passwd        # 显示/etc/passwd文件的详细信息

创建目录mkdir

创建目录mkdir(make directory)

mkdir 目录名

// 创建一名为 test 的新目录
mkdir test

-p

直接将所需要的目录(包含上一级目录)递归创建起来

加了 -p 的选项,可以自行创建多层目录

复制目录/文件cp

cp 即拷贝文件和目录

cp [选项] 源目录 新的路径

选项和参数
-i 交互模式,覆盖前提示用户确认。
-f 强制复制,覆盖目标文件而不提示。
-r 或 -R 递归复制目录及其内容(用于复制目录)。
-v 显示详细的复制过程(verbose)。
-p 保留文件的原始属性(如权限、时间戳等)。
-d 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-a 归档模式,等同于 -dpr,保留所有文件属性和递归复制目录。
-u 仅当源文件比目标文件新时才复制(更新模式)。
-l 创建硬链接而不是复制文件。
-s 创建符号链接(软链接)而不是复制文件。

cp -r 源目录 新的路径

-r 或 -R 递归复制目录及其内容(用于复制目录)。

cp -a 源目录 新的路径

-a 归档模式,等同于 -dpr,保留所有文件属性和递归复制目录。

将/tmp下的test目录复制到/root下面,并改名为test2

移动文件/目录mv

mv [选项] 被移动的文件 目标目录

将./test1/test2/test3下的test4移动到./test1/test2/

// 将./test1/test2/test3/test4/移动到./test1/test2/

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# tree ./test1
./test1
└── test2
    └── test3
        └── test4

3 directories, 0 files
[root@1y ~]# mv ./test1/test2/test3/test4/ ./test1/test2/
[root@1y ~]# tree ./test1
./test1
└── test2
    ├── test3
    └── test4

3 directories, 0 files
[root@1y ~]# 

将./test1/test2下的test3移动到./test1并改名为test234

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# tree ./test1
./test1
└── test2
    ├── test3
    └── test4

3 directories, 0 files
[root@1y ~]# mv ./test1/test2/test3 ./test1/test234
[root@1y ~]# 
[root@1y ~]# tree ./test1
./test1
├── test2
│   └── test4
└── test234

3 directories, 0 files
[root@1y ~]# 

删除文件/目录rm

rm -rf 路径/目录

-f 强制删除(force),忽略不存在的文件,不会出现警告信息。

-r 递归删除(recursive),目录里的内容。

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# ll
总用量 4
-rw-------. 1 root root 1370 10月 13 12:22 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 10月 20 15:32 test
drwxr-xr-x. 4 root root   34 10月 20 16:03 test1
drwxr-xr-x. 2 root root    6 10月 20 14:51 test2
[root@1y ~]# rm test
rm: 无法删除"test": 是一个目录
[root@1y ~]# rm -rf test test1
[root@1y ~]# ll
总用量 4
-rw-------. 1 root root 1370 10月 13 12:22 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 10月 20 14:51 test2
[root@1y ~]# rm -rf test2
[root@1y ~]# ll
总用量 4
-rw-------. 1 root root 1370 10月 13 12:22 anaconda-ks.cfg
[root@1y ~]# 
删除多个文件

rm -f 文件1 文件2 文件3...

删除大量文件

删除当前目录下以.txt结尾的文件

rm -f *.txt

删除当前目录下以test开头的文件

rm -f test*

删除当前目录下所有文件

rm -f *

!!!跑路必备

rm -rf *

显示目录树tree

默认没有,需要执行yum install tree -y

yum install tree -y

显示根目录下第1层目录结构

tree -L 1 /

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

19 directories, 0 files
[root@1y ~]# 

Linux文件管理命令

创建文件touch

 touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# ls
anaconda-ks.cfg
[root@1y ~]# touch test.txt
[root@1y ~]# ls
anaconda-ks.cfg  test.txt
[root@1y ~]# 

重复创建不会对文件内容产生影 响,只会修改文件的时间戳。

[root@1y ~]# 
[root@1y ~]# ls
anaconda-ks.cfg
[root@1y ~]# touch test.txt
[root@1y ~]# ls
anaconda-ks.cfg  test.txt
[root@1y ~]# stat test.txt 
  文件:"test.txt"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:67144911    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-20 21:26:20.544087884 +0800
最近更改:2025-10-20 21:26:20.544087884 +0800
最近改动:2025-10-20 21:26:20.544087884 +0800
创建时间:-
[root@1y ~]# touch test.txt
[root@1y ~]# stat test.txt 
  文件:"test.txt"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:67144911    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2025-10-20 21:28:24.486088303 +0800
最近更改:2025-10-20 21:28:24.486088303 +0800
最近改动:2025-10-20 21:28:24.486088303 +0800
创建时间:-
[root@1y ~]# 

创建多个文件

[root@1y ~]# ls
1.txt  anaconda-ks.cfg
[root@1y ~]# touch 1y{01..5}.txt
[root@1y ~]# ls -l
总用量 8
-rw-r--r--. 1 root root   55 10月 20 22:45 1.txt
-rw-r--r--. 1 root root    0 10月 20 23:00 1y01.txt
-rw-r--r--. 1 root root    0 10月 20 23:00 1y02.txt
-rw-r--r--. 1 root root    0 10月 20 23:00 1y03.txt
-rw-r--r--. 1 root root    0 10月 20 23:00 1y04.txt
-rw-r--r--. 1 root root    0 10月 20 23:00 1y05.txt
-rw-------. 1 root root 1370 10月 13 12:22 anaconda-ks.cfg
[root@1y ~]# 

echo

echo 命令是 Linux 中最基本和常用的命令之一,用于在终端中显示文本或变量的值。

使用echo命令输出内容

[root@1y ~]# echo 123
123
[root@1y ~]# 

往文件增加内容echo(配合输入重定向>以及追加输入重定向>>完成编辑文件)

输入重定向>

清空已有文件内容,存入echo后面接的内容。

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# cat test.txt 
[root@1y ~]# 
[root@1y ~]# echo 123 > test.txt 
[root@1y ~]# cat test.txt 
123
[root@1y ~]# echo 456 > test.txt 
[root@1y ~]# cat test.txt 
456
[root@1y ~]# 

追加输入重定向>>

不清空已有文件内容,每次把新的内容放到文件结尾 (新起行)。

[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# cat test.txt 
456
[root@1y ~]# echo 789 >> test.txt 
[root@1y ~]# cat test.txt 
456
789
[root@1y ~]# 

清空文件

[root@1y ~]# cat 1.txt 
111
123
321
1234567
111
222
333
[root@1y ~]# > 1.txt 
[root@1y ~]# cat 1.txt 
[root@1y ~]# 

使用引号输入多行内容到文件里

[root@1y ~]# cat 1.txt 
[root@1y ~]# echo '111
> 222
> 333' > 1.txt
[root@1y ~]# cat 1.txt 
111
222
333
[root@1y ~]# 

输出其他命令的执行结果

[root@1y ~]# cat 1.txt 
111
222
333
[root@1y ~]# date
2025年 10月 20日 星期一 22:45:04 CST
[root@1y ~]# echo $(date) >> 1.txt 
[root@1y ~]# cat 1.txt 
111
222
333
2025年 10月 20日 星期一 22:45:30 CST
[root@1y ~]# 

查看文件内容cat

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上

查看主机名

[root@1y ~]# cat /etc/hostname
1y

查看局域网的域名解析

[root@1y ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

查看DNS设置

[root@1y ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 223.5.5.5

显示行号

[root@1y ~]# cat -n /etc/resolv.conf
     1	# Generated by NetworkManager
     2	nameserver 223.5.5.5
[root@1y ~]# 

通过cat交互式输入内容到文件

按回车输入,输入错误了按ctrl+退格消除,输入完先按回车,再按ctrl+d保存退出。

[root@1y ~]# cat 1.txt
cat: 1.txt: 没有那个文件或目录
[root@1y ~]# cat >>1.txt
321
123
1234567
[root@1y ~]# cat 1.txt
321
123
1234567
[root@1y ~]# 

一条命令输入多行内容到文件

输完结尾的EOF之后直接点回车就能保存

[root@1y ~]# cat 1.txt 
111
123
321
1234567
[root@1y ~]# cat >>1.txt<<EOF
> 111
> 222
> 333
> EOF
[root@1y ~]# cat 1.txt 
111
123
321
1234567
111
222
333
[root@1y ~]# 

文件相关命令

浏览文件less

 less /etc/services

#1.打开首屏内容
#2.按回车按行访问
#3.按空格按屏访问
#4.从上向下搜索用/111,搜索包含111的内容,此时按n继续向下搜,按N反向搜。
#5.从下向上搜索用?111,搜索包含111的内容,此时按n继续向上搜,按N反向搜。

查看文件头部内容head

默认查看文件的前10行。

[root@1y ~]# head /etc/passwd
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
[root@1y ~]# 

查看前两行

[root@1y ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@1y ~]# 

简单写法

[root@1y ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@1y ~]# 

查看文件尾部内容tail

默认查看文件的后10行。

与head基本一致

[root@1y ~]# tail /etc/passwd
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
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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
[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# tail -n 2 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@1y ~]# 
[root@1y ~]# 
[root@1y ~]# tail -2 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@1y ~]# 

过滤文件内容grep

直接过滤

过滤出包含root的行(按行过滤)

[root@1y ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@1y ~]# 

标准写法需要加上双引号

[root@1y ~]# grep "root" /etc/passwd

过滤当前内容以外的内容

-v 反选

[root@1y ~]# head -5 /etc/passwd > 1.txt 
[root@1y ~]# cat 1.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
[root@1y ~]# grep -v root 1.txt 
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

-n 对过滤的内容显示在源文件中的行号

[root@1y ~]# grep -v -n root 1.txt 
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@1y ~]# grep -vn root 1.txt 
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@1y ~]# 

-i 不区分大小写

[root@1y ~]# cat 1.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
[root@1y ~]# echo "ROOT" >> 1.txt 
[root@1y ~]# cat 1.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
ROOT
[root@1y ~]# grep "root" 1.txt 
root:x:0:0:root:/root:/bin/bash
[root@1y ~]# grep -i "root" 1.txt 
root:x:0:0:root:/root:/bin/bash
ROOT
[root@1y ~]# 

vim编辑器

查看是否安装

rpm -qa vim-enhanced

[root@1y ~]# 
[root@1y ~]# rpm -qa vim-enhanced
vim-enhanced-7.4.629-8.el7_9.x86_64
[root@1y ~]# 

安装vim编辑器

如果没有执行下面命令安装

yum install vim-enhanced -y

VIM三种模式

普通模式

由Shell进入vim编辑器时,首先进入普通模式。在普通模式下,从键盘输入任何字符都被当作命令来解释。普通模式下没有任何提示符,输入命令后立即执行,不需要回车,而且输入的字符不会在屏幕上显示出来。

vim xxx.txt  进入普通模式准备编辑文件

编辑模式

编辑模式主要用于文本的编辑。

在命令模式下,按下i键即可进入插入模式,此时可以直接输入文本。按下Esc键即可返回命令模式。

在命令模式下按下 i 键:光标会移动到当前位置,你可以开始输入文本。
在命令模式下按下 I 键:光标会移动到行首,可以开始输入文本。
在命令模式下按下 a 键:光标会移动到下一个位置,可以开始输入文本。
在命令模式下按下 A 键:光标会移动到行末,可以开始输入文本。
在命令模式下按下 o 键:在当前行的下方插入一个新行,并进入插入模式。

特殊写法:vim xxx.txt +5 #进入后光标直接定位到第五行。

命令模式

命令模式下,用户可以对文件进行一些高级处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式。

如果不确定当前处于哪种模式,按两次 Esc 键将回到普通模式。

在编辑模式下按esc键,返回普通模式。在某些终端中,没有 Esc 键,使用这个组合键Ctrl + [ 可以达到同样的效果。

普通模式下,输入冒号,进入命令模式。

在命令模式下不同字符含义

w 保存 write

q 退出 quit

! 强制

常用组合操作:

:wq!  #<==强制保存退出

:wq   #<==保存退出

:q!    #<==强制退出不保存

:q     #<==退出不保存

vim编辑问题

方法1:单开一个窗口找到路径删除交换文件,删除vim临时文件 rm -f .文件名.swp

方法2:直接3个回车,继续编辑,保存用:wq!

vim编辑器快捷键

##行号显示:

        显示行号:set nu

        取消行号:set nonu

##光标移动:

        光标移动到行尾 $

        光标移动到行首 0

        光标移动到文件尾行开头   G

        光标移动到文件开头行卡头 gg

        当前光标移动到第5行 5gg  

        光标移动到从当前行开始移动几行 数字[回车]

##编辑内容

        复制当前行 yy

        复制当前行及下面n行 nyy  #n是数字

        粘贴 p    #可以切换光标到指定的行按p

        回滚 u

        删除当前行 dd

        删除多行   ndd   n是数字

##搜索内容:和less命令搜索一样

        /内容 初始向【下】搜索,此时按n继续搜索,N反向继续搜索。

        ?内容 初始向【上】搜索,此时按n继续搜索,N反向继续搜索。

##替换

:s/boot/bot 替换当前行匹配到的第一个 “boot” 为 “bot”(后面加个/g 将会将本行匹配到的都替换)
:%s/boot/bot/g

将文档中的所有 “boot” 替换为 “bot”(如果后面不加/g,那么只替换每行第一个匹配到的 “boot”)

:n1,n2s/A/B/g n1、n2为数字,在第n1行和n2行间寻找A,用B替换
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐