11.文件编辑
echo,cat,vim,gedit,nano
1、echo
1.1、 追加 [在原有的文件后添加内容]
格式: echo '追加的内容' >> 追加的文件
案例:
[root@fw tmp]# cat -n a.txt
1 a123456
2 23456a
3 aaa3456av
4 aa456aba
5 651231
6 6aba
[root@fw tmp]# echo 'gz2103' >> a.txt
[root@fw tmp]# cat -n a.txt
1 a123456
2 23456a
3 aaa3456av
4 aa456aba
5 651231
6 6aba
7 gz2103
1.2、 覆盖 [清空原有内容,写入指定内容]
格式: echo '覆盖的内容' > 覆盖的文件
案例:
[root@fw tmp]# cat -n a.txt
1 a123456
2 23456a
3 aaa3456av
4 aa456aba
5 651231
6 6aba
7 gz2103
[root@fw tmp]# echo 'gz2101' > a.txt
[root@fw tmp]# cat -n a.txt
1 gz2101
-------------------------------------------
echo 命令扩展
1、输出单行
echo 'abc'
2、 输出多行
echo -e 'abc\nabc\nabc'
# echo $[RANDOM%54] //输出随机数RANDOM除以54的余数,意思就是输出53以内的随机数
# echo $[RANDOM%54+1] //输出随机数RANDOM除以54的余数+1,意思就是输出54以内的随机数
# echo $[算术表达式]
# echo $((算术表达式))
-------------------------------------------
2、cat修改文件内容
2.1、覆盖
格式: cat > filename
输入文件内容1
输入文件内容2
输入文件内容3
...
输入文件内容n
^c
案例:
[root@fw tmp]# cat a.txt
gz2101
[root@fw tmp]# cat > a.txt
a1
a2
a3
a4
^C
[root@fw tmp]# cat a.txt
a1
a2
a3
a4
------
2.2、追加
格式: cat >> filename
输入文件内容1
输入文件内容2
输入文件内容3
...
输入文件内容n
^c
案例:
[root@fw tmp]# cat a.txt
a1
a2
a3
a4
[root@fw tmp]# cat >> a.txt
b1
b2
b3
b4
^C
[root@fw tmp]# cat a.txt
a1
a2
a3
a4
b1
b2
b3
b4
# cat >> c.txt <<EOF
hello world
ni hao
suibian
view search terminal
EOF
EOF只是一个标记字符 标记开始和结束的位置 可以随便写
------------------------------------------------
vim 是编辑器vi的升级版
格式: vim filename
四种变换形态[四种模式]
命令行模式、编辑模式、尾行模式、块模式
1、简单修改文件
vim filename
按键 i
然后通过上下左右键,移动光标并修改文件内容
编辑完成后,按键 esc
输入冒号:wq 回车
---------------------------------------------
命令行模式
[vim文件直接进入命令行模式,其他模式使用esc进入命令行模式]
复制、粘贴、删除、剪切、光标快速移动
yy
p
dd
dd p
^ $ gg G ngg
cat -n /etc/passwd > /tmp/pass.txt
vim /tmp/pass.txt
光标快速移动
ngg 光标快速移动某行 例如: 15gg 光标快速移动到15行
gg 光标快速移动首行
G 光标快速移动尾行
^ 光标快速移动行首
$ 光标快速移动行尾
yy 复制
nyy 复制,复制光标所在行及其下n-1行 例如: 10gg 3yy 复制第10,11,12三行
p 粘贴 将复制或剪切的内容放到光标所在行的下一行
dd 删除 删除光标所在行
ndd 删除 删除光标所在行及其下n-1行
dd p 剪切 删除配置粘贴
u 撤销
^r 反撤销[恢复]
在命令行模式
光标的移动:
行首: home ^
行尾: end $
跳转指定行: numgg 例如 8gg跳转到第8行
跳转最后一行: G
跳转到第一行: gg
复制: 光标跳转到指定行, yy
粘贴: 光标跳转到指定行 p [会粘贴到光标所在行下]
多行复制: 光标跳转到指定行最上边一个, nyy
删除: 光标跳转到指定行, dd
多行删除: 光标跳转到指定行, ndd
剪切: 其实是删除和粘贴的配合操作
D: 删除光标所在行,光标位置及其后的内容
x: 删除光标所在位置的字符
r: 单次替换,替换一个字符
R: 多次替换,esc退出到命令行模式
恢复到上一步: u [类似与world的撤销 ^z]
反撤销: ^r
删除光标所在行及其后的所有行 dG
删除光标所在行及其前的所有行 dgg
--------------------------------------
编辑模式
[在命令行输入aio/AIO进入编辑模式]
[按esc键,从编辑模式计入到命令行模式]
a 在光标所在位置后写入内容
i 在光标所在位置前写入内容
o 在光标所在行的下新建一行写入内容
A 在光标所在行的行尾
I 在光标所在行的行首
O 在光标所在行的上新建一行写入内容
-------------------------------------
尾行模式
[在命令行按: 进入尾行模式]
[按esc键,从尾行模式计入到命令行模式]
w 保存不退出
q 退出
wq 保存退出
w! 保存[强制保存的意思]
wq! 强制保存退出
q! 强制退出不保存
r 写入
w filename 另存为
nw filename 将文件的第n行另存为文件filename
n1,n2w filename 将文件的第n1到n2行另存尾文件filename
r filename 读取文件filename写入到光标所在行下
nr filename 读取文件filename写入到第n行下
下列配置都是临时的, 如果退出后,则会加载默认配置(1.# vim ~/.vimrc 2.在尾行模式下输入)
set nu 显示行号
set nonu 不显示行号
set list 显示特殊字符
set nolist 不显示特殊字符
"line number
set nu
"no case of upper & lower letter
set ic
" auto indentation
set si
set ci
" tab size
set ts=4
set sw=4
替换:
/string 查看全文中包含字符串的位置并高亮
n 下一个
N 上一个
-------------------------------------
块模式
v 类似于doc文档,用鼠标框选的功能,选择光标起始位置和结束位置包含的部分
^v 光标起始位置和结束位置块选的内容
V 光标起始位置和结束位置包含的行,全部包括[选择整行,和光标在行内的位置无关]
快模式选择内容后:
y 复制
d 删除
x 删除选择内容
p 粘贴
例子:
在文本11-18行,行首添加#注释
方法1:
11gg
^v
18gg
I [此时已经进入编辑模式]
#
esc esc [第一个退出编辑模式 第二个退出块模式]
方法二:
:11,18 s/^/# /
替换
:num1,num2 s/查找的内容/替换的内容/g 说明: num1,num2 对行num1到num2之间操作
s替换
/查找的内容/替换的内容/
g 全局替换,否则每行只替换一次
num1:num2可以用%代替,%代表所有行
---------------------------------------------------
vim 快捷键
D 删除光标所在行光标至行尾的内容
dG 删除光标所在行及后边所有行
dgg 删除光标所在行及前边所有行
-------------------------------------------------
如果看到以下内容:
E325: ATTENTION
Found a swap file by the name ".a.txt.swp"
owned by: root dated: Mon Jul 12 10:11:01 2021
file name: /tmp/a.txt
modified: no
user name: root host name: fw
process ID: 11391 (still running)
While opening file "a.txt"
dated: Mon Jul 12 10:10:25 2021
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r a.txt"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".a.txt.swp"
to avoid this message.
Swap file ".a.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
说明该文件上次的编辑未来得及保存,就异常退出了。
vim将上次的修改未保存的部分,放到隐藏文件,
O打开源文件[保存过的]
E编辑源文件[保存过的]
R将未保存部分写入到文件,可以用:wq保存,来恢复上次的丢失
D删除隐藏文件,确保先保存了,在删除
Q退出
A查看信息