文件增删
touch指令
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
touch 文件名
,直接创建一个文件:
第一次使用ll
,发现当前是一个空目录。touch test.txt
后,再次ll
就多出了一个test.txt
的文件。
touch
后面可以接多个文件名,同时创建多个文件:
常用选项:
- -a 或 --time=atime 或 --time=access 或 --time=use 只更改存取时间。
- -c 或 --no-create 不建立任何文档。
- -d 使用指定的日期时间,而非现在的时间。
- -m 或 --time=mtime 或 --time=modify 只更改变动时间。
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t 使用指定的日期时间,而非现在的时间
mkdir指令
功能:在当前目录下创建一个的目录
mkdir 目录名
直接创建一个空目录:
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立
好那些尚不存在的目录,即一次可以建立多个目录
mkdir -p 一条路径
,会创建一整条路径的目录:
此处用了一个指令tree
,其可以以树形图的形式展示目录结构。
cp指令
功能:复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
现在我们有如下目录结构:
目录dir1
内部有三个文件,dir2
是一个空目录。现在我们用cp
指令吧三个文件复制到dir2
:
可以看到,我们成功把三个文件进行了拷贝。
常用选项:
-r
递归处理
假设我们现在有以下目录结构:
现在我们要把目录a
以及其内部的三个文件一起复制到dir2
中,直接cp
试试看:
我们的指令执行失败了,这是因为a
是一个内部有内容的目录结构,我们不能直接复制,而应该递归式地复制。
再次输入cp -r dir1/a dir2
:
这样我们就把a
整个目录成功拷贝了过去。
其它选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
rm指令
功能:删除文件或目录
语法: rm [-f-i-r-v][文件/目录名]
常用选项:
- -f 即使文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
我们经常使用rm -rf
的组合,来强制删除目录和文件,但是这个操作非常危险,删除前要慎重考虑。
rmdir指令
rmdir
是一个与mkdir
相对应的命令。mkdir
是建立目录,而rmdir
是删除目录。
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
文件压缩
zip & unzip 指令
功能: 将目录或文件压缩成zip格式
语法: zip [压缩文件.zip] [目录或文件]
在
zip
的末尾,可以选中多个文件,把他们放到同一个压缩包中:
我们通过zip test.zip file1 file2 file3
把三个文件都压缩到了test.zip
压缩包中,最后我们的目录结构中出现了一个test.zip
压缩包
常用选项:
- -r 递归处理,将指定目录下的所有文件和子目录一并处理
压缩后我们也需要解压缩,解压缩的指令是unzip
,直接unzip 压缩包
就可以解压一个压缩包了。
比如以下目录结构:
如果我们想要把test.zip
在dir2
中解压,我们可以把test.zip
移动到dir2
中,然后直接unzip test.zip
即可。
当然我们也有更便利的方法:
- -d 解压到指定目录下
我们可以直接使用unzip dir1/test.zip -d dir2
,来把dir1
中的压缩文件,解压到dir2
中:
tar指令
tar的功能比zip更强大,也更加常用。
其既可以解压,也可以压缩,还可以直接查看压缩包的内容。
语法: tar [-cxtzjvf] 文件与目录 …
通过tar
压缩的文件,以.tgz
为后缀
常用选项:
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C : 解压到指定目录
以上选项看似多而繁杂,我这里简单解释一下:
-c :创建一个压缩文件
-v : 显示压缩过程
-z :压缩算法(加上这个才能压缩/解压)
-f : 作为最后一个选项,后面跟着压缩后的文件名
-x :解压一个压缩文件
-d :压缩到指定目录
-C :解压到指定目录
我们常用:
tar -czf 压缩包.tgz 被压缩的文件
来进行压缩:
如果你想看压缩过程,那么再加一个参数v
,以tar -cvzf 压缩包.tgz 被压缩的文件
来进行压缩:
这次压缩就显示了压缩过程:
想要解压缩,只需要把-z
改为-x
就可以了,即tar -xzf 压缩包.tgz
,同理,可以加上-v
显示解压过程:tar -xvzf 压缩包.tgz
。
另外就是tar
指令最重要的功能,-t
可以直接查看一个压缩包的内容:tar -tf 压缩包.tgz
(注意不要漏掉f,f用于选中压缩包)
这样我们就可以在不解压压缩包的情况下,看到压缩包里面的内容了。