linux目录和文件管理

一、目录层次

1.常见目录
一级目录功能(作用)
/bin/存放系统命令,存放二进制文件,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/设备文件保存位置
/etc/配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
/lib/系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用)
/media/挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下,超级管理员(root) 的家目录 存放的地方
/sbin/保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空
2. linux /usr目录

usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。 小根( / )存放一些根目录不方便存放的文件

Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。

子目录功能(作用)
/usr/bin/存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行
/usr/sbin/存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。
/usr/lib/应用程序调用的函数库保存位置
/usr/XllR6/图形界面系统保存位置
/usr/local/手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
/usr/share/应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
/usr/src/源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中
/usr/includeC/C++ 等编程语言头文件的放置目录
3.linux /var 目录

/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。

/var子目录功能(作用)
/var/lib/程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中
/var/log/登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。
/var/run/一些服务和程序运行后,它们的 PID(进程 ID)保存位置
/var/spool/里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。
/var/www/RPM 包安装的 Apache 的网页主目录
/var/nis和/var/ypNIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录
/var/tmp一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除
  • 根(/)相当于一个入口,文件的总入口,也是唯一入口

  • bin (sbin) 二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件 ----------------命令

  • sbin 管理员可使用的二进制文件---------------------------------命令ls cd useradd

  • boot 系统内核、启动文件

  • dev 硬件文件(黄色)

  • etc 配置文件等同于windows 注册表,一般都是文本文件

  • run 运行的内存中文件 运行中的文件

  • tmp 临时文件 -t 特殊权限

  • usr应用程序和操作系统相关的文件 bin sbin

  • var/log日志文件,数据变化的

  • home 普通用户的家目录的上级目录zhangsan目录会在 home

  • root系统管理员的家目录上 /root

  • lib 动态库文件 类似于windows 的dll文件

  • proc 主要保存系统的内核、进程、外部设备状态和网络状态等

  • media 可移动设备

  • mnt 默认挂载点

  • opt 第三方应用程序安装所在目录程序

文件系统的目录结构(常识)
  • 以 . 开头的文件均为隐藏文件

  • 路径用/分开 / 不在第一位就是分隔符

  • 文件名最长 255个字符

  • 区分大小写 linux 注意事项

  • 不要太华丽

二、查看文件内容

2.1七类常见的linux的文件

  1. d 目录文件directory

  2. b 块设备文件block 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。

  3. c 字符设备character 这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用

  4. l 符号链接文件link

  5. p 管道文件pipe 主要用于进程间通信单向传输 一个发一个输管道文件

  6. s 套接字文件socket 套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信

  7. -普通文件 普通文件,包括纯文本文件、二进制文件、各种压缩文件等

第一个字符文件类型
-普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d目录,类似 Windows 系统中的文件夹。
b块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
c字符设备文件,例如键盘、鼠标等。
s套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l链接文件,类似 Windows 系统中的快捷方式。

2.2 显示命令

2.2.1 cat

格式

cat  选项  文件名

只能看普通的文本文件

file   查看是什么文件(普通文件   不能看文本以外的文件)

缺点:
如果内容过多,会显示不全

选项效果
-n显示行号包括空行
-b跳过空白行编号    空行不编号
-s将所有的连续的多个空行替换为一个空行(压缩成一个空行)
-A显示隐藏字符

例子:

[root@localhost ky15]# cat /etc/centos-release
#查看你系统内核版本
CentOS Linux release 7.4.1708 (Core) 

[root@localhost ky15]# cat /proc/version 
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017



[root@localhost data]# cat -b test.txt 
#空行不编号
     1	111

     2	111


     3	1111          1111
[root@localhost data]# cat -s test.txt 
#将连续的空行压缩成一个空行
111

111

