shell:
GUI 包括GNOME KDE XFACE
CLI sh csh ksh bash(bash是默认的shell程序)
用户登录完成后,系统自动启动shell程序
进程 应用程序的副本,使用PID区分(在系统中,一个进程只认为自己存在)
shell 父shell程序,子shell程序(父子shell之间设置环境互相独立)
cat /etc/shells 查看当前系统支持的shell程序
yum -y install ksh csh 安装 ksh csh
exit 退出当前shell程序
bash的特性:
1,命令历史:Linux自动记录系统执行的命令,保存在内存的缓存区中。每个用户的家目录下,有个隐藏的文件 .bash_history保存命令历史。
history 查看命令历史
-c 清空命令历史
-d 删除某一条命令位置
-w 将命令历史保存到某个文件中
HISTSIZE 命令历史大小变量
echo $HISTSIZE 查看其值
!n 执行历史中第n条命令
!-n 倒数第n条命令
!Word 执行命令历史中最近一次以Word开始的命令(Word必须唯一标识要执行的命令)
!!执行上一次命令
!$ 引用一个命令的最后一次参数
ESC键 再按 . 同上
2,管道,IO重定向
标准输入设备 键盘(stdin)文件描述符 0
标准输出设备 显示器(stdout)文件描述符 1
标准错误输出设备 显示器(stderr)文件描述符 2
当用户没有为指令指定数据来源时,系统要有默认的数据来源
三种数据流 : 标准输入/出数据流 标准错误输出数据流
Linux打开文件时,内核会反复调用,对文件进行标识,用文件描述符来标识文件,文件加载完成后用数字标识。
fd :file description(文件描述符)
IO重定向 把默认输入出数据来源,重新定向到其他的文件或设备
输出重定向——
> 覆盖输出重定向
>> 追加 重定向
2> 错误覆盖输出重定向
2>> 错误追加 重定向
&> 混合覆盖输出重定向
&>>混合追加重定向
输出重定向——
< 输入重定向
管道:连接多条命令,把前一条命令的输出结果作为后一条命令的输入条件(组合小程序,实现大功能)
tr 实现字符转换,不修改源文件 tr 'a-z' 'A-Z'
cat /etc/login | tr 'a-z' 'A-Z' 输出结果为大写
tee 读取标准输入的数据,并将其内容输出成文件
3,命令别名
alias command=COMMAND(原来的命令,最好用‘’引起来) 只执行alias时,会列出系统中所有已经有别名的命令。
unalias 取消
4,命令行编辑
Ctrl + a 快速跳到命令行首
Ctrl + e 快速跳转到行尾
Ctrl + u 快速删除光标位置到命令行行首的字符
Ctrl + k 快速删除光标位置到命令行行尾的字符
Ctrl + l 清屏
5,命令行展开
命令补齐: 在PATH变量搜索命令并补齐(PATH命令必须正常;tab键补齐)
路径和文件补齐 :在系统路径中查找
命令行补齐功能 不能补齐选项
命令替换:经常用在shell脚本编程中
将命令当中的子命令 替换成子命令执行结果 的过程
---> $(command) 'command'(反撇号)
双引号"",弱引用(可实现变量的替换,把变量名替换为变量值)
反撇号``,命令引用
单引号‘’强引用(不能完成变量替换)
6,命令行通配
* 匹配任意长度的任意字符
? 匹配任意单个字符
[ ] 匹配制定范围内的任意单个字符
--->> [ab] [a-m] [a-zA-Z] [a-zA-Z0-9]
[^] 匹配任意制定范围外的任意单个字符
--->>[^a-z]
[:space:] 表示空格
[:punct:] 所有标点符号
[:lower:] 所有小写字母
[:upper:] 所有大写字母
[:alpha:] 所有字母
[:digit:] 所有数字
[:alnum:] 所有数字和字母
7,变量
8,编程