1. 文件命名规则
理论上除了“/”字符之外,所有的字符都可以使用,但一般不建议在目录名和文件名中使用特殊字符,如<、>、?、*等。一般习惯的命名规则如下:
- 由于Linux严格区分大小写,所以尽量都用小写字母;
- 如果必须对文件名进行分割,建议使用”_”;
- 文件扩展名的使用尽量规范,如1.log文件就应该表示一个日志文件。
另外,需要补充的是,Linux文件的扩展名本身对Linux操作系统没有特殊的含义,Linux系统并不以文件的扩展名来区分文件类型。例如,test.exe只是个文件,其扩展名.exe并不代表此文件就一定是可执行的。实际上,在Linux操作系统中,
文件类型是靠权限位的标识符来进行区分的,当然也可以通过颜色,如黑色代表普通文件,天蓝色代表文件夹。
2. 目录创建/删除
目录创建
mkdir 文件目录
mkdir -p 文件目录 # 递归创建目录
mkdir 目录1 目录2 目录3 # 创建多个目录
目录删除
rmdir 目录名称 # 必须是空目录
rmdir -p 目录名称1/目录名称2/目录名称3 # 递归删除空目录,从右往左一级一级删除空目录
rmdir 目录名称1 目录名称2 目录名称3 # 删除多个目录
3. 文件创建/删除
文件创建
touch 文件名称
touch 文件名称1 文件名称2 文件名称3 # 创建多个文件
touch file{1..5} # 一键创建有序号的多个文件
文件删除
rm [选项] 文件或文件夹的名称
选项:
-r: 针对文件夹,代表递归删除,先把目录下的所有文件删除,再删除文件夹
-f: 强制删除,不提示。
4. 文件复制/剪切/重命名
文件复制
cp [选项] 源文件或文件夹 目标路径
选项说明:
-r: 递归复制,主要针对文件夹
-f: 强行覆盖,不提示
-v: 显示复制过程
# 实例
# 把1.txt文件复制到/root/tmp文件夹中
cp 1.txt /root/tmp/
# 把1.txt文件复制到/root/tmp文件夹中,并重命名为2.txt
cp 1.txt /root/tmp/2.txt
# 把test01文件夹连同其内部的文件统一复制到test02文件夹下
cp -r test01 test02/
# 把test01文件夹连同其内部的文件统一复制到test02文件夹下,强行覆盖已经存在的文件并查看复制过程
\cp -rfv test01 test02/
实际操作中会发现,在使用
cp -f
操作时,如果碰到文件重复的情况,系统仍然会提示确认是否要每个都被覆盖。原因是在
.bashrc
文件中定义了
alias cp='cp -i'
的别名。所以要达到
cp -f
的效果,可以使用以下三种方法:
# 方法1:使用反斜杠,就不会使用系统中的别名
\cp -rf test01 test02/
# 方法2:卸载别名
unalias cp
\cp -rf test01 test02/
alias cp="cp -i" # i是interactive的缩写,表示交互式
# 方法3:添加yes前缀
yes|cp -rf test01 test02/
文件剪切
mv [选项] 源文件或文件夹 目标路径
选项说明:
-f: 强行覆盖,不提示
-v: 显示移动过程
-n: 不覆盖已存在的文件,不提示
-i: 交互式的执行命令,interactive的缩写 # 注意:如果同时使用-v, -n, -i命令中的多个,只有写在最后的会生效
# 实例
# 把1.txt文件移动到/root/tmp文件夹中
mv 1.txt /root/tmp/
# 把1.txt文件移动到/root/tmp文件夹中,并重命名为2.txt
mv 1.txt /root/tmp/2.txt
# 把test01文件夹内部的所有文件统一移动到test02文件夹下,并强行覆盖已经存在的文件
mv -f test01/* test02/
# 把test01文件夹移动到test02文件夹下,test02下没有test01文件夹
mv -f test01 test02/
# 把test01文件夹移动到test02文件夹下,test02下已有test01文件夹,强行覆盖重复文件并查看移动过程
mv -vf test01/* test02/test01/
# 把test01文件夹移动到test02文件夹下,test02下已有test01文件夹,不覆盖重复文件并查看移动过程
mv -uf test01/* test02/test01/
在
.bashrc
文件中定义了
alias mv='mv -i'
的别名。
另外
mv
命令也有重命名的作用
,格式如下:
mv 源文件或文件夹名称 新文件或文件夹名称
5. 文件打包/压缩/解压缩
文件打包
tar [选项] 打包后的名称.tar 多个文件或文件夹
选项说明:
-c: 打包
-f: filename, 打包后的文件名称
-v: 显示打包的进度
-u: update缩写,更新原打包文件中的文件(了解)
-t: 查看打包的文件内容(了解)
tar -tf 打包后的文件名称.tar # 查看打包文件的内容
tar -uf 打包后的文件名称.tar 追加的新文件 # 往tar里追加内容
tar -xf 打包后的文件名称.tar # 释放tar包中的文件
文件打包并压缩
tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
-cf: 对文件或者文件夹进行打包
-z: 使用gzip压缩工具把打包后的文件压缩为.gz
-j: 使用bzip2压缩工具把打包后的文件压缩为.bz2
-J: 使用xz压缩工具把打包后的文件压缩为.xz
-P: 保留绝对路径,即"/"
压缩速度:gzip > bzip2 > xz
压缩率: gzip < bzip2 < xz
100M 90M 80M 70M
# 实例
tar -zcf abc.tar.gz a.txt b.txt c.txt
文件解压缩
tar [选项] 压缩包名称
选项说明:
-P: 若压缩时指定了-P,解压时指定才有效果
-C: 解压到指定路径下 # 若在压缩与解压缩时都指定了—P参数,—C参数不生效
# .tar.gz格式的压缩包
tar -zxf 名称.tar.gz
# .tar.bz2格式的压缩包
tar -jxf 名称.tar.bz2
# .tar.xz格式的压缩包
tar -Jxf 名称.tar.xz
zip压缩
zip格式在Windows与Linux下都可正常使用
zip [选项] 压缩后的文件名称.zip 文件或文件夹
选项说明:
-r: 递归压缩,主要针对的是文件夹
# 实例
zip abc.zip a.txt b.txt c.txt
zip -r wechat.zip wechat # 把文件夹压缩
zip解压缩
unzip 压缩包名称 # 解压到当前目录
unzip 压缩包名称 -d 指定路径 # 解压到指定路径下
# 实例
unzip abc.zip
unzip wechat.zip -d /usr/local/nginx/ # 把wechat.zip解压到/usr/local/nginx目录下
6. 文件查看命令
# 正序输出文件内容
cat 文件名称
# 合并输出多个文件内容
cat 文件名称1 文件名称2 文件名称3 > 合并后的文件名称
# 倒序输出文件内容
tac 文件名称
# 查看文件的前n行,如果不指定n,则默认显示前10行
head -n 文件名称
# 查看文件的最后n行,如果不指定n,则默认显示前10行
tail -n 文件名称
# 动态查看文件的输出信息,主要用于动态查看日志
tail -f 文件名称
less分屏显示文件内容
不讲more命令,应该more命令只是less命令的一个过渡版本,直接掌握less命令就好了,基本用法如下
# 不显示行号
less 文件名称
# 显示行号
less -N 文件名称
less命令加载文件时,是一点一点加载到内存,因此在读取大文件时,效率比较高。less命令的执行会打开一个交互界面,下面是一些常用的交互命令:
按键 | 功能 |
---|---|
回车键 | 向下移动一行 |
d | 向下移动半页 |
空格键 | 向下移动一页 |
b | 向上移动半页 |
上下方向键 | 向上及向下移动 |
less -N 文件名称 | 显示行号 |
/字符串 | 搜索指定的字符串 |
q | 退出less |
7. 文件统计命令
# wc命令
wc [选项] 文件名称
选项说明:
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数(依照空格来判断单词数量)
-c:表示bytes,字节数(空格、回车、换行)
# du命令
du [选项] 文件名或文件夹名
选项说明:
-s:summaries,只显示汇总的大小,统计文件夹的大小
-h:以较高的可读性显示文件或文件夹的大小
-d:统计文件夹下几层内的全部文件,大于等于0,0表示summaries
8. 文件处理命令
# find命令
find [选项] 文件名称
选项说明:
-name:指定要搜索的文件名称,支持*通配符
-type:代表要搜索的文件类型,f代表普通文件,d代表文件夹 => 加快检索速度
# grep命令
grep 要搜索的关键词 搜索的文件名称
# 输出重定向
> :标准输出重定向,覆盖输出,会覆盖掉原先的文件内容
>> :追加重定向,追加输出,不会覆盖原始文件内容,而是会在原始内容末尾继续添加