shell广义上分为两类:
GUI:包括GNOME KDE XFACE等
CLI:sh csh ksh bash等(Linux发行版本中,bash是默认使用的shell程序)
shell启动:当用户登录完成后,系统会自动启动shell程序
进程:应用程序的副本;使用PID区分(在系统中,一个进程只认为自己存在)
root student用户
shell:父shell程序和子shell程序(父子shell之间设置环境互相独立)
# cat /etc/shells //查看当前系统所支持的shell程序
# yum -y install ksh csh //安装ksh,csh的shell程序
# exit //退出当前shell程序
注:shell是一个程序
bash的特性:
1.命令历史:Linux会自动记录系统过去执行的命令,并保存在内存的缓冲区中
在每个用户的家目录下,有个隐藏文件.bash_history保存命令历史
# history //查看linux的历史
-c:清空命令历史
-d:删除某一条命令历史
-w:将命令历史保存到某个文件中
变量:PATH命令路径变量
HISTSIZE:命令历史大小变量
$ echo $HISTSIZE //查看HISTSIZE变量的值,默认的命令历史是1000条
命令历史使用技巧:
!n:执行命令历史中的第n条命令(n是命令历史编号)
!-n:执行命令历史中的倒数第n条命令(n是命令历史编号)
!word:执行命令历史中最近一次以word开始的命令(word必须能够唯一的标识用户想执行的命令)
!!:执行上一条命令
!$:引用一个命令的最后一次参数
ESC键(按完松开) 再按.键:引用一个命令的最后一次参数
2.管道,IO重定向
计算机体系结构:
控制器:CPU,读取系统指令
运算器:CPU,运算
存储器:RAM(内部存储器:易失性存储器)
输入设备(Input):输入数据,如键盘,硬盘等
输出设备(Output):显示指令执行结果,如显示器,音响,硬盘等
IO重定向:把默认输入输出数据来源,重新定向到其他的文件或设备
输出重定向:
>:覆盖输出重定向
>>:追加输出重定向
2>:错误覆盖输出重定向
2>>:错误追加输出重定向
&>:混合覆盖输出重定向
&>>:混合追加输出重定向
输入重定向:
<:输入重定向
管道:连接多条命令,把前一条命令的输出结果作为后一条命令的输入条件(组合小程序,实现大功能)
例:command1 | command2 | commad3 ....
tr:实现字符转换,不修改源文件,语法:tr [OPTION]... SET1 [SET2]
tee:
3.命令别名(alias定义的别名只在当前shell生效)
# alias COMM_ALIAS=COMMAND //只执行alias命令,列出系统中所有的命令别名
注意:执行alias命令时,COMMAND最好用''(引号)引起来
# unalias COMM_ALIAS //取消命令别名
4.命令行编辑
ctrl+a:光标快速跳转到命令行的行首
ctrl+e:光标快速跳转到命令行的行尾
ctrl+u:快速删除光标位置到命令行行首的字符
ctrl+k:快速删除光标位置到命令行行尾的字符
ctrl+l:清屏(命令clear:清屏)
5.命令行展开
5.1:命令补齐:在PATH变量搜索命令并补齐(PATH变量必须正常,输入要补齐命令的字符数一定能够唯一标识这条命令;tab键补齐)
按tab键两次,列出以某个字符开始的所有的命令
# echo $PATH //查看PATH变量的值
路径和文件补齐:在系统路径中查找
命令行补齐功能不能补齐选项
5.2:命令替换(经常用到shell脚本编程中) $(command)或者 `command`(两边是反撇号)
命令替换就是把命令中的子命令替换成子命令执行结果的过程
# echo "字符串"
""(双引号):弱引用(可是实现变量的替换,把变量名替换为变量值)
``(反撇号):命令引用
''(单引号):强引用(不能完成变量替换)
6.命令行通配:globbing
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
如:[ab] [a-m] [a-z] [A-Z] [a-zA-Z] [0-9] [a-zA-Z0-9]
[^]:匹配指定范围外的任意单个字符
如:[^a-z] [^0-9]
[:space:]:表示空格
[:punct:]:表示所有标点符号
[:lower:]:表示所有小写字母
[:upper:]:表示所有大写字母
[:alpha:]:表示所有字母(包括大小写)
[:digit:]:表示所有数字
[:alnum:]:表示所有数字和大小写字母
7.变量
8.编程
Comments | NOTHING