ls相关(.*和*)

  1. ls .*
    • 显示当前文件夹内的以.开头的文件,包括隐藏文件和隐藏文件夹
    • 显示当前文件夹.内的所有的非隐藏文件和文件夹(任意名称)
    • 显示当前文件夹.内的以.开头的文件夹(隐藏文件夹)和它内部第一层文件和文件夹;但不显示此文件夹内的文件夹内的文件,不显示此文件夹下的以.开头的文件(即隐藏文件)
    • 查看当前文件夹父目录..内的非隐藏文件;同上不显示父目录内的文件夹内的文件,不显示父目录内的以.开头的文件(也就是隐藏文件)
  2. ls .* -a: 显示当前文件夹内所有文件,包括隐藏文件;以及其父目录内的第一层所有文件包括隐藏,以及以.开头的子目录内第一次呢该文件,包括隐藏。
  3. ls .* -R:显示当前文件夹内所有文件包括隐藏文件,其父目录内的所有文件和其子目录下的所有层文件(不包括隐藏文件和隐藏文件夹,而且当前目录的不隐藏文件会再次显示一遍)
  4. ls .* -a -R:比上面多了隐藏.
  5. ls *. :显示当前文件夹内以.结尾的所有文件和文件夹,但不显示隐藏文件
  6. ls *.*:显示当前文件夹内的中间包含.的所有文件和文件夹,但是注意,不包含隐藏文件,因为*不能显示隐藏文件
  7. ls * :显示当前文件夹内的所有非隐藏文件和文件夹,和当前文件夹内第一层所有非隐藏文件和文件夹
  8. ls * -a:显示当前文件夹内的所有非隐藏文件和文件夹,并显示这些文件夹内的第一层所有文件包括隐藏文件
  9. ls * -a -R:显示当前文件夹内的所有非隐藏文件和文件夹,并显示这些文件夹内的所有层所有文件包括隐藏文件
  10. ls * -R:显示当前文件夹内的所有非隐藏文件和文件夹,包括其所有子目录下的所有层的非隐藏文件.

注意,如果只使用ls命令,后面不加特定目标,则相当于ls ./ 会把当前文件夹内所有文件和目录显示一遍 ,但如果用ls 加通配符,如果不加上-d则碰到文件目录的时候会进去显示里面的文件。

ls -d *:显示当前文件夹内所有非隐藏文件和文件夹

ls -d .[^.]*:显示当前文件夹内所有隐藏文件和目录

ls -d .[^.]*/:只显示当前文件夹内的隐藏目录,不显示文件

rm相关

  1. rm -rf .*
  2. 或者 rm -rf ./.
    上面那两个相当于一个命令(参考ls .
    ),这个是有问题的命令,虽然也能删除当下文件夹内的隐藏文件和隐藏文件夹(和里面的所有内容),并且保留非隐藏文件和文件夹, 但是这个命令会尝试删除. 和.. 只不过跳过了。
