1.4 Bash的命令行展开和Bash环境的配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.4 Bash的命令行展开和Bash环境的配置相关的知识,希望对你有一定的参考价值。
使用read命令来接受输入
使用read来把输入值分配给一个或多个shell变量
-p 指定要显示的提示
-s 静默输入,一般用于密码
-n N 指定输入的字符长度N
-d ‘字符’ 输入结束符
-t N TIMEOUT为N秒
read 从标准输入中读取值,给每个单词分配一个变量
所有剩余单词都被分配给最后一个变量
read -p “Enter a filename: “ FILE
bash如何展开命令行
1、将命令行传入bash。
2、解析引用分割为单个单词:
shell中有3种引用方式:转义、强引用和弱引用。
????反斜线转义:使得元字符变为普通的字面字符。但这只能对反斜线后一个字符进行转义。
????单引号强引用:单引号内的所有字符全部变为字面符号符号。
????双引号弱引用:使双引号内所有字符变为字面符号,但""、"$"、"`"除外,如果使用"!"引用历史命令时,则感叹号也除外
[[email protected] ~]# PWD=pwd
[[email protected] ~]# echo $PWD
/root
[[email protected] ~]# echo ‘$PWD‘
$PWD
[[email protected] ~]# echo "$PWD"
/root
[[email protected] ~]# echo "$PWD"
$PWD
在解析引用后,shell会把命令分割单词,分隔符包括:空格、tab、分号、管道符号、&、&&、||、重定向符号、圆括号等。
? ? 3、检查命令行结构,是否有语法错误。
? ? 4、将命令行中的别名展开。在脚本中无法使用别名
? ? 5、展开声明,将各种声明中的语句展开并分割为单词。
shell对声明的展开有规定的顺序:
? ? 1)大括号展开:操作大括号中的语句,传递给命令并将结果替换
? ? 2)波浪号展开:替换为用户的家目录
? ? 3)变量扩展:即操作和替换变量值
? ? 4))命令替换:此过程将执行命令替换中的命令,并将结果替换到单词的对应位置处
? ? 5)进程替换:将进程的执行结果替换到对应位置。类似于命令替换
? ? 6)算术扩展:计算算术值,并将计算结果替换到对应位置处
????7)文件名扩展:搜索匹配通配符条件的文件。
????6、去除用于引用的引号。
? ? 7、执行命令,并返回退出状态值。
Bash环境的配置
$-变量
h:hashall,打开这个选项后,Shell 会将命令所在的路径hash下来,避免每次
都要查询。通过set +h将h选项关闭
i:interactive-comments,包含这个选项说明当前的 shell 是一个交互式的
shell。所谓的交互式shell,在脚本中,i选项是关闭的。
m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继
续,后台或者前台执行等。
B:braceexpand,大括号扩展
H:history,H选项打开,可以展开历史列表中的命令,可以通过!感叹号来完
成,例如“!!”返回上最近的一个历史命令,“!n”返回第 n 个历史命令
bash的配置文件
profile类:为交互式登录的shell提供配置
全局:/etc/profile, /etc/profile.d/*.sh
????个人:~/.bash_profile
功能:(1) 用于定义环境变量(2) 运行命令或脚本
bashrc类:为非交互式和交互式登录的shell提供配置
????```
全局:/etc/bashrc
个人:~/.bashrc
功能:(1) 定义命令别名和函数(2) 定义本地变量
配置文件在修改后,需要将其读入内存才能生效,否则只能等待下一次重启后生效
? ?读入内存:. 或者 source 配置文件。
Bash的两种登陆方式
交互式登录:
????(1)直接通过终端输入账号密码登录
????(2)使用“su - UserName” 切换的用户
? ? 执行顺序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登录:
????(1)su UserName
????(2)图形界面下打开的终端
????(3)执行脚本
????(4)任何其它的bash实例
????执行顺序: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
以上是关于1.4 Bash的命令行展开和Bash环境的配置的主要内容,如果未能解决你的问题,请参考以下文章
bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
Linux命令之bash的基础特性(命令历史命令补全路径补全命令行展开。)