文件与目录操作
绝对路径和相对路径
在我们开始敲命令之前,首先我们需要了解两个概念 - 绝对路径与相对路径。
我们知道 Linux 的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
严谨的说,文件名是由 目录 + 文件名
组成的。对于目录和文件,有一些约定的表述,以 /home/geeksman/test.py
为例。
test.py
是文件名,它在/home/geeksman
目录中;- 全路径文件名包含了目录名和文件名,即/usr/include/stdio.h,也叫
绝对路径
; - 目录和文件的绝对路径是从根(
/
)算起,在任何时候都不会有岐义。
绝对路径
:目录和文件的绝对路径是从根(/
)算起,在任何时候都不会有岐义,例如:/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 - 目录切换相关命令
pwd
:Print Working Directory 的缩写,展示当前工作目录,直接在命令行中使用pwd
即可显示当前的工作目录;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 压缩包文件。