1111          1111
[root@test1 opt]# cat /etc/sysconfig/network-scripts/ifcfg-ens33   
#查看文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=0d6498ee-d986-4c39-ac51-2dd0d0310dd2
DEVICE=ens33
ONBOOT=yes
##############################################################################
#多个显示顺序看你命令文件的排列顺序
[root@test1 opt]# echo "1" > 1.txt
[root@test1 opt]# echo "2" > 2.txt
[root@test1 opt]# cat 1.txt 2.txt 
1
2
[root@test1 opt]# cat 2.txt 1.txt 
2
1

左右排列文件          #详细见目录2.4.5
paste 1.txt 2.txt  > 3.txt
1    2

### tac 反方向查看  

查看非文本文件内容
hexdump
-C:输出规范的十六进制和ASCII码
-n length:格式化输出文件的前length个字节

[root@localhost ~]#hexdump -C -n 512 /dev/sda
#查看前512字节
0000000 63eb 1090 d08e 00bc b8b0 0000 d88e c08e
0000010 befb 7c00 00bf b906 0200 a4f3 21ea 0006
0000020 be00 07be 0438 0b75 c683 8110 fefe 7507
#以下就不显示了
2.2.2 tac

逆向显示文本内容(倒序输出)

[root@centos8 ~]#seq 10 | tac
10
9
8
7
6
5
4
3
2
1
2.2.3 rev

将同一行的内容逆向显示

[root@centos8 ~]#cat /data/fa.txt
1 2 3 4 5
a b c
[root@centos8 ~]#tac /data/fa.txt
a b c
1 2 3 4 5
[root@centos8 ~]#rev /data/fa.txt
5 4 3 2 1
c b a

[root@centos8 ~]#echo {1..10} |rev
01 9 8 7 6 5 4 3 2 1

2.3 分页显示

2.3.1 more

more [选项] 文件名

基本操作(不是选项)

  • 空格下一页 到文末后自动退出

  • b上一行

  • enter一行一行滚动

  • 自动退出

  • q退出

[root@test1 var]# ls -lh /etc/*.conf | more    //命令显示过多也可以使用管道 加more查看
-rw-r--r--. 1 root root   55 3月   1 2017 /etc/asound.conf
-rw-r--r--. 1 root root  15K 8月   4 2017 /etc/autofs.conf
-rw-------. 1 root root  232 8月   4 2017 /etc/autofs_ldap_auth.conf
-rw-r--r--. 1 root root  22K 8月   7 2017 /etc/brltty.conf
-rw-r--r--. 1 root root  676 8月   3 2017 /etc/cgconfig.conf
-rw-r--r--. 1 root root  265 6月  18 23:09 /etc/cgrules.conf
-rw-r--r--. 1 root root  131 8月   3 2017 /etc/cgsnapshot_blacklist.conf
--More--
不可以向上翻页

2.3.2 less

less [选项] 文件名

  • 可以使用/ 查找 n向下 N向上查找

  • Page Up 向上翻页,Page Down 向下翻页

  • 其余参考more

[root@test1 var]# less /etc/dhcp/dhcpd.conf    空格到底不会自动退出
#################################################################################
[root@test1 var]# ls -lh /etc/*.conf | less

#按esc后使用shift + :q 回车退出

2.4 显示文件前后内容

2.4.1 head

可以显示文件或标准输入的前面行

格式:head  [选项]  具体数字  文件名    (不加具体的数字,默认开头十行)

选项:

-c  # 指定获取前#字节
-n  # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前
-    # 同上

[root@centos7 ~]#head -n 3 /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


[root@centos8 ~]#head -3 /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


[root@centos8 ~]#cat seq.log
1
2
3
4
5
6
7
8
9
10
[root@centos8 ~]#head -n 3 seq.log      #显示前三行
1
2
3
[root@centos8 ~]#head -n -3 seq.log     #显示开头到倒数第三行
1
2
3
4
5
6
7
[root@centos8 ~]#head -n +3 seq.log     #显示前三行
1
2
3
2.4.2 tail

tail 和head 相反,查看文件或标准输入的倒数行

格式:head  [选项]  具体数字  文件名

常用选项:

-f 跟踪显示文件fd新追加的内容,常用日志监控,

