bash学习记录(十六) bash学习终章

bash学习终章

学习bash有很长时间了,很多时间花费在学习基础语法上,没有真正的上手实践编写一些使用的bash脚本,接下来我把剩余的比较常见的bash语法学习完,找一些github上的的大牛写过的bash脚本去先
分析,然后自己边理解边实践吧,我的目标就是能够基本熟练的使用bash脚本。

bash的list结构

这里所说到的list结构不是Java语言中的list结构,而是在做条件的时候的一种链式机构,可以使用 && 或者 || 来处理多个命令的方法。

其中分为两种简单的结构

  • 和结构 (and list)

这种结构会同时比较多个命令,如果前一个命令返回true,则下一个命令一次去执行。但是如果前一个命令返回false,那么后面都不去执行(命令链终止)。

1
2
# command-1 && command-2 && command-3 && ... command-n
if [ ! -z "$1" ] && echo "Argument #1 = $1" && [ ! -z "$2" ] &&
  • 与结构 (or list)

这个结构和 and list正好相反,如果前一个命令返回false,则下一个命令依次去执行。如果前一个命令时ture,那么终止命令链。

1
2
# command-1 || command-2 || command-3 || ... command-n
[ ! -f "$file" ] || (rm -f $file; echo "File \"$file\" deleted.")

bash中的数组

数组也是非常常见的一种数据结构,那么在bash中如何初始化和使用数组呢

1
2
3
4
5
6
7
8
# 第一种方式为数组赋值
area[11]=23
area[13]=37
area[51]=UFOs
# 第二种方式
area2=( zero one two three four )
# 第三种方式
area3=([17]=seventeen [24]=twenty-four)

可以看到可以方便的使用小括号进行数组的初始化,以后会接触到更多关于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
2
cat newfile1 > /dev/null #会什么也不输出
cat /dev/null > /var/log/wtmp # 清空该文件内容
  • zero 为指定目的的文件来清零(指定大小的文件)

以上就是我在bash学习中的所有内容,当然会在以后写一些实际的bash脚本。这个bash学习系列就写到这。

-------------本文结束感谢您的阅读-------------

本文标题:bash学习记录(十六) bash学习终章

文章作者:NanYin

发布时间:2018年07月07日 - 17:07

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2018/07/08/2018-07-06-bash_15_%E7%BB%88%E7%AB%A0/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。