linux基础命令第三天
命令行管理文件
书接上回,我们先从mv命令开始讲
mv
#我们先创建一个目录,名字随意这里我取xdc
[ljy@centos7 ~ 17:00:52]$ mkdir xdc
#移动单个文件到xdc目录当中 ,我们先创建几个空文件
[ljy@centos7 ~ 09:39:55]$ mv wj1 ./xdc
#将wj1这个文件移动到xdc 目录当中,这个.代表的是当前工作目录下的文件
#查看xdc目录单中是否有wj1,当前目录下wj1这个文件是已经不存在的了,通过mv命令移动到/xdc目录下了
[ljy@centos7 ~ 09:46:19]$ ls xdc/
wj1
[ljy@centos7 ~ 09:46:30]$ ls
lab1 qq wj2 wx xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#这时就有小伙伴问了,那mv可以同时移动多个文件吗。mv可以同时移动多个文件,但是这里的目标必须得是目录。
[ljy@centos7 ~ 09:50:15]$ mv wj2 wj3 wx ./xdc
[ljy@centos7 ~ 09:50:35]$ ls xdc
wj1 wj2 wj3 wx
#mv也可以移动目录,和移动文件相同
#先在当前工作目录下创建几个目录,用mkdir命令
[ljy@centos7 ~ 09:52:34]$ mkdir lab2 lab3
[ljy@centos7 ~ 09:52:50]$ ls
lab1 lab2 lab3 xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#移动单个目录
[ljy@centos7 ~ 09:52:51]$ mv lab1 ./xdc
[ljy@centos7 ~ 09:53:26]$ ls xdc
lab1 wj1 wj2 wj3 wx
[ljy@centos7 ~ 09:53:29]$ ls
lab2 lab3 xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#移动多个目录
[ljy@centos7 ~ 09:53:31]$ mv lab2 lab3 ./xdc
[ljy@centos7 ~ 09:53:44]$ ls
xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
[ljy@centos7 ~ 09:53:45]$ ls xdc
lab1 lab2 lab3 wj1 wj2 wj3 wx
rmdir命令
有创建肯定就有删除,不然的话系统早就充满一堆文件了,rmdir命令就是删除的一种,但是rmdir不能直接删除非空目录就是里面有文件的目录。
#删除空目录
[ljy@centos7 ~ 09:58:50]$ mkdir 111 #先创建一个空目录
#删除刚刚创建的111空目录
[ljy@centos7 ~ 09:59:01]$ rmdir 111
[ljy@centos7 ~ 09:59:09]$ ls
xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#当前xdc目录下是存放了文件和其他目录的所有使用rmdir时系统提示
[ljy@centos7 ~ 09:59:11]$ rmdir xdc
rmdir: 删除 "xdc" 失败: 目录非空
rm命令
rm命令的功能就相对完善很多,rm可以删除文件,可以删除目录包括非空目录
[ljy@centos7 ~ 09:59:34]$ ls
xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
[ljy@centos7 ~ 10:03:43]$ touch 1 2 3
[ljy@centos7 ~ 10:03:50]$ ls
1 2 3 xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#删除单个文件
[ljy@centos7 ~ 10:04:27]$ rm 1
[ljy@centos7 ~ 10:04:34]$ ls
2 3 xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#删除多个文件
[ljy@centos7 ~ 10:04:35]$ rm 2 3
[ljy@centos7 ~ 10:04:39]$ ls
xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#rm可以强制删除具有写保护的文件,我们进入xdc中cp一个有写保护的文件,再通过rm去删除。
[ljy@centos7 ~ 10:04:49]$ cd xdc
[ljy@centos7 xdc 10:06:54]$ ls
lab1 lab2 lab3 wj1 wj2 wj3 wx
#cp cacerts这个文件
[ljy@centos7 xdc 10:06:55]$ cp /etc/pki/ca-trust/extracted/java/cacerts .
[ljy@centos7 xdc 10:07:10]$ ls
cacerts lab1 lab2 lab3 wj1 wj2 wj3 wx
#通过rm删除系统会有提示询问确认删除这个文件吗
[ljy@centos7 xdc 10:07:11]$ rm cacerts
rm:是否删除有写保护的普通文件 "cacerts"?yes
[ljy@centos7 xdc 10:07:19]$ ls
lab1 lab2 lab3 wj1 wj2 wj3 wx
#xdc中cacerts没有了
[ljy@centos7 xdc 10:07:21]$ ls cacerts
ls: 无法访问cacerts: 没有那个文件或目录
#使用-f选项直接删除,系统不会提示。
[ljy@centos7 xdc 10:07:40]$ cp /etc/pki/ca-trust/extracted/java/cacerts .
[ljy@centos7 xdc 10:11:03]$ rm -f cacerts
[ljy@centos7 xdc 10:11:08]$ ls
lab1 lab2 lab3 wj1 wj2 wj3 wx
#-r递归删除目录,-r不只是单纯把目录里文件一个个删,是层层深入处理所有子目录
[ljy@centos7 xdc 10:16:26]$ rm -r lab1
[ljy@centos7 xdc 10:16:42]$ ls
lab2 lab3 wj1 wj2 wj3 wx
#递归强制删除-fr选项,遇到只读取的文件也强制删除,不会报错
[ljy@centos7 xdc 10:20:35]$ ls
lab2 lab3 wj1 wj2 wj3 wx
[ljy@centos7 xdc 10:20:37]$ rm -fr lab2
[ljy@centos7 xdc 10:20:49]$ ls
lab3 wj1 wj2 wj3 wx
软链接
soft link,也称为symbolic link(符号链接)。软连接有点类似于我们windows中的快捷方式,只不过windows中软链接图形化了,如果源文件失效了,那么软链接也就没有用了。
#创建软链接
[ljy@centos7 ~ 10:27:47]$ ln -s /var/tmp/ mytmp
#/var/tmp 的软链接mytmp
#查看
[ljy@centos7 ~ 10:28:11]$ ls -l mytmp
lrwxrwxrwx. 1 ljy ljy 9 7月 19 10:28 mytmp –> /var/tmp/
#查看mytmp 和查看/var/tmp两者的内容是一样的
[ljy@centos7 ~ 10:29:10]$ ls mytmp/
abrt
systemd-private-691a5c58964146589ab07c27072d7bb6-bolt.service-1MOmS5
systemd-private-691a5c58964146589ab07c27072d7bb6-chronyd.service-4VAwNy
systemd-private-691a5c58964146589ab07c27072d7bb6-colord.service-r48AfC
systemd-private-691a5c58964146589ab07c27072d7bb6-cups.service-at5kqY
systemd-private-691a5c58964146589ab07c27072d7bb6-rtkit-daemon.service-A5o66Q
systemd-private-e1559428306847da867629c7fd928a40-bolt.service-BjlYXI
systemd-private-e1559428306847da867629c7fd928a40-chronyd.service-80ym8T
systemd-private-e1559428306847da867629c7fd928a40-colord.service-PrGK27
systemd-private-e1559428306847da867629c7fd928a40-cups.service-2DKmT1
systemd-private-e1559428306847da867629c7fd928a40-rtkit-daemon.service-MnyNZx
systemd-private-e45241b443314a299906342278ae3ac4-bolt.service-1ujlOC
systemd-private-e45241b443314a299906342278ae3ac4-chronyd.service-hrrDSQ
systemd-private-e45241b443314a299906342278ae3ac4-colord.service-Z2K7zL
systemd-private-e45241b443314a299906342278ae3ac4-cups.service-NONnvT
systemd-private-e45241b443314a299906342278ae3ac4-fwupd.service-QfEfSR
systemd-private-e45241b443314a299906342278ae3ac4-rtkit-daemon.service-VaAmCt
[ljy@centos7 ~ 10:30:01]$ ls /var/tmp/
abrt
systemd-private-691a5c58964146589ab07c27072d7bb6-bolt.service-1MOmS5
systemd-private-691a5c58964146589ab07c27072d7bb6-chronyd.service-4VAwNy
systemd-private-691a5c58964146589ab07c27072d7bb6-colord.service-r48AfC
systemd-private-691a5c58964146589ab07c27072d7bb6-cups.service-at5kqY
systemd-private-691a5c58964146589ab07c27072d7bb6-rtkit-daemon.service-A5o66Q
systemd-private-e1559428306847da867629c7fd928a40-bolt.service-BjlYXI
systemd-private-e1559428306847da867629c7fd928a40-chronyd.service-80ym8T
systemd-private-e1559428306847da867629c7fd928a40-colord.service-PrGK27
systemd-private-e1559428306847da867629c7fd928a40-cups.service-2DKmT1
systemd-private-e1559428306847da867629c7fd928a40-rtkit-daemon.service-MnyNZx
systemd-private-e45241b443314a299906342278ae3ac4-bolt.service-1ujlOC
systemd-private-e45241b443314a299906342278ae3ac4-chronyd.service-hrrDSQ
systemd-private-e45241b443314a299906342278ae3ac4-colord.service-Z2K7zL
systemd-private-e45241b443314a299906342278ae3ac4-cups.service-NONnvT
systemd-private-e45241b443314a299906342278ae3ac4-fwupd.service-QfEfSR
systemd-private-e45241b443314a299906342278ae3ac4-rtkit-daemon.service-VaAmCt
硬链接
硬链接就是一个普通文件。相当于可以通过多个文件名访问到一个数据块。任何一个文件发生变化,其他文件也跟着变。
[ljy@centos7 ~ 10:30:17]$ cp /etc/hosts ./hosts-1
[ljy@centos7 ~ 10:34:02]$ ls
hosts-1 mytmp xdc 公共 模板 视频 图片 文档 下载 音乐 桌面
#创建硬链接
[ljy@centos7 ~ 10:34:03]$ ln hosts-1 hosts-12
[ljy@centos7 ~ 10:34:13]$ ls
hosts-1 mytmp 公共 视频 文档 音乐
hosts-12 xdc 模板 图片 下载 桌面
[ljy@centos7 ~ 10:34:14]$ ls -l hosts-1 hosts-12
-rw-r–r–. 2 ljy ljy 158 7月 19 10:34 hosts-1
-rw-r–r–. 2 ljy ljy 158 7月 19 10:34 hosts-12
#两个数据的inode是相同的
[ljy@centos7 ~ 10:34:22]$ ls -i1 hosts-1 hosts-12
1300 hosts-1
1300 hosts-12
#更新hosts1的时间,hosts12也跟着改变
[ljy@centos7 ~ 10:34:39]$ touch hosts-1
[ljy@centos7 ~ 10:35:25]$ ls -l hosts-1 hosts-12
-rw-r–r–. 2 ljy ljy 158 7月 19 10:35 hosts-1
-rw-r–r–. 2 ljy ljy 158 7月 19 10:35 hosts-12
#查看hosts-1和hosts-12的内容是一模一样的
[ljy@centos7 ~ 10:35:31]$ cat hosts-1
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[ljy@centos7 ~ 10:35:47]$ cat hosts-12
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#更新hosts-1的内容,hosts-12也跟着关新
[ljy@centos7 ~ 10:35:52]$ echo hello >> hosts-1
[ljy@centos7 ~ 10:36:07]$ ls hosts-12
hosts-12
[ljy@centos7 ~ 10:36:11]$ cat hosts-12
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
hello
[ljy@centos7 ~ 10:36:18]$ cat hosts-1
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
hello
#硬链接就是同一个数据块,拥有多个文件名,可以通过多个文件名访问到。
shell扩展匹配文件
| * | 由零个或更多字符组成的任何字符串。单独*不匹配隐藏文件。 |
| ? | 任何一个字符。 |
| [abc…] | 位于两个方括号之间中的任何一个字符。 |
| [**^abc…]或[!**abc…] | 不在括起的类中的任何一个字符。 |
| ~ | 当前用户的主目录。 |
| ~username | username用户的主目录。 |
| [[:alpha:]] | 任何字母字符,相当于[a-Z]。 |
| [[:lower:]] | 任何小写字符。 |
| [[:upper:]] | 任何大写字符。 |
| [[:alnum:]] | 任何字母字符或数字,相当于[a-Z0-9]。 |
| [[:punct:]] | 除空格和字母数字以外的任何可打印字符。 |
| [[:digit:]]或[0-9] | 从 0 到 9 的任何单个数字。 |
| [[:space:]] | 任何一个空白字符。这可能包括制表符、 换行符、回车符、 换页符或空格。 |
| {…} | 匹配列表。 |
* 示例
匹配由零个或更多字符组成的任何字符串。单独*不匹配隐藏文件。
#匹配/etc目录下所有ho开头的文件
[ljy@centos7 ~ 10:36:44]$ ls /etc/ho*
/etc/host.conf /etc/hostname /etc/hosts /etc/hosts.allow /etc/hosts.deny
# 将/etc目录下所有ho开头的文件复制到/tmp
[ljy@centos7 ~ 10:45:40]$ cp /etc/ho* /tmp
[ljy@centos7 ~ 10:46:10]$ ls /tmp/ho*
/tmp/host.conf /tmp/hostname /tmp/hosts /tmp/hosts.allow /tmp/hosts.deny
# 删除/tmp目录下所有ho开头的文件
[ljy@centos7 ~ 10:46:32]$ rm /tmp/ho*
[ljy@centos7 ~ 10:48:34]$ ls /tmp/ho*
ls: 无法访问/tmp/ho*: 没有那个文件或目录
# *不匹配隐藏文件
? 示例
匹配任何一个字符。
#准备一些文件
[ljy@centos7 ~ 10:53:16]$ touch filr-{1..3}
[ljy@centos7 ~ 10:55:04]$ ls
filr-1 filr-3 hosts-12 xdc 模板 图片 下载 桌面
filr-2 hosts-1 mytmp 公共 视频 文档 音乐
[ljy@centos7 ~ 10:55:06]$ touch filr-{a..c}
[ljy@centos7 ~ 10:55:38]$ ls
filr-1 filr-3 filr-b hosts-1 mytmp 公共 视频 文档 音乐
filr-2 filr-a filr-c hosts-12 xdc 模板 图片 下载 桌面
# 查看文件名称是 file- 后跟1个字母的文件
[ljy@centos7 ~ 10:55:50]$ ls filr-?
filr-1 filr-2 filr-3 filr-a filr-b filr-c
#查看-后面是两个字符的文件呢,打两个?
[ljy@centos7 ~ 10:56:46]$ touch filr-ab filr-12
[ljy@centos7 ~ 10:57:35]$ ls filr-?
filr-1 filr-2 filr-3 filr-a filr-b filr-c
[ljy@centos7 ~ 10:57:38]$ ls filr-??
filr-12 filr-ab
[] 示例
匹配位于两个方括号之间中的任何一个字符。
[ljy@centos7 ~ 11:00:58]$ ls filr-[abc]
filr-a filr-b filr-c
[ljy@centos7 ~ 11:01:47]$ ls filr-[12]
filr-1 filr-2
[ljy@centos7 ~ 11:01:54]$ ls filr-[^12]
filr-3 filr-a filr-b filr-c
{} 示例
[ljy@centos7 ~ 11:02:09]$ ls filr-[abcf]
filr-a filr-b filr-c
#[]相当于匹配当中的信息,有匹配的就反馈出来
[ljy@centos7 ~ 11:04:01]$ ls filr-{a,b,c,f}
ls: 无法访问filr-f: 没有那个文件或目录
filr-a filr-b filr-c
#相当于下面的命令
[ljy@centos7 ~ 11:05:39]$ ls filr-a filr-b filr-c filr-f
ls: 无法访问filr-f: 没有那个文件或目录
filr-a filr-b filr-c
这些就是比较基础的命令,下一章我们讲编辑器。



