Linux 文件管理命令
创建文件
1、touch命令
可以通过touch命令来创建一个空文件
touch file_name
如果该文件已经存在,再使用touch命令时候,会刷新该文件的时间戳,文件内容不会发生改变。
2、重定向 >
可以通过重定向来创建一个空文件,如果该文件已经存在,会清空文件中的所有内容。(慎用)
> file_name
3、vi/vim
使用vi或vim编辑一个不存在的文件时,当编辑后第一次存盘时创建它
创建目录文件
mkdir命令
mkdir dir_name
# 如果是递归创建需要加 -P 参数
# 创建d这个目录文件时,如果上级目录不存在,就会自动创建
mkdir -P /a/b/c/d
复制文件
复制文件的原理:
本质就是创建一个新的文件,例如使用cp命令将文件复制到另一个目录中,则复制的文件将具有与原始文件相同的所有者和所属组。所以复制文件的时候,默认文件所有者和所属组会发生改变
cp命令
cp 原文件 复制后的文件
cp命令常用的参数有以下几个:
-
-a 多个选项的组合,包括复制目录、保留文件属性和其它一些属性。一般复制整个目录且需要保留文件属性的时候用它
-
-p 保留文件属性,复制单个非目录文件,需要保留属性就用它
-
-r 复制目录文件的时候需要加这个参数
移动文件
移动文件原理:
本质上在文件系统中修改了文件的路径。文件本身的内容和属性不会被修改,包括文件的所有者和所属组。因此,无论将文件移动到哪个目录,文件的所有者和所属组都将保持不变。所以移动不会改变文件的所有者和所属组
mv命令
移动文件或给文件改名使用mv命令,
mv 原文件 目标文件
mv的常用参数有这些:
-
-i 如果目标文件存在,会提示是否覆盖
-
-f 如果目标文件存在,直接覆盖
-
-T 将目标视为一个常规文件。如果目标是一个已存在的目录,mv 不会将源移动或重命名为该目录的子项,而是会尝试重命名或覆盖目标
注意事项:
1、使用mv移动文件的时候,如果有同名文件会默认覆盖掉,所以可以加 -i 参数避免文件被覆盖
2、默认同时移动多个文件的时候,如果目标文件是一个目录文件,会将前面的文件都移动到这个目录里面去
3、如果同时移动多个文件,且最后一个文件不是目录,会报错“mv: target 'file4' is not a directory”
删除文件
rm命令
删除文件使用rm 命令,如果不加任何参数会提示是否确认删除
rm常用的参数有这些
- -f:强制删除,不提示是否确认删除
- -r:删除目录文件的时候使用这个参数
注意事项
1、使用rm删除文件的时候确保路径的准确性
# 多打了个空格把系统格式化了
rm -rf / home/ehigh/tom.txt
2、如果不是必须删除的文件,可以给移动到/tmp目录下去
3、删除文件的时候慎用-r 或 -rf 选项
4、删除文件慎用通配符
打包文件
tar命令
打包一般用的就是tar工具,打包就是将几个文件整合成一个大文件,不会像压缩一样减小文件的大小。tar工具再进行打包的时候也可以指定压缩算法,将打包后的文件进行压缩处理。
tar常用的参数有这些:
- -f 打包成一个文件(表示将结果输出到指定文件中)
- -v 显示过程
- -c 打包
- -x 解压文件
- -z 默认调用gzip命令来进行压缩
- -j 调用bzip2命令来进行压缩
- -C 解压到指定的路径,默认解压到当前所在的位置
- -p 保留原始属性和权限
- --exclude 排除指定文件不打包
# 打包
tar -czf 打包后的文件名称 需要打包的文件
# 解包
tar -xzf 需要解包的文件 -C /path(解包到哪个路径)
# 打包的时候排除某些文件
tar -czf 打包后的文件名称 --exclude='path/dir' 需要打包的文件
# 查看打包文件中都有哪些文件
tar -tf file_name
说明:
1、使用tar命令进行打包的时候要使用相对路径,不要用绝对路径,如果使用绝对路径会把整个路径都给打包进去,还会提示“tar: 从成员名中删除开头的“/”
例如:
# 例如:需要将/home/ehigh/text1/tom/bob下的所有文件打包成一个text.tar.gz的文件
ehigh@ubuntu:~/text1/tom/bob$ tar -czf /home/ehigh/test.tar.gz /home/ehigh/text1/tom/bob/
tar: Removing leading `/' from member names
ehigh@ubuntu:~$ ls | grep test.tar.gz
test.tar.gz
# 解压这个文件
ehigh@ubuntu:~$ tar -xzf test.tar.gz
# 发现将整个路径都给打包了
ehigh@ubuntu:~/home/ehigh/text1/tom/bob$ pwd
/home/ehigh/home/ehigh/text1/tom/bob
2、有多个参数的时候,-f必须放在参数的最后面,用于指定打包成的文件
# 这样是错的
tar -cfz file_name.tar file_name
# 正确
tar -czf file_name.tar file_name
3、使用exclude排除指定文件的时候,如果这个文件是一个目录,目录后面不能加斜杠,否者会把这个目录下的文件都打包进去
# 这样是错的
tar -czf file_name.tar --exclude=path/dir/ file_name
# 正确
tar -czf file_name.tar --exclude=path/dir file_name
4、使用--exclude 选项时,通常使用的是相对路径,而不是绝对路径,因为tar命令对待路径的方式是基于你当前传递给它的目录结构。
# 错误
tar -czf PythonWorker.tar.gz PythonWorker --exclude='/home/ehigh/work/PythonWorker/Worker/*/NVR_SDK'
# 正确
tar -czf PythonWorker.tar.gz --exclude='PythonWorker/Worker/*/NVR_SDK' PythonWorker
5、tar命令解压的时候会默认将目标目录下的同名文件给覆盖,所以为了防止这种情况的发生,解压的时候可以加一个-k参数来避免同名文件被覆盖。
tar -xvf archive.tar.gz --keep-old-files
tar -xvkf archive.tar.gz