文件与目录操作

罗大富 BigRich大约 6 分钟LinuxUbuntu

绝对路径和相对路径

在我们开始敲命令之前,首先我们需要了解两个概念 - 绝对路径与相对路径。

我们知道 Linux 的目录结构为树状结构,最顶级的目录为根目录 /。

其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

严谨的说,文件名是由 目录 + 文件名 组成的。对于目录和文件,有一些约定的表述,以 /home/geeksman/test.py 为例。

  1. test.py是文件名,它在 /home/geeksman 目录中;
  2. 全路径文件名包含了目录名和文件名,即/usr/include/stdio.h,也叫 绝对路径
  3. 目录和文件的绝对路径是从根(/)算起,在任何时候都不会有岐义。
  • 绝对路径:目录和文件的绝对路径是从根(/)算起,在任何时候都不会有岐义,例如: /home/geeksman/test.py 这个目录。

  • 相对路径:不是由 / 写起,例如,当前我们位于 /home/another 目录下,如果我们想要获取 /home/geeksman/test.py,用相对路径的写法就是 ../geeksman/test.py 这就是相对路径的写法。一个圆点 . 表示当前目录;两个圆点 .. 表示当前目录的上一级目录。

提示

理解绝对路径和相对路径的概念非常重要,在日常操作中,绝对路径和相对路径会同时使用,但是,程序员在程序中一般使用绝对路径。

ls - 列出目录

在 Linux 系统当中,ls 命令可能是最常被运行的。功能是列出文件夹信息

语法:ls [-l -h -a] [目标目录]: 参数:

  • 目标目录:被查看的文件夹,不提供参数,表示查看当前工作目录;
  • -l,以列表形式查看;
  • -h,配合-l,以更加人性化的方式显示文件大小;
  • -a,显示隐藏文件,在Linux中以.开头的,均是隐藏的。

用法:

# 显示当前目录的所有文件
ls
# 以列表形式显示 Home 目录的文件夹信息
ls -lh /home

cd、pwd - 目录切换相关命令

  1. pwd:Print Working Directory 的缩写,展示当前工作目录,直接在命令行中使用 pwd 即可显示当前的工作目录;
  2. cd:是 Change Directory 的缩写,切换工作目录,也是十分常用的命令之一。

语法:cd [目标目录] 参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户 HOME 目录

用法:

# 使用绝对路径切换
cd /home/geeksman
# 使用相对路径
cd ./desktop
# 返回上一级目录
cd ..
# 返回根目录
cd ~

mkdir - 创建新目录

mkdir 是 make directory 的缩写,创建文件夹 / 目录。

语法:mkdir [-p] 参数

  • 参数:被创建文件夹的路径。
  • 选项:-p,可选,表示帮助你直接将多层目录递归创建出来。

实例:

# 创建 dir_a 目录
mkdir dir_a
# 当前目录不存在 dir_1, 但是我想要在 dir_1 目录中创建 dir_2,需要用到 -p 选项
mkdir dir_1/dir_2

rm - 删除文件和目录

rm 是 remove 的缩写,作用是删除文件、文件夹。

语法:rm [-r -f] 参数...参数

  • 参数:支持多个,每一个表示被删除的,空格进行分隔
  • 选项:-r,删除文件夹使用
  • 选项:-f,也可以详细的写成 –force 。强制删除,不会给出确认提示,一般 root 用户会用到,通常 -r 和 -f 参数会一起使用。
# 删除单个文件
rm file_1
# 删除多个文件
rm file_1 file_2
# 删除目录
rm -r dir_1
# 删除目录和文件,如果文件 file_1,或目录 dir_1 不存在的话,rm 仍会继续执行,不会报错
rm -rf file_1 dir_1 file_2 dir_2

注意

执行 rm 操作要非常小心, Linux 不像 Windows 有回收站,一旦你用 rm 命令,想再恢复是相当的麻烦的。

rmdir 是 remove directory 的缩写,删除空的目录,由于设计不合理,一般都会被 rm -r 命令替代。

rm 存在一条非常神奇的指令,被称为电脑变砖、程序员跑路指令。

# 这行指令会删除你的 Linux 系统下的所有内容,如果你没有用虚拟机的话,就变成一块板砖啦!
rm -rf /*

touch - 创建文件

touch:创建文件

语法:touch 参数

  • 参数:被创建的文件路径
touch a.txt

cp - 复制文件或目录

cp 是 copy 的缩写,作用是复制文件、文件夹。

语法:cp [-r] 原文件 目标文件

  • 参数1,被复制的文件或文件夹。
  • 参数2,要复制去的位置。
  • 选项:-r,可选,复制文件夹使用。
# 复制当前目录下 a.txt 为 b.txt
cp a.txt b.txt
# 复制当前目录a.txt到test文件夹内
cp a.txt test/
# 复制文件夹 test 到当前文件夹内为 test2 存在
cp -r test test2

mv - 移动文件与目录,或修改名称

mv:是 move 的缩写,移动文件、文件夹。

语法:mv 原文件 目标位置

  • 原文件:源文件的路径位置
  • 目标位置:要移动到的路径,目标位置如果不存在,则会进行改名
# 把当前目录中的 file1 更名为 file3
mv file1 file3
# 把 file3 移动到 test/ 目录下
mv file3 test/

cat/more/head - 文件内容查看

Linux 系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看开头几行
  • tail 只看末尾几行

其实这些命令也不是很常用(也许是对我个人而言),在后面我们会学习 Vim/Nano 编辑器,不仅可以查看文件内容,还可以编辑。因此,在这里,我只告诉大家,这几个命令可以查看文件内容,了解一下就好。

tar - 打包和压缩

比较常用的压缩和解压也是重点,我们在 Windows 中经常需要下载一些压缩包,并且将压缩包解压才能获得里面的文件,而 Linux 中也支持文件的压缩和解压。

Linux 上的压缩包文件格式,除了 Windows 最常见的 *.zip、*.rar、*.7z 后缀的压缩文件,还有 .gz、.xz、.bz2、.tar、.tar.gz、.tar.xz、tar.bz2

这里我们使用 tar 命令来完成文件亚索和解压操作,在 Linux 中比较常用的是 gzip 格式,后缀名一般为 .gz,tar 命令的参数 -c 表示对文件进行压缩,创建新的压缩文件,-x 表示进行解压操作,-z 表示以 gzip 格式进行操作,-v 可以在处理过程中输出一些日志信息,-f 表示对普通文件进行操作。用法如下:

touch 1.txt 2.txt 3.txt
tar -zcvf 压缩包文件名 目录和文件名列表

解包解压:

rm 
tar zxvf 压缩包文件名

注意

tar 压缩包文件在 Windows 系统中可以用 winrar 打 开,但是,winrar 不能生成 tar 压缩包文件。

上次编辑于:
贡献者: Luo