文章目录
- Linux 命令
-
- touch 命令
- tree 命令
- cp 命令
-
- 复制文件
- 复制目录
- mv 命令
- rm 命令
- shell 扩展匹配文件
-
- *
- ?
- [ ]
- 集合
- ~
- { }
Linux 命令
touch 命令
创建文件
修改文件/目录的时间戳(访问时间 atime、修改时间 mtime、更改时间 ctime)
touch [选项] 文件名/路径
# 一次性创建多个文件
touch a.txt b.log c.sh
# 批量创建 1~10 文件
touch file{1..10}.txt

当文件存在时,touch不会修改内容,只刷新时间:

tree 命令
需要先配置仓库,安装tree工具
# 配置仓库
[root@centos7 ~]# curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@centos7 ~]# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 安装tree工具
[root@centos7 ~]# yum install -y tree

cp 命令
复制文件
# 复制单个文件到目标位置
[ljw@centos7 ~ 18:23:24]$ mkdir lab
[ljw@centos7 ~ 18:23:27]$ cd lab
[ljw@centos7 lab 18:23:32]$ ls
[ljw@centos7 lab 18:23:36]$ cp /etc/hosts .
[ljw@centos7 lab 18:23:46]$ ls
hosts
# 复制并重命名
[ljw@centos7 lab 18:24:53]$ cp /etc/hosts ./hosts-1
[ljw@centos7 lab 18:26:31]$ ls
hosts hosts-1
#当前目录下有同名称文件,不会提示直接覆盖,通过-i 选项提示是否覆盖
[ljw@centos7 lab 18:26:38]$ cp /etc/hosts ./hosts-1
[ljw@centos7 lab 18:28:05]$ cp -i /etc/hosts ./hosts-1
cp:是否覆盖"./hosts-1"? yes
#复制多个文件,目标只能是目录
[ljw@centos7 lab 18:28:22]$ cp /etc/passwd /etc/hosts.allow ./hosts-all
cp: 目标"./hosts-all" 不是目录
[ljw@centos7 lab 18:29:29]$ cp /etc/passwd /etc/hosts.allow .
[ljw@centos7 lab 18:29:50]$ ls
hosts hosts-1 hosts.allow passwd
复制目录
# 使用 -r 选项复制目录
[ljw@centos7 lab 18:30:00]$ cp /etc/yum .
cp: 略过目录"/etc/yum"
[ljw@centos7 lab 18:31:03]$ cp -r /etc/yum .
[ljw@centos7 lab 18:31:11]$ ls
hosts hosts-1 hosts.allow passwd yum
# 复制并使用新的名称
[ljw@centos7 lab 18:31:37]$ cp -r /etc/yum ./yum-1
[ljw@centos7 lab 18:32:16]$ ls
hosts hosts-1 hosts.allow passwd yum yum-1
# 当前目录下有同名称目录,则将源目录放到相同目录下面,而不是覆盖当前目录
[ljw@centos7 lab 18:32:22]$ ls yum
fssnap.d pluginconf.d protected.d vars version-groups.conf
[ljw@centos7 lab 18:34:09]$ cp -r /etc/yum ./yum
[ljw@centos7 lab 18:34:31]$ ls
hosts hosts-1 hosts.allow passwd yum yum-1
[ljw@centos7 lab 18:34:40]$ ls yum
fssnap.d pluginconf.d protected.d vars version-groups.conf yum
mv 命令
# 移动单个文件
[ljw@centos7 lab 18:38:35]$ ls
hosts hosts-1 hosts.allow passwd yum yum-1
[ljw@centos7 lab 18:38:49]$ mv hosts-1 ../lab1
[ljw@centos7 lab 18:38:58]$ ls
hosts hosts.allow passwd yum yum-1
[ljw@centos7 lab 18:39:03]$ ls ../lab1
hosts-1
# 移动多个文件,目标位置只能是目录
[ljw@centos7 lab 18:39:17]$ mv passwd hosts /home/ljw/lab1
[ljw@centos7 lab 18:40:13]$ ls
hosts.allow yum yum-1
[ljw@centos7 lab 18:40:15]$ ls ../lab1
hosts hosts-1 passwd
# 重命名文件
[ljw@centos7 lab 18:40:27]$ ls
hosts.allow yum yum-1
[ljw@centos7 lab 18:41:30]$ mv hosts.allow hosts.allow-new
[ljw@centos7 lab 18:41:52]$ ls
hosts.allow-new yum yum-1
# 移动单个目录
[ljw@centos7 lab 18:48:27]$ mv etc ../lab1
[ljw@centos7 lab 18:48:40]$ ls
home hosts.allow-new yum yum-1
[ljw@centos7 lab 18:48:42]$ ls ../lab1
etc hosts hosts-1 passwd
# 移动多个目录
[ljw@centos7 lab 18:48:55]$ mv home/ yum/ yum-1 ../lab1
[ljw@centos7 lab 18:49:36]$ ls
hosts.allow-new
[ljw@centos7 lab 18:49:38]$ ls ../lab1
etc home hosts hosts-1 passwd yum yum-1
rm 命令
# 删除文件
[ljw@centos7 lab1 18:51:00]$ ls
etc home hosts hosts-1 passwd yum yum-1
[ljw@centos7 lab1 18:51:01]$ rm hosts hosts-1 passwd
[ljw@centos7 lab1 18:52:20]$ ls
etc home yum yum-1
# 强制删除具有写保护的文件
[ljw@centos7 lab1 18:52:27]$ cp /etc/pki/ca-trust/extracted/java/cacerts .
[ljw@centos7 lab1 18:53:25]$ rm cacerts
rm:是否删除有写保护的普通文件 "cacerts"?yes
[ljw@centos7 lab1 18:53:34]$ ls cacerts
ls: 无法访问cacerts: 没有那个文件或目录
# 或使用-f选项,直接删除
[ljw@centos7 lab1 18:54:40]$ cp /etc/pki/ca-trust/extracted/java/cacerts .
[ljw@centos7 lab1 18:55:14]$ rm -f cacerts
# -r选项递归删除目录
[ljw@centos7 lab1 18:56:21]$ rm -r yum
[ljw@centos7 lab1 18:56:40]$ ls
etc home yum-1
# 递归强制删除目录 -fr选项
[ljw@centos7 lab1 18:58:33]$ rm -fr etc
[ljw@centos7 lab1 18:58:49]$ ls
home yum-1
# 删除多个目录
[ljw@centos7 lab1 18:59:31]$ rm -fr home/ yum-1/
[ljw@centos7 lab1 19:00:04]$ ls
shell 扩展匹配文件
*
匹配由零个或更多字符组成的任何字符串。单独*不匹配隐藏文件。
# 匹配/etc目录下所有ho开头的文件
ljw@centos7 ~ 15:57:53]$ ls /etc/ho*
/etc/host.conf /etc/hostname /etc/hosts /etc/hosts.allow /etc/hosts.deny

