云计算百科
云计算领域专业知识百科平台

Linux 入门基础命令(2) |小白零基础快速上手

文章目录

  • 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 目录。 请添加图片描述

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Linux 入门基础命令(2) |小白零基础快速上手
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!