2

Linux文件管理(上)

 1 month ago
source link: https://blog.51cto.com/u_15617580/10245356
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

因为 Linux中一切皆文件,所以在了解了 Linux基础和会使用一些入门级命令之后,接下来的重点便是 Linux文件管理的学习,就像 Java中一切皆对象一样,面向对象是 Java基础的核心和重点。该部分内容学习的重要性就像面向对象在 Java中重要性一样。这次的内容如下。

Linux文件管理(上)_运维

一、文件命名规则

1、可以使用哪些字符?

除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,不建议使用某些特殊字符,例如, <、>、?、* 等,尽量避免使用。

如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来。 建议文件命名规则:

1)由于Linux严格区分大小写,所以尽量都用小写字母

2)如果必须对文件名进行分割,建议使用"_",例如:

itweb_bj_2020.log
a.txt
001.txt
tongxunlu_bj_caiwu.txt

2、文件名的长度

目录名或文件名的长度不能超过 255 个字符。

尽量不要太长,另外文件名称一定要见名知意,可以使用英文单词。

3、文件名大小写

Linux目录名或文件名是区分大小写的。如 itweb、ITweb、yunwei 和 Yunwei ,是互不相同的目录名或文件名。

不要使用字符大小写来区分不同的文件或目录。

建议文件名一律使用小写字母。

4、Linux文件扩展名

Linux文件的扩展名对 Linux 操作系统没有特殊的含义,Linux 系统并不以文件的扩展名开分区文件类型。例如,itweb.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行的。

在Linux系统中,文件扩展名的用途为了使运维人员更好的区分不同的文件类型。

在Linux操作系统中,文件的类型是依靠权限位的标识符来进行区分的。当然也可以通过颜色,如黑色普通文件,蓝色文件夹。不理解的可以回顾上一节。

二、Linux下的文件管理

在日常工作中,经常需要对Linux的文件或目录进行操作,常见操作包括新建,删除,更改,查看,复制,移动等。

1、目录创建

在实际应用中,与目录相关的操作主要有两个:创建目录与删除目录。

1.1 mkdir 创建目录
mkdir 创建目录

mkdir = make directory,创建目录

案例1:在家目录下创建一个 itweb的文件夹

mkdir itweb

案例2: 在 /usr/local目录下,创建一个名为nginx的文件夹

mkdir /usr/local/nginx

特别注意:mkdir命令默认不能隔级创建目录,必须要求要创建的目录所在的目录一定要存在

1.2 mkdir -p 递归创建目录

基本语法:

mkdir -p /usr/local/nginx/conf
选项说明:
-p:递归创建,从左边的路径开始一级一级创建目录,直到路径结束。

案例:在已知目录 ( /usr/local )下创建多级目录( nginx/conf )

mkdir /usr/local/nginx/conf
mkdir : cannot create directory ' /usr/local/nginx/conf': No such file ordirectory
mkdir:不能创建目录conf,为什么呢?因为/usr/local目录下并没有nginx

解决方案:如果想同时创建多级目录,必须使用 -p选项,其会从左向右一级一级创建目录。

mkdir -p /usr/local/nginx/conf
Linux文件管理(上)_php_02
Linux文件管理(上)_php_03
Linux文件管理(上)_linux_04
1.3 使用 mkdir同时创建多个目录

基本语法:

mkdir 目录名称1 目录名称2 目录名称3

案例:在当前目录下创建a、b、c三个目录。

mkdir a
mkdir b
mkdir c
或
mkdir a b c

Linux文件管理(上)_php_05

创建好的文件夹如何查看呢?进入 Linux目录结构找到一个名为 root的文件夹双击,输入密码验证后进入即可查看,如下。

Linux文件管理(上)_基本语法_06
Linux文件管理(上)_文件名_07
Linux文件管理(上)_linux_08

扩展:Linux快捷键(方向键上下)
在终端中,按方向键=>向上,其会返回上一次输入的命令。按方向键=>向下,其会返回下一次输入的命令。

1.4 总结
一个目录一个目录创建:
mkdir 目录名称
多级目录一起创建:
mkdir -p 目录名称1 /目录名称2 /...
同时创建多个目录:
mkdir 目录名称1 目录名称2 目录名称3 ...

