一、背景描述
在我们的日常工作和生活中,会遇到需要连接Linux服务器操作的情况,最常遇到的一些操作就是文件和文件夹的操作,将这些常用操作记录一下,方便后续的使用。
二、文件常用操作指令
Linux下的指令可以通过按下【tab】键进行自动补全;同时按下键盘的【Ctrl+c】可以打断指令执行,正常来说如果指令执行很快且不需要再次确认是不需要打断的。
2.1、新建文件
# 新建文件指令【touch】(查看指令帮助命令为:touch --help)
# 1、新建一个文件指令
touch 文件名称+文件后缀名
# 示例
touch coffeemilk.txt
# 2、批量创建多个文件指令
touch 文件名称+{开始编号..结束编号}+文件后缀名
# 示例
touch coffeemilk{1..10}.txt
# 3、在指定目录下创建文件
touch 路径+文件名称+文件后缀名
# 示例
touch /root/test.txt
2.2、查看目录下的文件
# 查看目录下的文件命令(该命令的帮助语法是:ls --help)
# 1、显示当前目录下的所有内容命令(ls全称list)
ls
# 2、查看当前目录下的所有文件(包括隐藏文件;.开头的就是隐藏文件)
ls -a
# 3、查看当前目录下指定类型的文件
ls *.文件后缀名
# 示例 查看当前目录下所有文本文件
ls *.txt
# 4、以一行一个文件的方式显示当前文件夹下的内容(注意这是-1,是数字1,不是字母l)
ls -1
# 5、查看当前文件夹下的所有文件详情(【注意这是字母l,不是数字1】包含权限、创建人员、大小、时间等信息)
ls -l
# 6、查看当前目录下的所有文件详细信息(包括隐藏文件;.开头的就是隐藏文件)
ls -al
2.3、文件重命名
# 方法一:使用move命令进行重命名
mv 旧文件名称+旧文件后缀名 新文件名称+新文件后缀名
# 示例(将test.txt文件修改为helloworld.txt)
mv test.txt helloworld.txt
# 方法二:使用rename命令进行重命名
rename 旧文件名称+旧文件后缀名 新文件名称+新文件后缀名 旧文件名称+旧文件后缀名
# 示例(将coffeemilk.txt的文件重命名为test.txt)
rename coffeemilk.txt test.txt coffeemilk.txt
2.4、文件删除
# 删除文件命令rm
# 1、删除当前文件夹下的文件命令【注意:linux没有回收站,所以在确认删除的时候输入了y就直接删除了,无法恢复】
rm 文件名称+文件后缀名
# 示例(删除当前文件夹下的test.txt文件)
rm test.txt
# 2、删除指定文件夹下的文件命令【注意:linux没有回收站,所以在确认删除的时候输入了y就直接删除了,无法恢复】
rm /文件路径/文件名称+文件后缀名
# 示例(删除root文件夹下的helloworld.txt文件)
rm /root/helloworld.txt
# 2、删除当前文件夹下的多个文件命令【注意:linux没有回收站,所以在确认删除的时候输入了y就直接删除了,无法恢复】
rm 文件1名称+文件1后缀名 文件2名称+文件2后缀名 文件3名称+文件3后缀名 ...
# 示例(删除当前件夹下的coffeemilk1.txt、coffeemilk2.txt、coffeemilk3.txt文件)【注意:linux没有回收站,所以在确认删除的时候输入了y就直接删除了,无法恢复】
rm coffeemilk1.txt coffeemilk2.txt coffeemilk3.txt
# 强制删除当前文件夹下指定文件,不需要用户确认是否删除,直接强制删除(该命令慎用,一旦执行则文件直接删除完毕,无法找回)
rm -f 文件名称+文件后缀名
# 示例(删除coffeemilk4.txt)
rm -f coffeemilk4.txt
# 强制批量删除当前文件夹下的文件,不需要用户确认是否删除,直接强制删除(该命令慎用,一旦执行则文件直接删除完毕,无法找回)
rm -f 文件名称{开始编号..结束编号}+文件后缀名
# 示例 批量删除coffeemilk6至10的txt文件
rm -f coffeemilk{6..10}.txt
2.5、复制和移动文件
# 1、在当前文件夹下复制文件
cp 旧文件名称+旧文件后缀名 新文件名称+新文件后缀名
# 示例(复制coffeemilk5.txt文件并且重新给新文件取名为test.txt)
cp coffeemilk5.txt test.txt
# 2、将文件复制到指定文件夹
cp 旧文件名称+旧文件后缀名 需要复制到的文件夹路径
# 示例
cp test.txt /opt/
# 将文件移动到指定文件夹
mv 旧文件名称+旧文件后缀名 需要复制到的文件夹路径
# 示例(如将/root路径下的文件coffeemilk5.txt文件移动到/opt路径下)
mv coffeemilk5.txt /opt/
2.6、文件内容的编辑保存删除操作
Linux中通常使用vi编辑器(类似Windows的文本编辑器)对文件内容进行操作【vi 文件名称+文件后缀名】即可打开文件;
序号 | vi编辑器的模式 | 模式说明 |
1 | 常规模式 | 打开文件后默认是常规模式,在常规模式中可以使用各种快捷键,帮我们快速编辑文件。比如:快速按下键盘的D键2次(dd)就是删除当前光标所在整行的数据; |
2 | 编辑模式 | 需要先切换为英文输入法,然后按i、o、a这三个键中的任意一个键都可以进入到编辑模式,这样才能向文件中写内容,内容写完之后,需要回到常规模式(在编辑模式中直接按下esc键即可回到常规模式) |
3 | 命令模式 | 在常规模式时按:(英文的冒号)进入命令模式,命令模式按esc回到常规模式,命令模式下输入q然后按下Enter键(回车)表示退出文件。 q 退出不保存; wq 保存并退出; q! 表示强制退出不保存; wq! 强制保存并退出。 set number 每行内容都添加行号 |
2.7、文件内容的查看
vi命令可以查看文件内容,但是每次都要vi进去,看完再退出来,比较麻烦,如果只是查看文件内容,可以使用如下指令操作:
序号 | 只是查看文件内容指令 | 指令说明 |
1 | cat | # 从上往下顺序查看文本所有内容指令 # 示例:查看test.txt文本所有内容 # 从上往下顺序查看文本所有内容指令且现实行号 # 示例:查看test.txt文本所有内容且显示行号 |
2 | tac | # 从下往上倒序查看文本所有内容指令 # 示例:查看test.txt文本所有内容 |
3 | head | # 1、查看文件前十行内容指令 head 文件名称+文件后缀名 # 示例:查看test.txt文件的前10行内容 head test.txt # 2、查看文件前指定行内容指令 head -查看的行数 # 示例:查看test.txt文件的前2行内容 head -2 test.txt |
4 | tail | # 1、查看文件尾部十行内容指令 tail 文件名称+文件后缀名 # 示例:查看test.txt文件的尾部10行内容 tail test.txt # 2、查看文件尾部指定行内容指令 tail -查看的行数 # 示例:查看test.txt文件的尾部2行内容 tail -2 test.txt |
2.8、统计文件的行数和字节数
序号 | 指令 | 指令说明 |
1 | wc 文件名称+文件后缀名 (wc test.txt) | 统计行数、单词个数、字节数 |
2 | wc -l 文件名称+文件后缀名 (wc -l test.txt) | 统计文件的总行数(这是字母l,不是数字1,也不是字母i) |
3 | wc -c 文件名称+文件后缀名 (wc -c test.txt) | 统计文件总的字节数(Bytes) |
4 | wc -L 文件名称+文件后缀名 (wc -L test.txt) | 统计文件中最长行的长度 |
5 | wc -w 文件名称+文件后缀名 (wc -w test.txt) | 统计文件中单词的个数,默认以空白字符做为分隔符(在Linux系统中,一段连续的数字或字母组合为一个词; 空格,换行不为一个词) |
2.9、管道符
管道符号【|】 ,可以将前面指令的执行结果,作为后面指令的操作内容。
序号 | 管道符使用场景 | 示例指令 |
1 | 统计指令执行结果有多少行 | ip addr|wc -l |
2 | 统计目录下有多少个文件 | ls /root|wc-l |
3 | 查看指令的指定行内容 | ip addr|tail -5|head -2 |
2.10、模糊与精确匹配文件内容
【grep】指令是按行过滤字符串,默认是模糊匹配,只要单词中含有某些内容就过滤出单词所在的每行数据。
序号 | 模糊与精确匹配文件内指令 | 指令说明 |
1 | grep '需要模糊匹配的内容' 文件名称+文件后缀名 (grep '编辑' test.txt) | 模糊匹配内容在文件中的哪些行显示 |
2 | grep -n '需要模糊匹配的内容' 文件名称+文件后缀名 (grep -n '编辑' test.txt) | 模糊匹配内容在文件中的哪些行显示且显示行号 |
3 | grep -w '需要精确匹配的内容' 文件名称+文件后缀名 (grep -w '你好' test.txt) | 精确匹配内容在文件中的哪些行显示 |
4 | grep -wn '需要精确匹配的内容' 文件名称+文件后缀名 (grep -wn '你好' test.txt) | 精确匹配内容在文件中的哪些行显示且显示行号 |
5 | 指令|grep '需模糊匹配的内容' (ip addr|grep 'net' ip addr|grep -w 'net') | 可以对指令内容的结果进行模糊或精确匹配 |
2.11、获取文件指定列的内容
【awk】是按照列过滤的指令;$1代表第一列,$2代表第二列,$NF代表最后一列,列默认是由空格分开的。
序号 | 指令 | 说明 |
1 | awk '{print $1}' 文件名称+文件后缀名 (awk '{print $1}' info.txt) | 获取Info.txt文件中以空格区分的第一列内容 |
2 | awk '{print $NF}' 文件名称+文件后缀名 (awk '{print $NF}' info.txt) | 获取Info.txt文件中以空格区分的最后一列内容 |
3 | awk -F ',' '{print $1}' 文件名称+文件后缀名 (awk -F ',' '{print $1}' info.txt) | 获取Info.txt文件中以逗号区分的第一列内容 |
2.12、对文件内容排序和去重
序号 | 指令 | 说明 |
1 | sort 文件名称+文件后缀名 (sort coffeemilk.txt) | 对文件进行顺序排序(先数字后字母(且先小写字母后大写字母)) |
2 | sort -n 文件名称+文件后缀名 (sort -n coffeemilk.txt) | 对文件进行顺序排序(先数字后字母(且先小写字母后大写字母)) |
3 | sort -r 文件名称+文件后缀名 (sort -r coffeemilk.txt) | 对文件进行逆序排序(先字母后数字(且先大写字母后小写字母)) |
4 | sort -r -n 文件名称+文件后缀名 (sort -r -n coffeemilk.txt) | 对文件进行逆序排序(先数字后字母(且先大写字母后小写字母) |
5 | sort 文件名称+文件后缀名|uniq ( sort coffeemilk.txt |uniq) | 对文件内容顺序排序后去重 注意:直接使用uniq对文件进行去重是没有效果的,必须要先对文件内容进行排序后再去重 |
6 | sort 文件名称+文件后缀名|uniq -c ( sort coffeemilk.txt |uniq -c) | 对文件内容顺序排序后去重,且在对应的内容前面显示重复的次数 |
7 | sort -r 文件名称+文件后缀名|uniq ( sort -r coffeemilk.txt |uniq) | 对文件内容逆序排序后去重 注意:直接使用uniq对文件进行去重是没有效果的,必须要先对文件内容进行排序后再去重 |
8 | sort -r 文件名称+文件后缀名|uniq -c ( sort -r coffeemilk.txt |uniq -c) | 对文件内容逆序排序后去重,且在对应的内容前面显示重复的次数 |
三、文件夹常用操作指令
3.1、查看当前所在文件夹
# 查看当前所在的文件夹路径
pwd
3.2、创建文件夹
# 1、在当前路径下创建文件夹
mkdir 需创建的文件夹名称
# 示例(在当前路径下创建名为coffeemilk的文件夹)
mkdir coffeemilk
# 2、批量创建多个目录
mkdir 文件夹名称{开始编号..结束编号}
# 示例(批量创建名称为coffeemilk1至9的文件夹)
mkdir coffeemilk{1..9}
# 3、在当前目录下一次性创建多级子目录
mkdir -p 目录1/目录2/目录3/...
# 示例(在当前目录下创建test/coffeemilk/network/)
mkdir -p test/coffeemilk/network/
3.3、切换文件夹
# 1、切换到指定目录
cd 目录路径
# 示例1(切换到/opt目录下)
cd /opt/
# 示例2(切换到/root/test/coffeemilk目录下)
cd /root/test/coffeemilk/
# 2、切换到上一级目录
cd ..
# 3、进入上一级的上一级目录 ,还可以继续../
cd ../..
# 4、直接切换到根目录
cd /
3.4、文件夹重命名
# 方法一:使用move命令进行重命名
mv 旧文件夹名称 新文件夹名称
# 示例(将coffeemilk文件夹修改为牛奶咖啡)
mv coffeemilk 牛奶咖啡
# 方法二:使用rename命令进行重命名
rename 旧文件夹名称 新文件夹名称 旧文件夹名称
# 示例(将coffeemilk1的文件夹重命名为牛奶咖啡1)
rename coffeemilk1 牛奶咖啡1 coffeemilk1
3.5、删除文件夹
# 1、删除当前文件夹下的一个空文件夹(该命令只能删除空文件夹)
rmdir 文件夹名称
# 示例(删除当前文件夹下名为coffeemilk2的空文件夹)
rmdir coffeemilk2
# 2、递归删除非空文件夹下的文件及其所有内容
rm -r 文件夹名称【删除之前都会与用户确认,一旦删除,该文件夹及其文件内容则无法恢复】
# 示例(递归删除非空文件夹test)
rm -r test
# 3、批量删除当前文件夹下的空文件夹(该命令只能批量删除空文件夹)
rmdir 文件夹名称{开始编号..结束编号}
# 示例(批量删除名为coffeemilk3至9开头的空文件夹)
rmdir coffeemilk{3..9}
# 4、强制递归删除非空文件夹及其包含的内容(慎用,该命令不会与用户确认是否删除,直接删除文件夹内容,一旦删除无法恢复)
rm -rf 需删除的文件夹名称
# 示例(强制删除coffeemilk3文件夹及其包含的子文件夹和内容)
rm -rf coffeemilk3
3.6、复制和移动文件夹
# 1、在当前文件夹下复制文件夹
cp -r 需复制的文件夹名称 新文件夹名称
# 示例(复制【牛奶咖啡】文件夹并且重新给新文件取名为【复制出来的文件夹】)
cp -r 牛奶咖啡 复制出来的文件夹
# 2、将文件夹复制到指定文件夹
cp -r 需复制的文件夹名称 需要复制到的文件夹路径
# 示例 (将当前文件夹下的【复制出来的文件夹】复制到/root文件夹下)
cp -r 复制出来的文件夹 /root/
# 将文件夹移动到指定文件夹
mv 文件夹名称 需要复制到的文件夹路径
# 示例(如将/root路径下的文件夹【牛奶咖啡】动到/opt路径下)
mv 牛奶咖啡 /opt/