一、Bash Shell的操作环境
bash的登陆与欢迎信息
/etc/issue 登陆前的信息
/etc/issue.net telnet 远程登陆的信息
/etc/motd 登陆后的信息
bash的环境配置文件
login shell 只会读取 这两个文件
/etc/profile
~/.bash_profile 或 ~/.bash_login 或 ~/.profile (login shell 只会读取这三个的其中一个,而且读取的顺序是按照上面的顺序)
可以在 /etc/profile看到
for sh in /etc/profile.d/*.sh ; do
[ -r "$sh" ] && . "$sh"
done
可以把自己要启动的shell脚本 都放在 /etc/profile.d/ 里
/etc/bash/bashrc(gentoo是放在这里,redhat 是放在/etc/bashrc) 定义了PS1 变量(就是 每行前面的 localhost ~ # 怎么显示)等
/etc/man.config man的配置文件 里面 MANPATH 是 man去 寻找的路径
~/.bash_history 记录历史记录
~/.bahs_logout 记录当我们注销bash后系统再帮我们做的事
source 或 . 读取配置文件到shell环境中
终端机的环境设置:stty,set
stty可以设置 eof kill, 等的快捷键
(ctrl+U 删除 光标前面的命令,ctrl+?恢复)
set [-uvCHhmBx]
通配符与特殊符号
* 代表 0 个或无穷多个任意字符
? 代表『一定有一个』任意字符
[ ] 同样代表『一定有一个在括号内』癿字符(非任意字符)。例如 [abcd] 代表『一定有一个字 符, 可能是 a, b, c, d 这四个任何一个』
[ - ] 若有减号在中括号内时,代表『在编码顺序内癿所有字符』。例如 [0-9] 代表 0 刡 9 乊间癿所有数字,因为数字癿诧系编码是连续癿!
[^ ] 若中括号内癿第一个字符为挃数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,叧要是非 a, b, c 癿其他字符就接叐 癿意思。
数据流重定向
standard (标准的意思) standard input 标准输入
标准输入(stdin):代码为0 ,<或<<
标准输出(stdout):代码 1, 使用 >或>>
标准错误输出(stderr)代码 2,使用 2> 或 2>>
一个>表示覆盖原有的文件,>> 表示添加
/dev/null 垃圾黑洞 find / home -name 111 2> /dev/null 丢弃错误信息
如果要将错误信息和正确信息写到同一个文件中
find /home -name .bashrc > list 2> list <==错误
find /home -name .bashrc >> list 2>> list <==虽然能保存正确错误,但顺序可能不对
find /home -name .bashrc > list 2>&1 <==正确
find /home -name .bashrc &> list <==正确
<
cat > /test/hist < /root/.bash_history
hist文件就是 .bash_history的内容
<< 表示结束 输入 的意思
cat > /test/hist << "eof"
aaa
bbb
eof 当输入eof时结束 输入
管道命令(pipe)
“ | ”
standard error output 会被 忽略
ls -al /etc | less
选取命令:cut,grep
cut
localhost ~ # echo $PATH | cut -d ':' -f 2
/usr/local/bin
localhost ~ # echo $PATH | cut -d ':' -f 2,3
/usr/local/bin:/usr/sbin
localhost ~ #
localhost ~ # export
declare -x CG_COMPILER_EXE="/usr/bin/cgc"
declare -x COLORTERM="gnome-terminal"
declare -x CONFIG_PROTECT="/usr/share/gnupg/qualified.txt /usr/share/config"
localhost ~ # export | cut -c 12-
CG_COMPILER_EXE="/usr/bin/cgc"
COLORTERM="gnome-terminal"
CONFIG_PROTECT="/usr/share/gnupg/qualified.txt /usr/share/config"
grep
只要有root的行就输出
last | grep 'root'
没有root的行输出
last | grep -v 'root'