tail      -n      具体数字  文件名     (不加具体的数字,默认结尾十行)
tail      -f       具体数字  文件名        实时跟踪最后十行

例子:

abcd[root@localhost test]# echo abcdef|head -c2
ab[root@localhost test]# 
[root@localhost test]# head -n -3 3.txt 
#-3 不显示最后3行
1
2
3
4
5
[root@localhost ky15]# tail -n -3 3.txt 
#-3 只显示最后三行
6
7
8
[root@localhost ky15]# head -n +3 3.txt 
#就只显示前三行
1
2
3
[root@localhost ky15]# tail -n +3 3.txt #
#从第三行开始
3
4
5
6
7

[root@localhost data]#cat 1.txt 
1
2
3
4
5
[root@localhost data]#tail -n 1 1.txt 
5
#显示最后一行

##################################################################################
加入具体数字后显示开头20行
[root@test1 var]# head -20 /etc/dhcp/dhcpd.conf 
# dhcpd.conf
#
[root@localhost ky15]# ifconfig  ens33 |head -2|tail -1
        inet 192.168.91.100  netmask 255.255.255.0  broadcast 192.168.91.255
#使用head 和tail 完成显示具体某一行

[root@test1 var]# ping 192.168.91.1 >log.txt   #把ping的结果输入到log.txt文件里。

#开启新终端后
[root@test1 var]# tail -f log.txt
#tail -f 等于tailf
#对log.txt进行实时查看(文件一直在发生变化,不用一直使用ls查看)
2.4.3 wc

wc [选项]... 目标文件..

统计列数,wc本身就是参数 word

  • -l:统计行数

  • -w:统计单词个数

  • -c:统计字节数

wc 统计的单词不是真正的单词

 [root@localhost ~]# cat a.txt 
dasdasdads
[root@localhost ~]# wc a.txt 
 1  1 11 a.txt
[root@localhost ~]# cat a.txt 
das dasdads
[root@localhost ~]# wc a.txt 
 1      2        12 a.txt  
#行    单词    字符数 

########注意空行和换行符
tab  空格  算单词的分隔符
2.4.4 grep

正则表达式:匹配文件中的字符串
通配符:匹配文件名字
ls  后面跟的是通配符(文件名)
fing  后面跟的是通配符(文件名)


grep  后面跟的是正则表达式

grep  过滤文件中命中的字符

用法:  grep [选项]...   PATTERN  [FILE]...
PATTERN:表达式(正则表达式)

grep  [选项]  表达式  文件夹

选项
-i   忽略大小写
-v  反选 ,不显示匹配内容显示其它内容
-o 只显示匹配的内容
-n  显示行号(数字)
-r  递归目录 ,但不找软连接(匹配文件夹用)
-f  比较两个文件中的相同行
-c  匹配的行数

正则表达式
. 任意字符

^ 一行的开头

$ 一行的结尾

选项:
-color=auto 对匹配到的文本着色显示
-m  # 匹配#次后停止
grep -m 1 root /etc/passwd   #多个匹配只取第一个
-v 显示不被pattern匹配到的行,即取反
grep -Ev '^[[:space:]]*#|^$' /etc/fstab
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
grep -c root /etc/passwd    #统计匹配到的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行 
grep -A3 root /etc/passwd   #匹配到的行后3行业显示出来
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file
grep -e root -e bash /etc/passwd #包含root或者包含bash 的行
grep -E root|bash  /etc/passwd
-w 匹配整个单词
grep -w root /etc/passwd
useradd rooter
-E 使用ERE,相当于egrep
-F 不支持正则表达式,相当于fgrep
-f   file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r   递归目录,但不处理软链接
-R   递归目录,但处理软链接



grep root /etc/passwd
grep "USER" /etc/passwd
grep 'USER' /etc/passwd
grep whoami /etc/passwd
[root@test1 opt]# cat 123.txt |grep -v '^$' >test.txt  //将非空行写入到test.txt文件
[root@test1 opt]# grep "^b" 123.txt    //过滤已b开头
[root@test1 opt]#grep '/$'  123.txt    //过滤已/结尾
[root@test1 opt]# grep -v "^$" 123.txt //过滤非空行3 备份与恢

