Bash 介绍和入门
课程来源
基于杨春敏与黄毅的 ABS 译文制作,一本深入学习 shell 脚本艺术的书籍。原版链接:点这里
Bash(GNU Bourne-Again Shell)是一个为 GNU 计划编写的 Unix shell,它是许多 Linux 平台默认使用的 shell。
shell 是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又叫做“胶水语言”
事实上,所有的 UNIX 命令和工具再加上公共程序,对于 shell 脚本来说,都是可调用的。Shell脚本对于管理系统任务和其它的重复工作的例程来说,表现的非常好,根本不需要那些华而不实的成熟紧凑的编译型程序语言。
1.Hello World
Bash之Hello World
$ vim hello.sh
使用 vim 编辑 hello.sh,输入如下代码并保存:
Bash-参数和变量
变量定义
1.概念
变量的名字就是变量保存值的地方。引用变量的值就叫做变量替换。
如果 variable 是一个变量的名字,那么 $variable 就是引用这个变量的值,即这变量所包含的数据。
variable 事实上只是 variable事实上只是{variable} 的简写形式。在某些上下文中 variable 可能会引起错误,这时候你就需要用 variable可能会引起错误,这时候你就需要用{variable} 了。
2.定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: myname=“shiyanlou”
注意
变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。
除了直接赋值,还可以用语句给变量赋值,如:for file in ls /etc
Bash 实例
清空日志
1 | #!/bin/bash |
cat /dev/null > wtmp可以换为: > wtmp
遇到权限不够的提示,为什么,如何解决?
权限不够加 sudo 啊,可是你会发现sudo cat /dev/null > /var/log/wtmp 一样会提示权限不够,为什么呢?因为 sudo 只能让 cat 命令以 sudo 的权限执行,而对于>这个符号并没有 sudo 的权限,我们可以使用
sudo sh -c "cat /dev/null > /var/log/wtmp " 让整个命令都具有 sudo 的权限执行
为什么 cleanlogs.sh 可以将 log 文件清除?
因为/dev/null ,里面是空的,重定向到 /var/log/wtmp 文件后,就清空了 wtmp 文件的内容。