易学笔记-Linux命令-第5章:操作文件和目录

  • 操作文件和目录
  1. 通配符
    1. *:匹配任意多个字符(包括零个或者多个)

      [root@zabbix ~]# ll -l *  列出所有文件或者目录,包括目录中的子目录或者子文件

      -rw-r--r--. 1 root root         0 Aug 21 01:10 123.txt

      -rw-r--r--. 1 root root      1287 May  2 10:16 wys.log

      wys:

      total 28

      -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

      drwxr-xr-x. 2 root root  43 Jun  4 10:29 etcd

      -rw-r--r--. 1 root root  44 May 21 16:48 my_config.txt

      drwxr-xr-x. 2 root root  85 Jun  8 11:20 soft

      drwxr-xr-x. 2 root root  36 May 18 11:58 test

      -rw-r--r--. 1 root root  34 May 21 17:19 ubuntu_config.txt

    2. ?:匹配任意一个字符(注意:仅仅是一个,而且不包含0个)

      [root@zabbix ~]# ls  wys目录  wys.log文件

      123.txt  mylog  mysql.tar.gz  wys  wys.log

      [root@zabbix ~]# ll -l wy?  ?代表只匹配一个,也就只有wys目录

      total 28

      -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

      drwxr-xr-x. 2 root root  43 Jun  4 10:29 etcd

      -rw-r--r--. 1 root root  44 May 21 16:48 my_config.txt

    3. [characters]:匹配任意一个属于字符集中的字符

      [root@zabbix ~]# ls m或者w开头的文件有四个:mylog  mysql.tar.gz  wys(目录)  wys.log

      123.txt  mylog  mysql.tar.gz  wys  wys.log

      [root@zabbix ~]# ll -l [wm]* [wm]表示以w或者m开头的任何文件或者目录

      -rw-r--r--. 1 root root      7166 Jun  7 18:33 mylog

      -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

      -rw-r--r--. 1 root root      1287 May  2 10:16 wys.log

      wys:

      total 28

      -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

      -rw-r--r--. 1 root root 427 May 18 11:58 docker-compose-stack.yml

      -rw-r--r--. 1 root root 100 May 16 09:24 docker-compose.yml

      -rw-r--r--. 1 root root 231 May 15 09:50 docker-compose.yml_bak

    4. [!characters]:匹配任意一个不属于字符集中的字符

      [root@zabbix ~]# ls m或者w开头的文件有四个:mylog  mysql.tar.gz  wys(目录)  wys.log

      123.txt  mylog  mysql.tar.gz  wys  wys.log

      [root@zabbix ~]# ll -l [!wm]* [wm]表示不以w或者m开头的任何文件或者目录,那就是指剩下123.txt

      -rw-r--r--. 1 root root 0 Aug 21 01:10 123.txt

    5. [[:class:]]:匹配任意一个属于指定字符类中的字符,这些字符类可以试下面一个:
      1. [:alnum:]:匹配任意一个字母或数字

        [root@zabbix ~]# ls 以数字或者字母(a-z或者A-Z)开头的文件或者目录除了_char.txt外都是

        123.txt  _char.txt  mylog  mysql.tar.gz  wys  wys.log

        [root@zabbix ~]# ll -l [[:alnum:]]* 以数字或者字母开头的文件或者目录

        -rw-r--r--. 1 root root         0 Aug 21 01:10 123.txt

        -rw-r--r--. 1 root root      7166 Jun  7 18:33 mylog

        -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

        -rw-r--r--. 1 root root      1287 May  2 10:16 wys.log

        wys:

        total 28

        -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

        -rw-r--r--. 1 root root 427 May 18 11:58 docker-compose-stack.yml

        -rw-r--r--. 1 root root 100 May 16 09:24 docker-compose.yml

        -rw-r--r--. 1 root root 231 May 15 09:50 docker-compose.yml_bak

        drwxr-xr-x. 2 root root  43 Jun  4 10:29 etcd

      2. [:alpha:]:匹配任意一个字母

        [root@zabbix ~]# ls 以数字或者字母(a-z或者A-Z)开头的文件或者目录除了_char.txt外都是

        123.txt  _char.txt  mylog  mysql.tar.gz  wys  wys.log

        [root@zabbix ~]# ll -l [[:alpha:]]* 以字母开头的文件或者目录,123.txt是以数字开头的,所以不会显示,_char.txt是以符号开头的也不会显示

        -rw-r--r--. 1 root root      7166 Jun  7 18:33 mylog

        -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

        -rw-r--r--. 1 root root      1287 May  2 10:16 wys.log

        wys:

        total 28

        -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

        -rw-r--r--. 1 root root 427 May 18 11:58 docker-compose-stack.yml

        -rw-r--r--. 1 root root 100 May 16 09:24 docker-compose.yml

        -rw-r--r--. 1 root root 231 May 15 09:50 docker-compose.yml_bak

        drwxr-xr-x. 2 root root  43 Jun  4 10:29 etcd

        -rw-r--r--. 1 root root  44 May 21 16:48 my_config.txt

        drwxr-xr-x. 2 root root  22 Jun  6 16:18 mypyton

        drwxr-xr-x. 3 root root  23 Jun  8 11:23 myspringboot

        drwxr-xr-x. 2 root root   6 Aug 15 16:12 nexus

        -rw-r--r--. 1 root root  30 May 21 17:19 nginx_config.txt

      3. [:digit:]:匹配任意一个数字

        [root@zabbix ~]# ls 以数字或者字母(a-z或者A-Z)开头的文件或者目录除了_char.txt外都是

        123.txt  _char.txt  mylog  mysql.tar.gz  wys  wys.log

        [root@zabbix ~]# ll -l [[:digit:]]*  显示以数字开头的文件或者目录

        -rw-r--r--. 1 root root 0 Aug 21 01:10 123.txt

      4. [:lower:]:匹配任意一个小写字母

        [root@zabbix ~]# ls 以数字或者字母(a-z或者A-Z)开头的文件或者目录除了_char.txt外都是

        123.txt  _char.txt  mylog  mysql.tar.gz  wys  wys.log

        [root@zabbix ~]# ll -l [[:lower:]]* 显示以小写字母开头的文件或者目录

        -rw-r--r--. 1 root root      7166 Jun  7 18:33 mylog

        -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

        -rw-r--r--. 1 root root      1287 May  2 10:16 wys.log

        wys:

        total 28

        -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

        -rw-r--r--. 1 root root 427 May 18 11:58 docker-compose-stack.yml

        -rw-r--r--. 1 root root 100 May 16 09:24 docker-compose.yml

        -rw-r--r--. 1 root root 231 May 15 09:50 docker-compose.yml_bak

      5. [:upper]:匹配任意一个大写字母

        [root@zabbix ~]# ls 以数字或者字母(a-z或者A-Z)开头的文件或者目录除了_char.txt外都是

        123.txt  _char.txt  mylog  mysql.tar.gz  wys  wys.log

        [root@zabbix ~]# ll -l [[:upper:]]* 以大小字母开头的文件,因为该目录下都是小写开头的,所以显示找不到文件或者目录

        ls: cannot access [[:upper:]]*: No such file or directory

  2. 字符范围
    1. 数字范围:[0-9]:表示从0到9
    2. 小写字母范围:[a-z]:表示a到z
    3. 大小字母范围:[A-Z]:表示A到Z
  3. mkdir — 创建目录
    1. 语法:mkdir directory...
    2. 举例:
      1. 创建一个目录:mkdir dir1
      2. 连续创建多个目录:mkdir dir1 dir2 dir3
      3. -p参数:目录存在不提示忽略过 mkdir -p dir1 dir2
  4. cp — 复制文件和目录
    1. 语法
      1. 复制单个文件或者目录到文件或者目录: cp -option item1 item2,注意:如果item1为目录,则item2也必须为目录
      2. 复制多个文件或者目录到目录: cp -option item...  directory
    2. 选项
      1. -a:复制文件或者目录以及他们的属性,默认复制当前用户所具有的属性
      2. -r:递归复制文件目录,类似 -a,注意:复制目录时必须带-a或者-r,如果不带只能复制文件
        1. 仅仅复制文件

          [root@zabbix ~]# cp wys/* wys_bak  要求目录 wys_bak 存在

          cp: omitting directory ‘wys/etcd’

          cp: omitting directory ‘wys/mypyton’

          cp: omitting directory ‘wys/myspringboot’

          cp: omitting directory ‘wys/nexus’

          cp: omitting directory ‘wys/soft’

          cp: omitting directory ‘wys/test’

        2. 复制文件和目录

          [root@zabbix ~]# cp –r wys/* wys_bak  目录 wys_bak 不存在则创建

      3. -i:如果文件存在则提示,默认是不提示直接覆盖的

        [root@zabbix ~]# cp -i wys.log  wys/

        cp: overwrite ‘wys/wys.log’?

      4. -u:只拷贝目标目录不存在的文件或者覆盖目标文件较旧的版本
  5. mv — 移动/重命名文件和目录
    1. 语法
      1. 单个文件或者目录到文件或者目录: mv-option item1 item2,注意:如果item1为目录,则item2也必须为目录
      2. 复制多个文件或者目录到目录: mv-option item...  directory
    2. 选项:
      1. -i:如果文件存在则提示,默认是不提示直接覆盖的
      2. -u:只拷贝目标目录不存在的文件或者覆盖目标文件较旧的版本
    3. 举例
      1. 移动单个文件覆盖并提示

        [root@zabbix ~]# mv -i wys.log  wys/

        cp: overwrite ‘wys/wys.log’?

      2. 移动多个文件到目录

        [root@zabbix ~]# mv 123.txt  _char.txt  wys/  wys必须已经存在

      3. 移动目录

        [root@zabbix ~]# mv wys/ wys_bak/   wys_bak可以不存在

  6. rm — 删除文件和目录
    1. 语法:删除一个或者多个文件或者目录:rm -option item....
    2. 选项:
      1. -i:删除文件前要求用户确定
      2. -r:递归删除目录(子目录)
      3. -f:强制删除,如果文件不存在也忽略
    3. 举例:
      1. 删除提示:

        [root@zabbix wys_bak]# rm -i wys.log

        rm: remove regular empty file ‘wys.log’?

      2. 多个文件或者目录提示递归删除:

        [root@zabbix wys_bak]# rm -r wys_log_2  test/

        rm: remove regular empty file ‘wys_log_2’?

      3. 多个文件或者目录强制递归删除:

        [root@zabbix wys_bak]# rm -rf wys_log_2  test/

        [root@zabbix wys_bak]#

  7. ln — 创建硬链接和符号链接
    1. 创建硬链接
      1. 语法:ln file link
        1. file:可以是带路径的文件名,只能是文件,不能是目录
        2. link:链接名,通过连接名可以操作关联文件
      2. 举例:

        [root@zabbix ~]# ln wys_bak/123.txt ln_123  wys_bak/123.txt 为带路径的文件 ln_123链接名

        [root@zabbix ~]# ll 

        total 409916

        -rw-r--r--. 2 root root        14 Aug 21 03:25 ln_123 链接ln_123看起来和一般的文件没有任何区别

      3. 通过链接修改内容反射到原文件

        [root@zabbix ~]# cat > ln_123   通过链接修改文件内容

        112

        11222

        [root@zabbix ~]# cat wys_bak/123.txt 原文件内容就是链接修改后的内容

        112

        11222

        [root@zabbix ~]#

      4. 查看某个文件硬链接的数量

        [root@zabbix ~]# ll

        total 409916

        -rw-r--r--. 2 root root        10 Aug 21 03:42 ln_123 2表示当前硬链接的数量为2:一个是ln_123,一个是123.txt

        [root@zabbix ~]# ln wys_bak/123.txt  ln_123_bak 新增一个链接ln_123_bak

        [root@zabbix ~]# ll

        total 409920

        -rw-r--r--. 3 root root        10 Aug 21 03:42 ln_123

        -rw-r--r--. 3 root root        10 Aug 21 03:42 ln_123_bak 表示当前硬链接的数量为3:一个是ln_123,一个是123.txt,一个是ln_123_bak

      5. 确认是不是硬链接

        [root@zabbix ~]# ll –li  通过i 选项显示文件索引号,文件索引号相同的表示是同一个文件,2个链接和1个文件的索引号相同,说明他们是同一个文件

        total 409920

        17599828 -rw-r--r--. 3 root root        10 Aug 21 03:42 ln_123

        17599828 -rw-r--r--. 3 root root        10 Aug 21 03:42 ln_123_bak

        52126122 drwxr-xr-x. 2 root root        21 Aug 21 03:52 me

        18083880 -rw-r--r--. 1 root root      7166 Jun  7 18:33 mylog

        18256455 -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

        17910226 lrwxrwxrwx. 1 root root        15 Aug 21 03:36 s_ln_123 -> wys_bak/123.txt

        17910227 lrwxrwxrwx. 1 root root         8 Aug 21 03:37 s_ln_dir -> wys_bak/

             171 drwxr-xr-x. 7 root root      4096 Aug 21 03:40 wys_bak

        [root@zabbix ~]# cd wys_bak/

        [root@zabbix wys_bak]# ll -li

        total 32

        17599828 -rw-r--r--. 3 root root  10 Aug 21 03:42 123.txt

        17910224 -rw-r--r--. 1 root root   0 Aug 21 01:21 _char.txt

      6. 删除链接

        [root@zabbix ~]# rm ln_123_bak 删除链接

        rm: remove regular file ‘ln_123_bak’? y

        [root@zabbix ~]# ll -li

        total 409916

        17599828 -rw-r--r--. 2 root root        10 Aug 21 03:42 ln_123 链接数量变为2

      7. 删除文件本身,硬链接还能正常使用

        [root@zabbix wys_bak]# rm 123.txt  删除文件本身

        rm: remove regular file ‘123.txt’? y

        [root@zabbix ~]# cat ln_123   硬链接还能使用,因为硬链接拷贝了文件本身

        112

        11222

    2. 软件软链接
      1. 语法:ln -s itemlink
        1. file:可以是带路径的文件名或者目录
        2. link:带路径的链接名,一般放在usr/bin目录下,这样就可以任何目录执行软链接了
        3. 通过连接名可以操作关联文件
      2. 举例:
        1. 创建一个指向文件的链接

          [root@zabbix ~]# ln -s wys_bak/123.txt  s_ln_123

          [root@zabbix ~]# ll

          -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

          lrwxrwxrwx. 1 root root        15 Aug 21 03:36 s_ln_123 -> wys_bak/123.txt,文件类型第一个字母l 表示的是链接

        2. 创建一个指向目录的链接

          [root@zabbix ~]# ln -s wys_bak/  s_ln_dir

          [root@zabbix ~]# ll

          total 409916

          -rw-r--r--. 2 root root        14 Aug 21 03:25 ln_123

          lrwxrwxrwx. 1 root root         8 Aug 21 03:37 s_ln_dir -> wys_bak/,文件类型第一个字母l 表示的是链接,wys_bak后面的/表示的是目录

        3. 提供过链接操作原目录

          [root@zabbix ~]# cd s_ln_dir/  通过链接进入目录

          [root@zabbix s_ln_dir]# ll     进去的是链接目录,在链接中可以像操作原目录那样操作

          total 32

          -rw-r--r--. 2 root root  10 Aug 21 03:42 123.txt

          -rw-r--r--. 1 root root   0 Aug 21 01:21 _char.txt

          -rw-r--r--. 1 root root 681 May 24 15:53 docker-compose-stack-config.yml

          -rw-r--r--. 1 root root 427 May 18 11:58 docker-compose-stack.yml

          -rw-r--r--. 1 root root 100 May 16 09:24 docker-compose.yml

          -rw-r--r--. 1 root root 231 May 15 09:50 docker-compose.yml_bak

        4. 删除文件本身,软件链接不能用了

          [root@zabbix wys_bak]# rm 123.txt  删除文件本身

          rm: remove regular file ‘123.txt’? y

          [root@zabbix ~]# ll

          total 409916

          -rw-r--r--. 1 root root        10 Aug 21 03:42 ln_123

          drwxr-xr-x. 2 root root        21 Aug 21 03:52 me

          -rw-r--r--. 1 root root      7166 Jun  7 18:33 mylog

          -rw-r--r--. 1 root root 419737600 May 14 11:32 mysql.tar.gz

          lrwxrwxrwx. 1 root root        15 Aug 21 03:36 s_ln_123 -> wys_bak/123.txt

          lrwxrwxrwx. 1 root root         8 Aug 21 03:37 s_ln_dir -> wys_bak/

          drwxr-xr-x. 7 root root      4096 Aug 21 04:50 wys_bak

          [root@zabbix ~]# cat s_ln_123 再次查看软链接,就不能使用了

          cat: s_ln_123: No such file or directory

猜你喜欢

转载自blog.csdn.net/u011830122/article/details/83904844
今日推荐