grep '^root'  passwd
以 root 开头

grep 'root$'  passwd
以 root 结尾

grep  '^$'  passwd
空行

grep -v  '^$'  passwd
非空行

grep '^root$'  passwd
只为root,没有其它内容
[root@localhost yum.repos.d]# ifconfig ens33 |grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"
192.168.91.100
255.255.255.0
192.168.91.255
[root@localhost yum.repos.d]# ifconfig ens33 |grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"|head -1
192.168.91.100

在某一文件夹中,快速找到所有含有root字符的文件?

grep -r  ‘root’  文件夹

2.4.5 paste 

-d 指定分隔符

合并文件

#一个文件放密码一个文件放用户名
[root@localhost ~]#cat user.txt pass.txt 
lisi
liwu
liliu
123
345
444
[root@localhost ~]#paste user.txt pass.txt 
lisi	123
liwu	345
liliu	444


[root@localhost ~]#paste -d: user.txt pass.txt 
###分隔符 用冒号隔开
lisi:123
liwu:345
liliu:444
2.4.6 split

作用:分割文件

split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]

最常用的选项,都在这里了:
-b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
-<行数>或-l<行数>:指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
-a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。

例子:

[root@localhost data]#dd if=/dev/zero bs=1024 count=700000 of=k
记录了700000+0 的读入
记录了700000+0 的写出
716800000字节(717 MB)已复制,2.98155 秒,240 MB/秒

[root@localhost data]#split -b 400M k
[root@localhost data]#ls
k  xaa  xab

[root@localhost data]#split -b 400M k  a
#指定分隔名
root@localhost data]#split -b 400M k  a
[root@localhost data]#ll
总用量 1400000
-rw-r--r--. 1 root root 419430400 8月  12 15:50 aaa
-rw-r--r--. 1 root root 297369600 8月  12 15:50 aab
-rw-r--r--. 1 root root 716800000 8月  12 15:46 k

没有指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,采用类似 aa、ab、ac 的字符串依次作为文件后缀。于是,就出现了我们上面看到的 xaa、xab 了。




[root@localhost data]#split -d -10 /etc/passwd my_passwd
#行数分隔
[root@localhost data]#ls
my_passwd00  my_passwd01  my_passwd02  my_passwd03  my_passwd04

面试题:
我有一个 10G 的文件,怎么分割成小的文件存储?

split -b  100M  文件名

2.4.7归档tar

tar tape archive 磁带归档。    把不同的文件归为几类里。

建立归档(格式)
tar  -zcvf
tar   fzcv  压缩包的名字(*.tar.gz)   需要压缩的文件  

此处选项有先后要求

  • -f   代表使用tar 归档  ,只要使用tar ,必带-f
  • -c  代表建立归档文件   (Create).tar 格式
  • -x  解开归档
  • -j  代表使用 bzip2 压缩
  • -z  代表使用 gzip 压缩
  • -C 指定解压的目录
  • -t  不解开压缩包  查看压缩包中的内容
  • -v   显示压缩 解压缩过程
  • -p 保留权限
  • -P 路径
[root@localhost data]# tar -zcvf vm.tar.gz vm1 vm2 zz
vm1
vm2
zz/
[root@localhost data]# tar -jcvf vm.tar.gz vm1 vm2 zz

[root@localhost data]# tar -zxvf vm.tar.gzip -C /opt
vm1
vm2
zz/

[root@localhost zz]# tar -tf vm1.tar.gzip 
vm1
3.vi编辑器

Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。

linux中常见的 文本 还有 nano gedit 知道

推荐使用 Vi 文本编辑器的原因有很多,比如说:

  • 几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;

  • Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计 接口

vi 和 vim 的区别:
vim 是 vi 的升级版本

vim基本格式:

vim  [OPTION]...  ...
命令   选项       文件

