shell
命令行解释器,是用户与系统沟通时的媒介
unix 系统中有各种shell,linux采用bash为其默认shell
系统可以使用的shell记录在 /etc/shells中
bash:Bourne Again Shell的缩写
支持命令行输入,操作历史查询,快捷键,使用变量等功能
预订系统变量
查看变量值 echo $+变量名 = echo ${变量名} 推荐使用第二种
unset + 变量名 删除变量
系统通过预定义环境变量来定义shell的环境
用户可以用set或env查询当前环境变量:env只查看环境变量,set系统和环境变量都可以
常用预定义环境变量:
home:当前用户主目录
path:当前用户可执行文件搜索路径
lang:程序应该使用的默认语言
ps1:行提示符
PS1参数的介绍
\u 当前用户账号
\h 仅列出主机名的第一个名字 \H列出全名
\W 显示当前目录的最后一个文件名称 \W 显示完整路径
\# 显示命令条数
\A 显示时间 点
界面提示符可以更改:PS1='[\u@\H \W \A \#]\$'
export 可以将自定义的环境转换为环境变量
history:在bash中输入history指令可以查询用户过往的操作
内存中记录的过往指令数根据环境变量中historysize而定
history表存储在内存中,在用户logout时会记录入用户主目录下的.bash_history文件中,在下次login时载入
.bash_history中的指令数根据环境变量中的histfilesize而定
使用!来调用过往指令:
!! :重复执行上一条命令
!a : 重复执行上一条以a为首的指令
!number: 重复执行上一条在history表中记录号码为number的指令
!-number: 重复执行前number条指令
!$:截取到上条指令的最后个参数
<ctrl+r> 用来在history表中查询某条过往指令
别名: alias 可以查看哪些命令使用了别名
设定别名 alias a='ls -al'
取消别名 unalias a
alias记录在shell中最先行
命令行表达式:
命令行输出 -- " "
将一串字符当成一个字符串来对待,如果字符串包含特殊含义的字符,则转义.
碰到$~\! 四个字符还是当做原先作用来用,不去转义它,不能转化为一般字符
echo "$PWD" = \root
命令行输出 -- ' ' 可以禁止所有特殊符号,包括$!~\
执行引用符 -- 会先执行引用符里面的命令
如ls -al 'pwd' = ls -al \root
数学运算 -- $[]
在中括号内会执行数学表达式的计算 如 echo $[1+4] = 5
逸脱符 -- \
用于取消命令行中字符的特殊含义
用于表示一行的结束
mkdir a b 建立了a ,b的两个目录
mkdir a\ b 建立a b一个目录
命令行结束符 -- ;
用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键
ls;pwd 先执行ls然后执行pwd
子shell激活 -- ()
在小括号内的命令行表示激活一个子shell后在子shell中运行
shell命令行支持在同一行的两条命令中插入&&与||
&&:当前一条指令执行成功时再执行下一个指令
||:当前一条指令执行不成功时再执行下一个指令
默认情况下,在shell下改变变量,umask,alias,只在此次登录中有效.一旦logout后再login,则设定恢复初始值
一个通过登录而得到的shell,一般是用户初始shell
在登录shell下激活
bash 在用户登录时从四个文件中读取环境设定
全局设置文件:/etc/profile
/etc/bashrc
用户设置文件:
~/.bashrc
~/.bash_profile
系统先执行/etc/profile 然后执行~/.bash_profile 再然后~/.bashrc 最后/etc/bashrc
ctrl+d 输入已结束,在shell下相当于exit
ctrl+c 键盘中断请求
ctrl+s & ctrl+q 暂停/恢复屏幕输出
ctrl+l 清屏,相当于clear
tab 自动补完命令行与文件名
tab建双击可以列出所有可能匹配的选择