认识与学习BASH
重点知识
- 由于内核在内存中是受保护的区块,因此我们必须要通过【shell】将我们输入的命令与内核沟通,好让内核可以控制硬件来正确无误地工作。
- 学习 shell 的原因主要有:命令行模式的shell在各大Linux发行版都一样;远程管理时命令行模式速度较快;;shell是管理Linux系统非常重要的一环,因为Linux中很多管理命令都是以shell编写的。
- 操作系统合法的shell均写在**/etc/shells**文件中。
- 用户默认登录取得的shell记录于**/etc/passwd**的最后一个字段。
- bash的功能主要有:历史命令、命令与文件补全功能、命令别名设置功能、任务管理、前台后台控制、程序化脚本、通配符。
- type可以用来找到执行命令为何种类型,亦可用于与which相同的功能。
- 变量就是以一组文字或符号等,来替换一些设置或是一串保留的数据。
- 变量主要有环境变量与自定义变量,或称为全局变量与局部变量。
- 使用env与export可观察环境变量,其中export可以将自定义变量转成环境变量。
- set可以观察目前bash环境下的所有变量。
- $?亦为变量,是前一个命令执行完毕后的返回值,在Linux返回值为0代表执行成功。
- locale可用于观察语系数据。
- 可用read让用户由键盘输入变量的值。
- ulimit 用以限制用户使用系统的资源情况。
- bash的配置文件主要分为 login shell 与 non-login shell, login shell 主要读取/etc/profile 与 ~/.bash_profile、non_login shell 则仅读取 ~/.bashrc。
- 在使用vim时,若不小心按了[ctrl]+s则画面会被冻结,你可以使用[ctrl]+q来解除。
- 通配符主要有:*、?、[] 等。
- 数据流重定向通过 >、2>、< 之类的符号将输出的信息转到其他文件或设备中。
- 连续命令的执行可通过 ;&& || 等符号来处理。
- 管道命令的重点是:管道命令仅会处理标准输出,对于标准错误会予以忽略、管道命令必须要能够接受来自前一个命令的数据成为标准输入继续处理才行。
- 本章介绍的管道命令主要有: cut.、grep、 sort、 wc、 uniq、 tee、 tr、 col、 join、 paste、 expand、split、 xargs 等。
说说变量
变量的显示:
变量的设置规则:
-
变量与变量内容以一个等号 【=】来连结,如下所示:
myname=VBird
-
等号两边不能直接接空格符,如下所示为错误:
myname = VBird 或 myname=VBird Tsai
-
变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:
2myname=VBird
-
变量内容若有空格符可使用双引号【"】或单引号【’】将变量内容结合起来,但
1. 双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示: var="lang is $LANG" 则 echo $var 可得 lang is zh_CN.UTF-8 2. 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示: var='lang is $LANG' 则 echo $var 可得 lang is $LANG
-
可用转义符【 \ 】将特殊符号(如 [Enter], $, , 空格符, '等)变成一般字符;
myname=VBird\ Tai
-
在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号【
命令
】或 【$(命令)】。特别注意,那个 ` 是键盘上方的数字键 1
左边那个按键,而不是单引号! 例如想要取得核心版本的配置:version=$(uname -r)再echo $version可得3.10.0-229.el7.x86-64
-
若该变量为扩增变量内容时,则可用 “$变量名称” 或 ${变量} 累加内容,如下所示:
PATH="$PATH":/home/bin
-
若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量:
export PATH
-
通常大写字符为系统默认变量,自行配置变量可以使用小写字符,方便判断;
10.取消变量的方法为使用 unset:【 unset 变量名称 】例如取消 myname 的设置:
unset myname