2、目录删除(必须是空目录)

2.1 rmdir 移除空目录

基本语法:

rmdir 目录名称

rmdir = remove directory,移除目录

案例:把桌面Desktop目录下的 Test 文件夹删除(空目录)

rmdir Test
Linux文件管理(上)_基本语法_09
2.2 rmdir -p 递归删除空目录

基本语法:

rmdir -p 目录名称1/目录名称2/目录名称3/...

功能︰从右向左一级一级删除空目录
案例︰递归删除 itcast文件夹中的 yunwei文件夹中的 shenzhen3

rmdir -p itcast/yunwei/shenzhen3
2.3 使用 rmdir 同时删除多个空目录

基本语法:

rmdir 目录名称1 目录名称2 目录名称3 ...

案例:删除家目录中的a、b,c三个空目录

rmdir a b c
Linux文件管理(上)_linux_10
2.4 总结
删除某个空目录
rmdir 目录名称
同时删除多级目录(从右向左一级一级删除)
rmdir -p 目录名称1/目录名称2/目录名称3/...
同时删除多个空目录
rmdir 目录名称1 目录名称2 目录名称3

3、文件创建

3.1 touch创建文件
touch 文件名称

功能:在Linux系统中的当前目录下创建一个文件
案例:在当前目录下创建一个 readme.txt文件

touch readme.txt
Linux文件管理(上)_文件名_11
3.2 使用touch命令同时创建多个文件

基本语法:

touch 文件名称1 文件名称2 文件名称3 ...

案例︰创建一个 shop商城文件夹,然后在内部创建 index.php/admin.php/config.php三个文件

mkdir shop
touch shop/index.php
touch shop/admin.php
touch shop/config.php
或
touch shop/index.php shop/admin.php shop/config.php
Linux文件管理(上)_文件名_12

提出问题:观察以下命令看看有何区别?(注意区分,注意空格)

第一种写法:touch shop/index.pip shop/admin.php shop/config.php
代表在 shop目录下首先创建一个index.php,再创建一个 admin.php,最后 config.php
第二种写法:touch shop/index.php admin.php config.php
代表在 shop目录下首先创建 index.php,然后在当前目录下创建 admin.php,最后在当前目录下创建 config.php

3.3 根据序号同时创建多个文件

基本语法∶

touch 文件名称{开始序号..结束序号}
含义:
根据提供的开始序号~结束序号,一个一个创建文件

案例∶创建 file1、file2、file3、file4、file5共5个文件

touch file1
touch file2
touch file3
touch file4
touch file5
或
touch file{1..5}
3.4 总结
touch 文件名称
touch 文件名称1 文件名称2 文件名称3 ...
touch 文件名称{开始序号..结束序号}

4、文件删除

4.1 语法及案例

基本语法:

rm [选项] 文件或文件夹的名称
选项说明:
-r :针对文件夹,代表递归删除,先把目录下的所有文件删除,然后在删除文件夹
-f :强制删除,不提示,初学者一定要慎重!!!
-rf :强制递归删除,不提示,慎重使用!!!

案例1:删除 readme.txt文件

rm readme.txt
rm: remove regular empty file ‘readme.txt’? 这里可以回复y or n
y代表确认删除
n代表取消删除

案例2:强制删除 file5,不提示 (慎重)

rm -f file5
Linux文件管理(上)_linux_13

案例3:删除非空的文件夹( -rf 强制递归删除,不提示)

rm -rf shop

提示信息:descend into directory ‘shop’? 含义:是否进入shop目录?

提示信息:remvoe directory 'shop"? 含义:是否删除shop文件夹?

Linux文件管理(上)_基本语法_14

注:Ctrl +C 在 Linux下的使用方式
在Linux操作系统中,Ctrl + C不是复制,而是中断某个操作

