Linux 基础之文件操作命令
1、复制文件
1. cp : copy的缩写 相当于windows中的复制粘贴:ctrl c 和ctrl v
2. 格式:cp 参数 被复制的路径 复制到的新路径
3. 参数:
-r或-R: 递归复制
-p: 把原来目录的链接也一起复制过去(链接相当于windows中的快捷方式)
-preserve: 保留原来的属性
-a 原路径 新路径:保证部分属性不变
# 案例1:将/root目录下的 1.txt 复制粘贴到/tmp目录下:
[root@localhost ~]# cp -a 1.txt /tmp
# 案例2:将/root目录下的test文件夹及其内部的文件复制到/tmp中:
[root@localhost ~]# cp -r /root/test /tmp
# 案例3:将/etc/hosts和/etc/resolv.conf 同时复制到/tmp目录中
[root@localhost ~]# cp /etc/hosts /etc/resolv.conf /tmp
# 知识补充:
ls -l 等价于 ll (举例 ll /root)
stat 路径: 查看该文件属性
在linux中没有提示就是最好的结果,因为提示就是报错
Esc. :直接拿到上一条命令的最后一个元素
2、移动文件
1. mv: 相当于windows中的剪切粘贴: ctrl x 和ctrl v
2. 格式:mv 参数 原路径 新路径
3. 参数:
-i: 若存在同名文件,则向用户询问是否覆盖
-f: 覆盖已有文件时,不进行任何提示
-b: 当文件存在时,覆盖前为其创建一个备份
-u: 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
# 案例1:移动文件:将/root目录下的1.txt移动到/opt目录中
[root@localhost ~]# mv /root/1.txt /opt
# 案例2:移动文件夹:把root文件夹下的test文件夹移动到mmt目录
[root@localhost ~]# mv test/ /mnt/
3、删除文件
删除文件有两种方式:物理删除和逻辑删除(把文件隐藏,未直接删除)
# 物理删除:直接把文件删掉(企业中不能随便用)
1. 格式:rm 参数 路径: remove的缩写rm
2. 参数:
-f 路径: 不提示直接删除
-i 路径:提示删除
-r 路径: 递归删除文件
-rf 路径: 不提示直接删除文件夹(禁止使用删除根目录 rm -rf /*)
# 案例1:将/root目录下的1.txt删除
[root@localhost ~]# rm 1.txt
[root@localhost ~]# rm -f 1.txt
# 案例2:删除/root目录下的test文件夹及其内部所有的文件
[root@localhost ~]# rm -r /root/test/
[root@localhost ~]# rm -rf /root/test/
# 知识补充:
在linux系统中不能直接删除文件夹,需要用参数r
查看命令的存放路径:which 命令名 # which rm
怎么解决误操作rm的问题:修改rm命令的名字
4、系统别名
1. 关键字 alias
2. 格式: alias xxx = '命令'
eg : alias abc='rm'
3. alias : 查看系统别名
4. alias rm='xxx' : 设置系统别名
5. 不使用别名在命令前加个斜杠\:
[root@localhost ~]# \rm 1.txt
5、vi、vim编辑器
vim是vi的升级版本编辑器,用于修改配置,写脚本等。类似于windowns的文本编辑器,比如记事本,word文档...
1、安装vim: yum install vim -y
2、打开文本编辑器:vim 文件路径
vim 1.txt
3、vi编辑器三种操作模式:
命令模式:与输入模式可以互转(a,i,o三种模式)、与末行模式可以互转
编辑模式:与输入模式可以互转
末行模式:与输入模式可以互转
4、进入编辑模式:
i : 在光标之前输入
o :在光标处新创建一行
a :在光标之后输入
5、保存并退出:
①先进入末行模式:按Esc,然后:键
②操作:w:保存; q:退出; !:强制
6、解决vim编辑异常(例如正常编辑的文件被删除了):
①删除.1.txt.swp
②继续编辑(-r)
[root@localhost ~]# vim -r 1.txt
③放弃编辑(-n)
[root@localhost ~]# vim -n 1.txt
7、光标快速移动的快捷方式:
快速切换到底行:G
快速跳转到首行:gg
快速跳转到行尾:$
快速跳转到指定行:先进入末行模式,然后输入数字回车
快速复制文本内容信息:yy,nyy(向下复制n行)
快速粘贴文本内容:p(在光标的下一行粘贴);P(在光标的上一行粘贴)
删除文本内容:dd(删除光标所在行); ndd(向下删除n行)
回撤刚刚的操作:u
撤回回撤:ctrl + r
显示行号:先进入末行模式,然后输入set nu,回车
取消行号:先进入末行模式,然后输入set nonu,回车
搜索内容:先进入命令模式,然后输入/,输入需要搜索的内容,回车
n:下一个
N:上一个
:set ic: 忽略大小写
可视化编辑:ctrl + v,编辑:Shift + i,按 Esc键退出即可
# 知识补充:
实时监控文件内容变化:tail -f 要监控的文件
由于Xshell对vim编辑异常有做处理,现在演示出来:
1、查看vim进程
[root@localhost ~]# ps -ef | grep vim
2、杀死vim进程
[root@localhost ~]# kill -9 pid
批量复制:
[root@localhost ~]# while true;do echo "Hello World" >> 1.txt; done
![image-20211210165120122](https://s2.loli.net/2021/12/10/8qSNuloZEV4wb6L.png)
![image-20211210165241103](https://s2.loli.net/2021/12/10/yWDJ1mp68rHNL2o.png)
![image-20211210170437904](https://s2.loli.net/2021/12/10/c4A23RlZOvB1sou.png)
6、小练习
1. vim删除多行有几种方法?
方法1:ndd; 方法2:ctrl v进入可视化编辑,选中多行删除。
2. vim中如何在前10行之前加上#?
方法1:ctrl v进入可视化编辑,利用键盘的上下键选中需要的行,再进行操作。
方法2:利用正则表达式:先进入末行模式,输入指定的行数(1,10),再输入替换的内容(s/被替换的内容/替换的新内容/g)
:1,10 s/\(.*)/# \1/g
3. 知识补充:正则表达式:
* :匹配任意字符的任意个数,除换行符(\n)之外
. : 匹配某一个字符
? :匹配零次或一次前导字符
+ : 匹配一次或多次前导字符
^ : 匹配以某个字符开头
$ : 以某个字符结尾
\ : 取消转义
(): 分组
[]: 或者(里面包含的任意一个字符)
| :或者(两边的字符整体)
{}:指定匹配个数
{n} : 匹配n次
{n,m} :匹配n到m次
{n,} :匹配至少n
{,m} :匹配最多n次