vim  文件名不存在  是新建
vim  文件名存在   就是修改

如果系统最小化安装vim并没有提前安装,可以使用

yum install vim -y    安装vim编辑器

常用的选项:

+#			打开文件后,让光标处于第#行的行首,+默认行尾(#是数字)
!			打开上一次的文件
+/PATTERN	让光标处于第一个被PATTERN匹配到的行行首用不多
3.1 三种模式

1.命令模式 :默认模式,可以实现移动光标,行间跳转,复制,粘贴,替换,删除

2.输入模式 :编辑文本

3.末行模式 :辅助操作   保存、查找、替换

命令模式  切换到  输入模式
i   ,  o

命令模式  切换到  末行模式

末行模式  切换到   命令模式
esc

3.1.1 命令模式

命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

####       退出VIM        #######
ZZ 保存退出
ZQ 不保存退出

##########   光标跳转    ##############
h: 左 
L: 右 
j: 下 
k: 上

##########   光标跳转    ##############
h: 左 
L: 右 
j: 下 
k: 上

##########   行内跳转    ##############
行首: 0    ^
行尾:end  $
一个单词一个单词跳:w

##########   撤销    ##############
u 撤销一次
U 撤销全部
ctrl + r  取消撤销

##########   复制    ##############
y  复制
yy 复制一行
10 yy  复制10行

##########   粘贴    ##############
p 粘贴到光标处下一行
P 粘贴到光标处上一行

##########   删除    ##############
x  剪切光标处的字符
d   删除(剪切)
dd   删除(剪切)一行
10 dd  删除(剪切)10行
dw  删除一个单词
操作键功能
ctrl+f或者Pagedown向下翻页
ctrl+b或者Pageup向上翻页
Home;^;0跳到本行的行首
按 End 键或$跳转到本行的行尾
1G 或 gg跳转到文件的第一行包括空行
G跳转文件的末尾
#G#代表行号数字,直接跳转到#行
M跳转到当前显示页面的中间行
x或delete删除当前光标的字符
dd删除一整行
#dd删除当前光标开始到第#行(包括当前行)
d^删除当前光标之前到行首 往前不包括当前光标处的字符 86 往后删除包括当前光标处的字符
d$删除当前光标到行尾
dw删除当前光标处的单词
R 或shift+r替换当前光标处文字,会进入替换模式
yy复制当前光标处整行
#yy复制当前光标处向下的#行
p粘贴到光标处下一行
P粘贴到光标处上一行
u只消除上一次可多次使用
UU 取消所有操作
/字符向下查找
?字符向上查找
n向同一方向重复上次的查找指令
N向相反方向重复上次的查找指定末行模式
3.1.2 输入模式

输入模式: 使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。

切入到输入模式

快捷键功能描述
i在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I行首插入命令
o在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
a在当前光标所在位置之后插入随后输入的文本
A行尾插入命令
3.1.3 末行模式

末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“ :”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。按esc 退出末行模式。

######################基础命令###################
# 			#具体第#行,例如2表示第2行
#,# 		#从左侧#表示起始行,到右侧#表示结尾行 
#,+# 		#从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
.   		#当前行
$ 			#最后一行
.,$-1 		#当前行到倒数第二行
% 			#全文, 相当于1,$

/pattern/   	#从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ 	#从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/     	#从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$     	#向下找到第一个匹配patttern的行到整个文件的结尾的所有行


###################地址定界后跟一个编辑命令#############################
d       #删除
y 		#复制


###########################另存为#############################
w file 	#将范围内的行另存至指定文件中
r file 	#在指定位置插入指定文件中的所有内容
.!命令   #将命令执行结果贴到当前光标处


###################查找并替换##########################
格式:
范围  s/要查找的内容/替换的内容/g

g 是修饰符


说明:
要查找的内容:可使用基本正则表达式模式   
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查
找到的整个内容


修饰符:
i #忽略大小写
g #全局替换,默认情况下,每一行只替换第一次出现
c #全局替换,每次替换前询问