4.2 总结
rm 文件名称
rm 文件名称1 文件名称2 文件名称3 ...
rm -f 文件名称 
=>强制删除,不提示
rm -rf 文件夹名称 
=>递归删除文件夹
4.3 扩展:rm -rf /* (危险操作!!)
rm -rf/*		=>	代表删除根目录下的所有文件(如果没有备份,恢复的几率不高)
rm: 删除
-r: 递归删除(无论文件夹是否为空)
-f: 强制删除不提示
/:  代表根分区
*:  所有

这是一个可怕的命令,小伙伴们要谨慎操作…

VPS 服务商 Kuriko 因 rm -rf /*,宿主机上所有数据丢失了。除此之外,还有微盟删库事件,想必大家都知道,不知道的可以自己去百度了解一下。

Linux文件管理(上)_基本语法_15
5.1 cp复制操作

基本语法:

cp [选项] 源文件或文件夹 目标路径
选项说明:
-r:递归复制,主要针对文件夹

cp = copy 复制

案例:把 readme.txt文件从当前目录复制一份放到 /tmp文件夹中

cp readme.txt /tmp/
Linux文件管理(上)_运维_16
5.2 cp复制并重命名文件

基本语法∶

cp [选项] 源文件或文件夹 目标路径/新文件或文件夹的名称

案例:把 readme.txt文件从当前目录复制一份放到 /tmp文件夹中并重命名为 readme.txt.bak

cp readme.txt /tmp/readme.txt.bak

Linux文件管理(上)_php_17

5.3 cp复制文件夹到指定路径

基本语法:

cp -r 源文件夹名称 目标路径/

案例:把shop目录连同其内部的文件统一复制到 /tmp目录下

mkdir shop
touch shop/index.php shop/admin.php shop/config.php
cp -r shop /tmp/
Linux文件管理(上)_php_18

注意区分!!
ls -d 文件夹名称:代表查看当前文件夹本身的信息
ls 文件夹名称:代表查看文件夹内部的文件信息

5.4 总结
复制文件
cp 源文件名称 指定路径
复制文件并重命名
cp 源文件名称 指定路径/新文件名称
复制文件夹
cp -r 源文件夹 指定路径

基本语法∶

mv 源文件或文件夹 目标路径/

mv = move,剪切、移动的含义

案例1︰把 readme.txt文件剪切到 tmp目录下

rm -rf /tmp/readfme.txt
mv readme.txt /tmp/

案例2︰把 shop文件夹移动到 /usr/local/nginx目录下

mkdir /usr/local/nginx
mv shop /usr/local/nginx/
Linux文件管理(上)_运维_19

7、重命名

什么是重命名?简单来说,就是给一个文件或文件夹更改名称。
基本语法∶

mv 源文件或文件夹名称 新文件或文件夹的名称

案例1:把 readme.txt文件更名为 README.md文件

mv readme.txt README.md

案例2:把 shop文件目录更名为 wechat目录

mkdir shop
mv shop wechat
Linux文件管理(上)_linux_20

总结

剪切文件
mv 源文件名称 目标路径/
剪切文件夹
mv 源文件夹名称 目标路径/
重命名
mv 源文件或文件夹名称 新文件或文件夹名称

8、打包压缩与解压缩

8.1 几个概念

1)打包:默认情况下,Linux的压缩概念是一次只能压缩一个文件。针对多文件或文件夹无法进行直接压缩。所以需要提前对多个文件或文件夹进行打包,这样才可以进行压缩操作。

1.txt 5MB
2.txt 10MB
3.txt 15MB
1.txt + 2.txt + 3.txt = 打包 =123.tar = 30MB

注:打包只是把多个文件或文件夹打包放在一个文件中,但是并没有进行压缩,所以其大小还是原来所有文件的总和

2)压缩:也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件所占用的磁盘空间比集合中所有文件大小的总和要小

1.txt 5MB
2.txt 10MB
3.txt 15MB
1.txt + 2.txt + 3.txt = 压缩 =123.tar.gz = 20MB(体积变小了)

8.2 Linux打包操作

基本语法︰

tar [选项] 打包后的名称.tar 多个文件或文件夹
选项说明:(重点掌握cvf就可以了)
-c :打包
-f :filename,打包后的文件名称
-v :显示打包的进度
-u :update缩写,更新原打包文件中的文件(了解)
-t :查看打包的文件内容(了解)

案例1︰把 a.xt、b.txt、c.txt文件打包到 abc.tar文件中(对文件打包)

tar -cvf abc.tar a.txt b.txt c.txt

案例2︰把 wechat文件夹进行打包 wechat.tar(对文件夹打包)

tar -cvf wechat.tar wechat
Linux文件管理(上)_linux_21
8.3 tar -tf 及 tar -uf

基本语法:

tar -tf 打包后的文件名称
tar -uf 现有包文件名 要追加的文件

u=update,更新,如果还想往.tar包中更新或追加内容都可以通过 -u 选项

案例1:查看 abc.tar包中的文件信息

tar -tf abc.tar

案例2:向 abc.tar包中添加一个 d.txt文件

touch d.txt
tar -uf abc.tar d.txt 
查看是否添加成功
tar -tf abc.tar
Linux文件管理(上)_linux_22

扩展:如何把tar包中的文件释放出来

打包
tar -cf abc.tar a.txt b.txt c.txt
打包 => 释放(-c变成-x)
释放
tar -xf abc.tar
8.4 打包并压缩(学习重点)

Linux下,常用的压缩工具有很多,比如 gzip、zip、bzip2、xz 等 tar 在打包的时候,是支持压缩的,gzip 、bzip2 、xz 压缩工具都可以在 tar 打包文件中使用。
基本语法:

tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
-cf :对文件或文件夹进行打包
-z :使用gzip压缩工具把打包后的文件压缩为.gz
-j :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J :使用xz压缩工具把打包后的文件压缩为.xz
-v :显示压缩进度

压缩速度:gzip >bzip2 > xz
压缩率:gzip < bzip2< xz
100M   90M    80M   70M

案例1︰把 a.txt、 b.txt、 c.txt文件打包并压缩为abc.tar.gz(打包压缩文件)

tar -zcf abc.tar.gz a.txt b.txt c.txt

案例2︰把 wechat文件夹压缩为 wechat.tar.gz格式的压缩包(打包压缩文件夹)

tar -zcf wechat.tar.gz wechat
Linux文件管理(上)_php_23

注:bz2,gzip,xz三种工具的压缩比不同,实际工作中最常用的是 gzip,换句话说,即最常见到的压缩打包文件是 .tar.gz

8.5 对压缩包进行解压

解压过程非常简单,把压缩参数中的c换成x就可以实现解压缩

*.tar.gz格式的压缩包
tar -zxf 名称.tar.gz
*.tar.bz2格式的压缩包
tar -jxf 名称.tar.bz2
*.tar.xz格式的压缩包
tar -Jxf 名称.tar.xz

案例1:把 abc.tar.gz格式的压指包进行解压缩操作

tar -zxvf abc.tar.gz

案例2:把 wechat.tar.gz格式的压缩包进行解压缩操作

tar -zxf wechat.tar.gz
Linux文件管理(上)_linux_24
8.6 zip压缩与解压缩(了解)

1)zip压缩
基本语法:

zip [选项] 压缩后的文件名称.zip 文件或文件夹
选项说明:
-r :递归压缩,主要针对的是文件夹

Linux下已经有gzip、 bzip2以及 xz压缩命令了,为什么还需要使用 zip压缩呢?答:zip格式在Window以及Linux中都是可以正常使用的。

案例1︰把 a.txt、 b.txt、c.txt压缩为 abc.zip

zip abc.zip a.txt b.txt c.txt

案例2:把 wechat文件夹压缩为 wechat.zip

zip -r wechat.zip wechat
Linux文件管理(上)_php_25

2)unzip解压缩
基本语法︰

unzip 压缩包名称
=> 解压到当前目录
unzip 压缩包名称 -d 指定路径
=> 解压到指定路径下

案例1:对 abc.zip文件进行解压缩

unzip abc.zip

案例2:把 wechat.zip解压到 /usr/local/nginx目录下

unzip wechat.zip -d /usr/local/nginx/
Linux文件管理(上)_linux_26

pass:遇到不会的操作,可以使用man命令( manual缩写,手册)查看,如 man tar命令


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK