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命令的主要内容,如果未能解决你的问题,请参考以下文章