17:28[root@centos7 /data/cptest/zhang]# rm -rf ./.*
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘./.’
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘./..’
17:31[root@centos7 /data/cptest/zhang]# ls -a
...
  1. rm -rf .[^.]* 删除当前文件夹内的所有隐藏文件和隐藏文件夹(包括隐藏文件夹内的其中所有内容),但是不删除非隐藏文件和文件夹。和上面的命令同一个结果,但是不报错。
  2. rm -rf ./*
    删除当前目录下的所有非隐藏文件和非隐藏文件夹(包括非隐藏文件夹内其中所有内容,即使里面有隐藏文件也删除)
  3. rm -rf ./.
    错误的命令,不能这样执行
    6 .可以先创建一个文件夹的软链接,然后用 rm -rf 软链接/ 的方式 删除源文件夹内的所有内容,但是保留原文件夹。注意软链接后面必须加上/,不然就把这个软链接本身给删掉了,参考一下下面的ls 软链接相关内容。
  4. 还可以rm -rf rmtest/{*,.[^.]*} ,一条命令删除文件夹内所有文件但保留文件夹

软链接目录相关(和ll相关部分,与rm相关部分查看rm指令中解释)

  • ls 软链接:
    ll 软链接 或者 ll 软链接 -d(加不加-d都一样):显示这个软链接本身的信息
    ll 软链接/ :显示这个软连接连接到的目录内的文件信息
    ll 软链接/ -d :这个相当于 ll 软链接目录 -d ,显示目标目录文件夹本身的信息
    附加: ll 目录 都是显示目录下的内容, 加不加/ 结果都一样。 只有加了-d 显示的结果才是本身文件夹的信息。 只不过加了-d 以后,结果也会显示加不加/,有细微差别:
    22:04[root@centos7 /data]# ll cptest/ -d
    drwxr-xr-x. 3 root root 19 Mar 12 21:54 cptest/
    22:04[root@centos7 /data]# ll cptest -d
    drwxr-xr-x. 3 root root 19 Mar 12 21:54 cptest
21:55[root@centos7 /data]# ll lintst
lrwxrwxrwx. 1 root root 6 Mar 11 20:03 lintst -> cptest
21:55[root@centos7 /data]# ll lintst/
total 4
drwx------. 15 zhang zhang 4096 Mar  9 23:39 zhang
21:55[root@centos7 /data]# ll lintst/ -d
drwxr-xr-x. 3 root root 19 Mar 12 21:54 lintst/
21:56[root@centos7 /data]# ll cptest
total 4
drwx------. 15 zhang zhang 4096 Mar  9 23:39 zhang
21:56[root@centos7 /data]# ll cptest -d
drwxr-xr-x. 3 root root 19 Mar 12 21:54 cptest

cp相关

  1. cp -a /root/. /data/ :将/root目录内的所有文件包括隐藏文件拷贝到/data里面
  2. cp -a /root/`ls -A /root `/data/
    实现了和1中相同的功能
  3. cp -a /root/ /data :在data下创建新root目录并拷贝进去,前提是data下并没有root这个名字的目录
  4. cp -a /root/ /data/rootbak:在data下创建新rootbak目录并考进去
  5. cp -a /root/.[^.]* /data/
    把root下的所有隐藏文件,隐藏文件夹(包括里面的所有隐藏文件和非隐藏文件),考到data下
  6. cp -a /root/* /data :root下的非隐藏文件和非隐藏文件夹(包括里面的所有非隐藏文件和隐藏文件)考到data下
  • cp -a /root/.* :加-a的话也有-R ,这个就参考ls 那部分即可,基本上没有这个用法

无聊测试

自己测试一下以下各行代码,看看正确和错误结果怎么显示和定向
1.t是当前文件夹下的普通文件

ls /eraf /home 1>1.t  2>1.t
ls /eraf /home 1>>1.t  2>1.t
ls /eraf /home 2>>1.t  1>1.t
ls /eraf /home 2>1.t  1>1.t
ls /eraf /home 2>1.t  2>&1  1>1.t
ls /eraf /home 2>>1.t  2>&1  1>1.t
ls /eraf /home 2>&1  2>1.t  1>1.t
ls /eraf /home 2>&1  2>>1.t  1>1.t

总结常用的

  • 显示隐藏文件和隐藏文件夹 .[^.]
  • 显示非隐藏文件和非隐藏文件夹 *

  • -r或者-R 在各命令中:
    1. 如果ls的时候不加上-a,默认只显示对应的隐藏或者非隐藏文件(看通配符的选项)
    2. 如果在cp 或者rm 中
      即便配合上面的选项,但是会包含次级目录(文件夹)内的所有文件,不论是隐藏还是非隐藏文件。但是注意,配合上面的选项在一级目录(文件夹)内,如果是文件的话仍然只显示对应的隐藏或者非隐藏文件
    3. mv命令移动文件夹并不需要-R选项

一些其它杂项

  • pstree命令下可以看到如果多次su转换,则多开很多bash
  • 因此su su在切换之后要退出,用exit或者logout
  • 硬链接其实是普通文件:在7种文件类型中一个硬链接坐前面的文件类型中显示的并不是l(链接类型),而是-普通文件类型