第十一章 认识Bash Shell
系统可用的shell:/etc/shells
主要的两个shell:bash 、csh 系统默认:bash shell
用户执行的命令记录在:~/.bash_history
type 命令可查询执行的命令式内部命令还是外部命令
命令格式:command [-option] paremeter
其中,[]并不是实际存在命令中 ,命令太长可以以“\” 转义,“\”后接特殊字符
环境变量通常以大写字母表示,echo $变量 (显示变量内容)
在设置变量时 "=" 两边不能有空格
变量名只能是英文或者是数字,而数字不能作为变量的开头
“ ''” 内的特殊字符转换为一般字符 而“""”内的特殊字符可以保持变量特性
“\” 转义符号可以将特殊符号转换为一般符号
export 提示变量为环境变量
unset 变量名称(取消变量)
在一串命令中,``之内的命令先执行,而其执行结果作为外部输入
env 命令:显示系统的环境变量
$RANDOM 为随机变量 其取值 0~32767之间,若去0~9之间的随机数:declare -i number=$RANDOM * 10 / 32767;echo $number
与当前shell的操作接口有关的变量,都会设置为大写字母
PS1变量:设置系统提示符 其中,\d 日期 \H 完整的主机名 \h 显示主机名称的第一个名称 \t 显示时间(24小时) \T 显示时间(12小时) \A 显示时间(精确到分) \u 显示当前系统的用户账号 \v 显示bash的版本信息 \w 完整工作目录名称 \W 工作目录名称 \# 执行第几个命令 \$ 提示符 $: 本shell的PID ?: 上一个执行命令的回传码
Linux 支持的语系: locale 查看
语系环境变量:/usr/lib/locale目录中
LANG 主语言环境
LC_CTYPE 字符判别的编码
LC_NUMERIC 数字系统的显示信息
LC_TIME 时间系统的显示数据
LC_COLLATE 字符串的比较与排序
LC_MONETARY 币值格式的显示
LC_MESSAGES 消息的显示
LC_ALL 语言环境的整体设置
语系配置文件:/etc/sysconfig/i18n
read 的变量读取从键盘输入的变量 -p 提示信息 -t 秒数
declare 声明变量的属性 -a 数组 -i 整数 -x定义为环境变量 -r 变量只读,不能设置,也不能取消
数组以${数组} 的方式读取
ulimit 限制用户使用的系统资源
-H 严格显示 -S 警告 -a 列出所有的限制 -C 可建立的最大核心文件容量 -d 程序数据可使用的最大容量 -f 此shell可建立的最大文件容量,一般为2G -t可用于锁定的内存容量 -p可用于管道处理数量 -t 可使用的最大CPU时间 -u 用户使用的最大进程数
alias 设置别名 unalias 取消别名
history 历史命令 -n 列出N行 -c 清楚 -a 当前新增的history -r 将histfiles文件中内容读入到当前shell的历史记录中 -w 将当前的历史记录内容加入到histfiles文件中
/etc/issue 或 /etc/motd 设置显示登录消息
/etc/issue.net 设置远程telnet 显示消息
环境变量设置文件:bashrc、~/.bashrc 、~/.profile、/etc/inputrc、source.
注:在命令行输入的变量,命令别名都针对此次登录生效
一. 系统设置值
1./etc/sysconfig/i18n 语言/语系设置文件
2./etc/profile 该文件设置的几个重要变量(PATH USER MAIL HOSTNAME HISTSIZE UMASK等)
3./etc/profile.d/*.sh
4./etc/man.config (man路径设置)
二.系统设置值
1.~/.bash_profile (优先) ~/.bash_login 、~/.profile (只要一个即可,登录读取)
2.~/.bashrc (执行shell时会读取)
3.~/.history (登录读取)
4.~/.bash_logout
一般用户登录设置文件:
1./etc/profile -> /etc/profile.d与inputrc -> ~/.bash_profile 或者 ~/.bash_login 或者 ~/.profile -> ~/.bashrc(最终读取)
# source ~/.bashrc 将设置文件读取到当前shell的环境变量中,立即生效
# . /.bashrc 同上
三. 终端环境设置
stty (set tty)-a 列出参数 “^”表示 ctrl和按那个键的意思
主要参数:
eof:end of file 输入结束
erase:向后删除字符
intr:向当前程序发出一个终端信号
quit:给当前程序发出一个推出信号
stop:停止屏幕当前的输出
susp:给当前运行的程序发一个quit(退出)信号
待续……
准备考RHCE,全面复习下linux基础顺便经典的鸟哥的私房菜学习笔记写上来分享给大家 ---2013.09.09
set 设置输入/输入环境 < $-变量时set的所有设置
通配符与特殊符号:\转义符 将特殊字符还原为一般字符
& 将命令变为后台工作
"``"(非单引号),让``之间的命令先执行
()中间为子shell
[]为字符的组合
{}为命令区块的组合
ctrl+M = Enter
ctrl+S = Enter 暂停屏幕输出
ctrl+Q = Enter 恢复屏幕输出
[] 表示一个字符
- 表示范围
`command` = $(command)
stderror 标准错误输出,文件描述符为 2 使用:2> 或 2>>
stdout 标准输出,文件描述符为 1 使用:1> 或 1>>
stdin 标准输入,文件描述符 0 使用:0> 或0>>
>2> < 右边必须为设备或文件
> 相当于 1> 其中 1 可以省略,1与>之间没有空格
/dev/null 垃圾桶 (一般错误信息发到垃圾桶)
将错误输出和标准输出到同一个文件中 2> &1
;为命令分隔符,;前命令执行完后才执行;后的命令
&& 前为true 才执行&& 后的命令,||前为false 才执行 || 后的命令
command && command || command 判断条件最多有3个
管道命令(pipe)| 管道前后都是命令,|前的命令输出为|后命令的输入
cut命令(剪贴) -d 后接分隔符 与-f一起用,-f根据-d的分割将一段消息分为几段,-f就是取出第几段的意思,-c 是以字符为单位取出固定的字符范围,cut主要讲同一行的内容进行分解。
grep 分析所有消息取出所有的行
参数:-a 将二进制文件以文本方式搜索
-c 计算出找到“搜索到的字符”的个数
-T 忽略大小写
-n 顺便输出行号
-v 反向选择 显示出未查找到字符串的那行
sort 排序 排序的字符与语系的编码有关,建议 LC_ALL=C 让语系统一
参数:-f忽略大小写
-b忽略空字符
-M 以月份来排序
-n 以数字排序,默认以文字方式排序
-r反向排序
-u uniq 相同的数据中,进出现一行
-t 分隔符,默认是以tab分隔
-k 按照那个字段来排序,通常k与t连用
uniq 去掉重复的记录数
参数:-i忽略大小写
-c进行计数
wc -l 显示多少行 (wc 默认显示 行数 字数 字符数)
参数:-w 显示多少字,英文单词
-m 显示多少字符
tee 双向重导向 -a 以累加的方式将数据写入到文件中
tr 删除一段消息中的文字或进行文字消息的转换
参数:-d 删除消息中的字符串
-s 替换重复的字符
DOS下的转换符^M = \r
col -x 将tab键转换成对应的空格键
join -t join默认以空格为分割符,-i忽略大小写的差异
expand 将tab键转换成空格 -t n (n为空格数) n<=8
unexpand 将tab键转换成tab键
拆分命令:split -b 后接要拆分的文件大小,(单位为:b,k,m)
参数:-l 按照行来进行拆分
参数代换:xargs -o将stdin 中的特殊字符换成一般字符
-e 为eof,可接字符串,当xargs分析道该字符串时就停止工作
-p 执行参数询问用户
-n 接次数
xargs 没接命令 默认以tab输出。
减号 - 特殊用途。