理论上除了“/”字符之外,所有的字符都可以使用,但一般不建议在目录名和文件名中使用特殊字符,如<、>、?、*等。一般习惯的命名规则如下:
- 由于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 |
# wc命令 wc [选项] 文件名称 选项说明: -l:表示lines,行数(以回车/换行符为标准) -w:表示words,单词数(依照空格来判断单词数量) -c:表示bytes,字节数(空格、回车、换行) # du命令 du [选项] 文件名或文件夹名 选项说明: -s:summaries,只显示汇总的大小,统计文件夹的大小 -h:以较高的可读性显示文件或文件夹的大小 -d:统计文件夹下几层内的全部文件,大于等于0,0表示summaries8. 文件处理命令
# find命令 find [选项] 文件名称 选项说明: -name:指定要搜索的文件名称,支持*通配符 -type:代表要搜索的文件类型,f代表普通文件,d代表文件夹 => 加快检索速度 # grep命令 grep 要搜索的关键词 搜索的文件名称 # 输出重定向 > :标准输出重定向,覆盖输出,会覆盖掉原先的文件内容 >> :追加重定向,追加输出,不会覆盖原始文件内容,而是会在原始内容末尾继续添加



