Shell
用户与系统沟通的媒介
/etc/shells
linux默认shell为bash

bash
Bourne Again Shell
与unix上的Bourne Shell兼容
a=npp
echo $a   ---npp---
a=${a}123
echo $a    ---npp123---
unset a  删除变量a

本地变量:适用于当前shell
环境变量:所有shell
set查看环境变量+本地变量 或 env查看环境变量
预定义环境变量:
 HOME:家目录
 PATH:可执行文件搜索路径
 LANG:默认语言  LANG=en  locale -a列出所有支持的
 PS1 :行提示符  @ \d \H \h \t \T \A时分 \u用户名 \v \w完整的目录路径 \W目录(最后的) \#命令执行次数 \$
export a将本地变量转换为环境变量

history
查询过去的命令
history 10 列出最后10个指令
histsize  ---echo $HISTSIZE---
bash_history  ----$HISTFILESIZE---  history -w强制写入
调用过往指令
 !! 重复上一条
 !a 执行最后以a开头的指令
 !number
 !$ 截取上条命令的最后一项  ping 127.0.0.1   ping !$
 crtl+r 查找最近的

alias
alias ll='ls -l --color=tty'
alias可列出所有别名
unalias取消别名

“”转义特殊字符  $\`!不能取消转义 echo “”
‘’不转义特殊字符   echo ‘’
``  执行引用符(先执行``里面的) ls -al `pwd`  = ls -al /root
$[] 中括号里面的会被计算   echo$[1+4]
\   取消命令行中的特殊含义、用与一行未结束  mkdir a b 与 mkdir a\ b的区别
;  分隔多个命令
()子shell激活    (home=/usr)

逻辑运算符
&&  前一条指令成立才执行后一条  ls /home && touch /home/test1
||  前一条指令不成立才执行后一条 ls /root/test1 || mkdir /root/test1
ls /root/test && echo "exist" || echo "no exist"

登录shell
shell下改变变量、umask、alias只在此次登陆有效

定制登录shell
bash在用户登录时从四个文件中读取环境设置
全局设置文件:
/etc/profile 设定系统环境变量,a变量变成环境变量可放这
/etc/bashrc  别名、一些系统参数
用户设置文件:
~/.bashrc
~/.bash_profile 

其他shell设置文件:
~/.bash_logout: 用户logout时自动执行
~/.bash_history: login时自动读取,logout时写入记录

登陆shell启动读取顺序:su - npp
/etc/profile
/etc/profile.d/*.sb
~/.bash_profile
~/.bashrc
/etc/bashrc

非登陆shell启动读取顺序:su npp
~/.bashrc
  /etc/bashrc

快捷键
Ctrl+d:输入结束
Ctrl+c:强制中断
Ctrl+s&p:暂停/恢复
Ctrl+l:清屏
Tab