# 将/etc目录下所有ho开头的文件复制到/tmp
[ljw@centos7 ~ 16:05:48]$ cp /etc/ho* /tmp
[ljw@centos7 ~ 16:05:56]$ ls /tmp/ho*
/tmp/host.conf /tmp/hostname /tmp/hosts /tmp/hosts.allow /tmp/hosts.deny

# 删除/tmp目录下所有ho开头的文件
[ljw@centos7 ~ 16:06:16]$ rm /tmp/ho*
[ljw@centos7 ~ 16:09:35]$ ls /tmp/ho*
ls: 无法访问/tmp/ho*: 没有那个文件或目录

?
匹配任何一个字符
# 查看文件名称是 file- 后跟1个字母的文件
[ljw@centos7 lab 19:27:03]$ ls file-?
file-1 file-2 file-3 file-a file-b file-c
#查看文件名称是 file- 后跟2个字母的文件
[ljw@centos7 lab 19:27:11]$ ls file-??
file-a1 file-a2
[ ]
匹配位于两个方括号之间中的任何一个字符
[ljw@centos7 lab 19:27:32]$ ls file-[abc]
file-a file-b file-c
[ljw@centos7 lab 19:30:49]$ ls file-[12]
file-1 file-2
# [^abc…]或[!abc…]不在括起的类中的任何一个字符。
[ljw@centos7 lab 19:31:00]$ ls file-[^12]
file-3 file-a file-b file-c
集合
# 匹配所有数字
[ljw@centos7 lab 19:31:56]$ ls file-[0-9]
file-1 file-2 file-9
[ljw@centos7 lab 19:32:20]$ ls file-[[:digit:]]
file-1 file-2 file-9
# 匹配所有大写字母
[ljw@centos7 lab 19:32:44]$ ls file-[[:upper:]]
file-A file-Z
# 匹配所有小写字母
[ljw@centos7 lab 19:33:21]$ ls file-[[:lower:]]
file-a file-b file-z
# 匹配所有字母
[ljw@centos7 lab 19:33:30]$ ls file-[a-Z]
file-a file-A file-b file-z file-Z
[ljw@centos7 lab 19:33:55]$ ls file-[[:alpha:]]
file-a file-A file-b file-z file-Z
# 匹配所有字母和数字
[ljw@centos7 lab 19:34:16]$ ls file-[[:alnum:]]
file-1 file-2 file-9 file-a file-A file-b file-z file-Z
~
[ljw@centos7 lab 19:34:39]$ echo ~
/home/laoma
[ljw@centos7 lab 19:35:11]$ cd ~
[ljw@centos7 lab 19:35:23 ]$ pwd
/home/laoma
[ljw@centos7 lab 19:35:46]$ echo ~root
/root
[ljw@centos7 lab 19:36:00]$ cd ~root
-bash: cd: /root: 权限不够
{ }
[ljw@centos7 lab 19:36:10]$ ls file-[abc]
file-a file-b
[ljw@centos7 lab 19:36:31]$ ls file-{a,b,c}
# 相当于下面命令
[ljw@centos7 lab 19:36:47]$ ls file-a file-b file-c
ls: 无法访问file-c: 没有那个文件或目录
file-a file-b
# {1..5}表达一个范围
[ljw@centos7 lab 19:37:17]$ ls file-{1..5}
ls: 无法访问file-3: 没有那个文件或目录
ls: 无法访问file-4: 没有那个文件或目录
ls: 无法访问file-5: 没有那个文件或目录
file-1 file-2
#示例 使用shell扩展匹配,完成以下练习。
在用户的主目录中,创建三个子目录:Music、Pictures 和 Videos。
[ljw@centos7 ~ 19:43:42]$ mkdir Music Pictures Videos
在用户的主目录中:
创建六个文件,并以 songX.mp3 形式取名。
创建六个文件,并以 snapX.jpg 形式取名。
创建六个文件,并以 filmX.avi 形式取名。
在每一组文件中,将 X 替换为数字 1 到 6 。
[ljw@centos7 ~ 19:44:21]$ touch song{1..6}.mp3 snap{1..6}.jpg film{1..6}.avi
[ljw@centos7 ~ 19:45:44]$ ls song{1..6}.mp3 snap{1..6}.jpg film{1..6}.avi
film1.avi film4.avi snap1.jpg snap4.jpg song1.mp3 song4.mp3
film2.avi film5.avi snap2.jpg snap5.jpg song2.mp3 song5.mp3
film3.avi film6.avi snap3.jpg snap6.jpg song3.mp3 song6.mp3
将 songX.mp3 所有文件移动到 Music 目录。
[ljw@centos7 ~ 19:46:24]$ mv son* Music/
[ljw@centos7 ~ 19:47:30]$ ls Music
song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3
将 snapX.jpg 所有文件移动到 Pictures 目录。
[ljw@centos7 ~ 19:47:42]$ mv s* Pictures/
[ljw@centos7 ~ 19:48:00]$ ls Pictures/
snap1.jpg snap2.jpg snap3.jpg snap4.jpg snap5.jpg snap6.jpg
将 filmX.avi 所有文件移动到 Videos 目录。
[ljw@centos7 ~ 19:48:08]$ mv film* Videos/
[ljw@centos7 ~ 19:48:26]$ ls Videos/
film1.avi film2.avi film3.avi film4.avi film5.avi film6.avi
在用户的主目录中,创建三个子目录:friends、family 和 work。
[ljw@centos7 ~ 19:48:34]$ mkdir friends family work
[ljw@centos7 ~ 19:49:00]$ ls friends family work
family:
friends:
work:
将所有序号是1和2的文件复制到 friends 目录。
[ljw@centos7 ~ 19:50:05]$ cp */*[1-2]* friends/
[ljw@centos7 ~ 19:50:49]$ ls friends
film1.avi film2.avi snap1.jpg snap2.jpg song1.mp3 song2.mp3
将所有序号是3和4的文件复制到 family 目录。
mp3也有3,song3.mp3前一个3后带有字符串,故可以加一个?或 .
[ljw@centos7 ~ 19:51:02]$ cp */*[3-4]?* family/
[ljw@centos7 ~ 19:51:36]$ ls family/
film3.avi film4.avi snap3.jpg snap4.jpg song3.mp3 song4.mp3
将所有序号是5和6的文件复制到 work 目录。
[ljw@centos7 ~ 19:51:46]$ cp */*[5-6]?* work/
[ljw@centos7 ~ 19:53:04]$ ls work/
film5.avi film6.avi snap5.jpg snap6.jpg song5.mp3 song6.mp3
复制 family 和 friends 目录到/tmp中。 
删除 family 和 friends 目录。
[ljw@centos7 ~ 19:53:56]$ rm -r family/ friends/ 或
[ljw@centos7 ~ 19:56:25]$ rm -r /tmp/{family,friends}
删除 work 目录中所有文件,然后在删除 work 目录。 
网硕互联帮助中心



评论前必须登录!
注册