查找替换中的分隔符/可替换为其它字符,如:#,@
范例:
s@/etc@/var@g
s#/boot#/#i


################行号##################
显示:set number,简写 set nu
取消显示:set nonumber, 简写 set nonu


#########忽略字符的大小写###############
启用:set ignorecase,简写 set ic
不忽略:set noic

##############自动缩进############
启用:set autoindent,简写 set ai
禁用:set noai

############复制保留格式##############
启用:set paste
禁用:set nopaste


###########显示隐藏字符###############
显示Tab ^I和换行符 和$显示
启用:set list
禁用:set nolist


##############tab用指定空格的个数代替#############
启用:set tabstop=#    指定#个空格代替Tab
简写:set ts=4


###############设置光标所在行的标识线#############
启用:set cursorline,简写 set cul
禁用:set nocursorline


######################加密##########################
启用: set key=password
禁用: set key=


#######################set 帮助#####################
set all
快捷键功能效果
:q退出不保存
:q!强制退出不保存
:w保存
:w 新文件名另存为新文件:
:wq :x保存并退出
:e 其他文件名(如果已修改需要加e!)打开新文件进行编辑
:r 其他文件名在当前文件中读入其他文件内容
!命令执行命令
:r!命令读入命令
: [替换范围] s /旧的内容/新的内容[/g]
:s /old/new替换当前行中的第一个old改为new
:s /old/new/g替换当前行中的所有old改为new
:#,# s /old/new/g#到#行所有old改为new
:%s /old/new/g%代表全文 全文替换所有old改为new
# d删除 第#行
#,# d删除#到#行
#,# y         3,6 y复制#到# 行
:set nu 或:set nonu加行号 不显示行号
:set cul (:set nocul )光标所在行有下划线(取消)
nohl取消高亮
:set ai对齐 回车后和上一行对齐
:set all 可以看所有的一些帮助可以看所有的一些帮助
set key=password (大X)加密码
set key=空白取消密码
set tabstop=4 (set ts=4)tab 一次为四个空格
.!命令 (who,date )将date命令插入当前行注意会覆盖当前行
3.2 配置文件制定vim的工作特性

Vim 启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim。

/etc/.vimrc #全局
~/.vimrc #个人

Vim 配置文件分为系统配置文件和用户配置文件:

  • 系统配置文件位于 Vim 的安装目录(默认路径为 /etc/.vimrc);

  • 用户配置文件位于主目录 ~/.vimrc,即通过执行 vim ~/.vimrc 命令即可对此配置文件进行合理修改。通常情况下,Vim 用户配置文件需要自己手动创建。

设置参数功能描述
set nu显示行号
set cul突出显示当前行。
set ai设置自动缩进,即每行的缩进同上一节相同。
set ts=4设置 Tab 键宽度为 4 个空格。
您可以通过以下几种方法下载STM32CubeMX固件库: 方法1:如果您已经下载好固件支持包,可以直接将其放入STM32CubeMX的固件仓库中。打开STM32CubeMX,点击Help,然后点击Updater Settings。在弹出的窗口中,您可以看到STM32CubeMX固件仓库的默认路径。将下载好的固件支持包加入到该路径即可\[1\]。 方法2:打开STM32CubeMX,点击Help,然后点击Manage embedded software packages。在弹出的窗口中,勾选需要下载的固件支持包(选择芯片型号和版本),然后点击Install Now。安装成功后,您可以在固件仓库路径中找到已安装的固件\[2\]。 方法3:您可以在ST官网上下载STM32CubeMX固件库。打开ST官网链接,下载适用于您的芯片型号和版本的固件支持包。安装成功后,您可以在固件仓库路径中找到已安装的固件\[3\]。 希望以上信息对您有所帮助! #### 引用[.reference_title] - *1* *2* [STM32CubeMX 安装固件支持包](https://blog.csdn.net/lcx1837/article/details/119421981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32CubeMX——固件库下载以及安装](https://blog.csdn.net/qq_54784198/article/details/126732377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值