Linux bash 特性
一.bash
1.shell :外壳
GUI:gnone,kde,xfce 图形界面
CLI:sh,csh,ksh,bash开源协定的,tcsh,zsh 命令行
2.shell工作模式
多用户登陆后,没登陆一次打开一个shell,开始一个进程,每个进程当前主机上只有内核和当前主机
pstree 显示当前系统的shell
bash 进入子shell
exit 退出子shell
shell 可以交互打开 csh ksh 都能打开
/etc/shells:指定了当前系统可用的安全shell
进程:以进程号区别
进程是程序的副本,是程序的执行实例
二.命令行的快捷键
Ctrl+a 命令行首
Ctrl+e 跳到行尾
Ctrl+U 删除光标到行首
Ctrl+k 删除到行尾
Ctrl+<- -> 跳转一个单词
Ctrl+l 清屏幕
三.命令历史:
1.查看命令历史:history
-c:晴空命令历史
-d number 删除第num个
-d num1 num2 从num1开始删除num2个
-w 保存命令历史至历史文件
命令存储在 ~/.bash_history 中
环境变量 HISTSIZE 标志最多存储命令的多少
2.命令历史使用技巧
!n 执行命令历史的第n个命令
!-n 执行命令历史的倒数第n个命令
!! 执行上一条命令
!字符串 最近一次以指定字符串开头的文件
!$ 上一个命令的最后一个参数
ESC,. 同样的作用
Alt +.
3.命令补全
tab path 环境标量下搜索补全
路径补全
tab
在给出的打头路径下查找 两下tab显示所有的文件
4.命令别名:只在当前shell 的生命周期有效
alias 别名=‘命令’
alias 显示系统的所有别名
unalias 别名 撤销别名
\命令 执行命令本身而不是别名
5.命令替换
把命令中某个子命令替换为其执行结果的过程
1)echo “the current directory is $(pwd)"
2)命令替换: $(COMMAND), 反引号:`COMMAND`
bash支持的引号:
``: 命令替换
"": 弱引用,可以实现变量替换
'': 强引用,不完成变量替换
五.变量
变量名称:只能包含字母、数字、下划线,不能以数字开头,不能与系统已有环境变量重名
1.本地变量
2.局部变量
3.环境变量
4.位置变量:脚本的参数
./filetest.sh /etc/fstab /etc/inittab
$1 :/etc/fstab
$2 :/etc/inittab
shift :轮换 参数踢出去
n 踢出去n个
if [ -e $1 ];then
echo "OK"
else
echo "No such file"
fi
5.特殊变量
$? :上一条命令的执行状态码
$# :参数的个数
$*:参数列表
$@:参数列表
if [ $# -lt 1] ;then
echo "Usage : ./filetest3.sh /arg1 agr2 .."
exit 2
fi
六. 用户的登陆
1.用户的角度shell的类型:
登陆式shell
正常通过某终端登陆的
su - username
su -l username
非登陆式shell
su username
图形终端中打开的命令窗口
自动执行的shell脚本
2.bash 的配置文件
全局配置
/etc/profile ,/etc/profile.d/*.sh,/etc/bashrc
个人配置
~/.bash_profile,~/.bashrc
profile类文件:设定环境变量(作用范围越小越生效)。运行命令脚本或脚本
bashrc类的文件:设定本地变量
定义命令别名
3.登陆式shell如何读取配置文件
/etc/profile --〉/etc/profile.d/*.sh --> ~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登陆式shell如何读取配置文件
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
七.输入输出重定向以及管道
1.系统设定
默认输入设备:标准输入,STDIN ,0 标识符
默认输出设备:标准输出,STDOUT,1 标识符
标准错误输出:STDERR,2
标准输入:键盘
标准输出:显示器
错误输出:显示器
2.重定向:I/O重定向:改变设备的输入输出来源
> 输出重定向 :覆盖输出,原有内容会被覆盖掉
set -C 禁止对已存在文件进行覆盖重定向
强制覆盖输出用>|
set +C 允许覆盖重定向
>> 追加输出:
2> 重定向错误输出
2>>追加的方式重定向错误输出
两次重定向
ls /var > /tmp/var.out 2>/tmp/var.out
&>:重定向标准输出或错误输出到一个文件
< 输入重定向 cat</etc/fstab
tr 'ab' 'AB' </etc/fstab
<< 此处生成文档
cat <<END 或EOF 输入内容一直到EOF END 结束输入
cat >>/tmp/mysile.txt <<END 输出到文件中
3.管道:前一个命令的输出,作为后一个命令的输入
命令1 | 命令2|命令3...
echo “hello world” | tr 'a-z' 'A-Z'
tee 既能输出到屏幕上又能保存到文件
echo “hello world" | tee /tmp/hello.txt

浙公网安备 33010602011771号