bash学习终章
学习bash有很长时间了,很多时间花费在学习基础语法上,没有真正的上手实践编写一些使用的bash脚本,接下来我把剩余的比较常见的bash语法学习完,找一些github上的的大牛写过的bash脚本去先
分析,然后自己边理解边实践吧,我的目标就是能够基本熟练的使用bash脚本。
bash的list结构
这里所说到的list结构不是Java语言中的list结构,而是在做条件的时候的一种链式机构,可以使用 &&
或者 ||
来处理多个命令的方法。
其中分为两种简单的结构
- 和结构 (and list)
这种结构会同时比较多个命令,如果前一个命令返回true,则下一个命令一次去执行。但是如果前一个命令返回false,那么后面都不去执行(命令链终止)。
1 | # command-1 && command-2 && command-3 && ... command-n |
- 与结构 (or list)
这个结构和 and list正好相反,如果前一个命令返回false,则下一个命令依次去执行。如果前一个命令时ture,那么终止命令链。
1 | # command-1 || command-2 || command-3 || ... command-n |
bash中的数组
数组也是非常常见的一种数据结构,那么在bash中如何初始化和使用数组呢
1 | # 第一种方式为数组赋值 |
可以看到可以方便的使用小括号进行数组的初始化,以后会接触到更多关于bash数组的实例,比如写一个使用bash的冒泡排序。
Linux中的 /dev
和 /proc
/dev
是设备文件的目录,可以看出来dev时device设备的缩写。如果想查看某些特定设备的文件,可以直接去对应的/dev/*
的目录下面去找对应的目录就行了。
作为参考
/dev/hd[a-t]:IDE设备
/dev/sd[a-z]:SCSI设备
/dev/fd[0-7]:标准软驱
/dev/md[0-31]:软raid设备
/dev/loop[0-7]:本地回环设备
/dev/ram[0-15]:内存
/dev/null:无限数据接收设备 ,相当于回收站
/dev/zero:无限零资源
/dev/tty[0-63]:虚拟终端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制台
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/proc
可以看作是一个文件系统,但是是伪文件系统,因为他之存储一些当前内核状态的一系列特殊文件。以下就不详细举例了,可以看看这个文件夹下的内容。使用 cat命令或者less之类的查看。
bash中的null和0
bash中的null和zero是通过设备资源文件 /dev/null
, /dev/zero
来实现的
- null 使用
dev/null
这个设备文件是一个”黑洞”,可以看作是一个只能够写文件。写进去的东西都会被清空,当然也可以使用从/dev/null
写入到文件来实现清空文件内容的目的。
1 | cat newfile1 > /dev/null #会什么也不输出 |
- zero 为指定目的的文件来清零(指定大小的文件)