shell编程之基本bash命令

Posted 射手座IT俱乐部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之基本bash命令相关的知识,希望对你有一定的参考价值。


今天谈一下显示文件(夹)信息的相关知识和命令:

  • 列出文件(夹)信息

  • 显示文件(夹)详细信息

  • 使用通配符过滤需要的文件(夹)



使用CLI登录以后,最先我们进行的操作除了转换到我们需要的目录以外,就是查看当前目录下的内容,那就从这里说起吧。我们这里使用列表ls命令查看。

列出文件信息

ls 最基本的功能是显示当前目录下的文件和目录:

# ls
bin    dev   initrd.img      lib64       mnt   root  snap  tmp  vmlinuz
boot   etc   initrd.img.old  lost+found  opt   run   srv   usr  vmlinuz.old
cdrom  home  lib             media       proc  sbin  sys   var

ls 命令输出的列表是按字母排序的。

# ls -F
bin/    etc/             lib/         mnt/   run/   sys/    usr/
boot/   home/            lib64/       opt/   sbin/  test    var/
cdrom/  initrd.img@      lost+found/  proc/  snap/  test2*  vmlinuz@
dev/    initrd.img.old@  media/       root/  srv/   tmp/    vmlinuz.old@

使用F 参数轻松区分文件和目录。后面带斜线(/)的是文件夹,普通文件没变化,例如test,可执行文件带星号,例如test2,带@符号的是链接文件等等。
当然,细心一点,我们可以发现,有些隐藏文件并没被显示。那就加a参数吧。

# ls -a
.     cdrom  initrd.img      lost+found  proc  snap  test2  vmlinuz
..    dev    initrd.img.old  media       root  srv   tmp    vmlinuz.old
bin   etc    lib             mnt         run   sys   usr
boot  home   lib64           opt         sbin  test  var

另外一个比较常用的一个参数就是R,叫作递归选项,它列出了当前目录下包含的子目录中的文件(夹)。

# ls -FR
.:
123.txt           公共的/  视频/  文档/  音乐/
examples.desktop  模板/    图片/  下载/  桌面/
./公共的:
./模板:
./视频:
./图片:
./文档:
./下载:
./音乐:
./桌面:
softwares/
./桌面/softwares:
tigervncserver_1.8.0-1ubuntu1_amd64.deb*


显示文件详细信息

如果要显示文件(夹)其他的信息,比如文件还是文件夹、用户权限、所属用户、所属用户组、文件大小、创建时间等等。那就需要另外一个参数l了。
示例:

# ls -l
总用量 97
drwxr-xr-x   2 root root  4096 8月   3 21:21 bin
drwxr-xr-x   4 root root  1024 8月  20 18:08 boot
drwxr-xr-x   2 root root  4096 8月   3 20:40 cdrom
drwxr-xr-x  19 root root  4000 8月  28 18:03 dev
drwxr-xr-x 136 root root 12288 8月   9 14:13 etc
drwxr-xr-x   4 root root  4096 8月   3 20:40 home
lrwxrwxrwx   1 root root    33 8月   9 14:08 initrd.img -> boot/initrd.img-4.10.0-30-generic
drwxr-xr-x  22 root root  4096 8月   3 20:42 lib
drwxr-xr-x   2 root root  4096 8月   3 21:20 lib64
drwx------   2 root root 16384 8月   3 20:36 lost+found
drwxr-xr-x   4 root root  4096 8月   3 21:41 media
drwxr-xr-x   2 root root  4096 2月  16  2017 mnt
drwx------   4 root root  4096 8月  20 19:58 root
(省略一些)

一个完整的应用命令诞生了:

root@HiseaUB:/home# ls -alF
总用量 32
drwxr-xr-x  5 root  root   4096 8月  29 16:19 ./
drwxr-xr-x 24 root  root   4096 8月  29 15:48 ../
drwxr-xr-x 20 hisea hisea  4096 8月  20 19:39 hisea/
drwx------  2 root  root  16384 8月   3 20:36 lost+found/
-rw-r--r--  1 root  root      0 8月  29 16:19 test
drwxr-xr-x  2 root  root   4096 8月  29 16:19 test2/


CLI使用通配符过滤需要的文件(夹)

ls 命令是支持在命令行中定义过滤器。它会用过滤器来筛选出我们需要的信息。
我们可以在要用的命令行参数之后添加这个过滤器,进行简单文本匹配的字符串得到我们需要的信息:

# ls -l test
-rw-r--r-- 1 root root 0 8月  29 16:19 test
(当我们指定特定文件的名称作为过滤器时,ls 只会显示该文件的信息。)

有时我们可能不知道要找的那个文件的确切名称。我们可以使用下面的标准通配符:

  • 问号(?)代表一个字符;

  • 星号(*)代表零个或多个字符。

示例:

# ls -l test?
-rw-r--r-- 1 root root    0 8月  29 16:38 test3
-rw-r--r-- 1 root root    0 8月  29 16:39 test4
test2:
总用量 0

再看星号:

# ls -l test*
-rw-r--r-- 1 root root    0 8月  29 16:19 test
-rw-r--r-- 1 root root    0 8月  29 16:38 test3
-rw-r--r-- 1 root root    0 8月  29 16:39 test4
test2:
总用量 0

看出区别了吧。当然,我们可以扩展一下,使用一些通配符进行匹配。

  • 使用中括号([])

# ls -l test[2-4]
-rw-r--r-- 1 root root    0 8月  29 16:38 test3
-rw-r--r-- 1 root root    0 8月  29 16:39 test4
test2:
总用量 0
# ls -l test[35]
-rw-r--r-- 1 root root 0 8月  29 16:38 test3
-rw-r--r-- 1 root root 0 8月  29 16:55 test5

单个字母、数字、范围都可以。

  • 使用感叹号(!)将不需要的内容排除在外。

# ls -l test[!2]
-rw-r--r-- 1 root root 0 8月  29 16:38 test3
-rw-r--r-- 1 root root 0 8月  29 16:39 test4
-rw-r--r-- 1 root root 0 8月  29 16:55 test5


转载请注明出处。
了解更多,请关注我们的微信公众号:
射手座IT俱乐部


以上是关于shell编程之基本bash命令的主要内容,如果未能解决你的问题,请参考以下文章

shell编程之基本bash命令

shell编程之基本bash命令

Linux之shell编程的基本使用

Bash脚本之ifcaseread和位置参数

Shell编程Shell中Bash基本功能

Shell编程Shell中Bash基本功能