第11章:p354 认识与学习BASH
- 认识BASH这个shell
1.1 硬件,核心与Shell
1.2 为何要学文字接口的shell
1.3 系统的合法shell与/etc/shells功能
1.4 Bash shell的功能 alias lm='ls -al'
type [-tpa] name
1.5 指令的下达
- shell变量功能
2.1 什么是变量
2.2 变量的取用与设定:echo,变量设定规则,unset
echo $PATH 或者 echo${PATH}
echo $HOME 或者 echo${HOME}
var="lang is $LANG" $有效
var='lang is $LANG' $无效
用\转义
version=$(uname -r) 有指令提供信息
下3皆可以:
PATH="$PATH":/home/bin
PATH=$PATH:/home/bin
PATH=${PATH}:/home/bin
export PATH是变量成为环境变量
系统变量大写,自定义小写
unset name:取消变量
2.3 环境变量的功能
env:列出系统环境变量
export:让自定义变量存在于子程序中
set:所有变量,系统变量与自定义变量
常见的环境变量:
HOME,SHELL,HISTSIZE,MAIL,PATH,LANG,RANDOM
declare -i number=$RANDOM*10/32768;echo $number
PS1
$:本shell的pid,进程id
?:上一条命令的返回值
OSTYPE,HOSTTYPE,MACHTYPE
export 让自定义变量存在于子程序中
declare 把环境变量转成自定义变量
2.4 影响显示结果的语系变量(locale)
2.5 变量的有效范围
2.6 变量键盘读取,数组与宣告:read,array,declare
read [-pt] variable
-p:接提示字符
-t:接等待秒数
read -p "please keyin your name:" -t 30 name
declare/typeset功能一样:
declare [-aixr] var
-a 将var定义为数组
-i 将var定义为整数类型
-x 用法同export
+x 取消export
-r 设置为readonly
declare -i sum=100+300+50
数组:var[1]="a";var[2]="b";var[3]="c";echo "${var[1]},${var[2]},${var[3]}"
2.7 与文件系统及程序的限制关系:ulimit 限制可以开启的档案数,cpu使用时间,内存总量等
ulimit [-SHacdfltu] [配额]
-H hard limit
-S soft limit
-a 不要接参数,列出所有
-c 当某程序错误时,系统把内存中信息写成文档
-f 此shell可以建立的最大档案容量
-d 程序可以使用的最大断裂内存容量
-l 可用于锁定的内存量
-t 可使用的最大cpu时间
-u 单一用户可以使用的最大程序数量
2.8 变量内容的删除、取代与替换
# 删除,${var#/*kerberos/bin:}
#:符合取代文字最短的那个
##:符合取代文字最长的那个
%与%%,从内容的后面开始
echo ${var/word1/word2} 把第一个word1替换为word2,
echo ${var//word1/word2} 替换所有
-与:-,下面new_var与var_old通常一样
new_var=${var_old-content} 如果var_old未设定,赋新值,否则保留原值
new_var=${var_old:-content} 如果var_old未设定或者为空串都赋值
+与:+与之相反
=,:= 旧变了一起替换
?,:? 输出错误
- 命令别名与历史命令
3.1 命令别名设定:alias unalias
alias lm ='ls -al|more'
unalias lm
3.2 历史命令:
history [n]
history [-c] 清除clear
history [-raw] histfiles
!number 执行第number条命令
!command 最近以command开头的指令
!!直接执行上一条指令
- Bash Shell的操作环境
4.1 路径与指令搜寻顺序
1 以相对/绝对路径执行指令。./ls;/bin/ls
2 alias
3 bash内建
4 PATH顺序
4.2 bash的进站与欢迎讯息: /etc/issue,/etc/motd
4.3 bash的环境配置
login shell 的读取配置文件顺序
source与.:读入环境配置文件的指令
non-login shell:~/.bashrc
4.5 终端机的环境设定:stty,set
stty -a bash热键设置
set[-uvCHhmBx],查看预设 echo $-
4.6 通配符与特殊符号
通配符:
* 0到无穷多个
? 一定有一个
[ab] 一定有ab其中一个
[0-9] 编码顺序内的所有字符其中一个
[^abc] ^s是取反的意思
特殊符号:
# 注释
\ 转义
| 管线 pipe
; 连续指令
~ 家目录
$ 取变量值
& 工作控制:将指令变成后台工作
!取反
/ 路径
>,>> 输出导向
<,<< 输入导向
'' 不具有变量置换功能
"" 具有变量置换功能
`` 中间位可以先执行的指令,亦可用$()
() 子shell的起始与结束
{} 命令区块的组合
- 数据流重定向
5.1 什么事数据流重导向
标准输出:>,>>
标准错误输出:2>,2>> 如: find /home -name .bashrc > list_right 2>list_error
/dev/null 垃圾桶黑洞装置与特殊写法
find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list
标准输入:<,<<
cat > catfile 用键盘输入
cat > catfile < ~/.bashrc 来自文件
cat > catfile << "eof"
5.2 命令执行的判断依据:;,&&,||
cmd1 ; cmd2
cmd1 && cmd2
cmd1 || cmd2
ls /tmp/abc && touch /tmp/abc/hehe
ls /tmp/abc || mkdir /tmp/abc
- 管线命令
ls -al /etc | less
6.1 攫取命令:cut ,grep
cut -d ':' -f fields echo $PATH | cut -d ':' -f 3
cut -c 字符区间 export | cut -c 12-
grep [-acinv] [--color=auto] '搜寻字符串' filename
-a:将binary档案以text方式搜寻
-c:计算次数
-i:忽略大写
-n:输出行号
-v:取反
--color=auto:关键字部分加上颜色
last | grep 'boot' | cut -d ' ' -f 1
6.2 排序命令:sort,wc,uniq
sort [-fbMnrtuk] [file or stdin]
-f:忽略大小写的差异
-b:忽略最前面的空格部分
-M:一月份名字来排序
-n:使用纯数字来排序
-r:方向排序
-u:相同的数据,仅出现一行
-t:分隔符
-k:以哪个区间来进行排序
cat /etc/passwd |sort -t ':' -k 3 -n
uniq [-ic] 相同的数据,仅出现一行
-i 忽略大小写
-c 进行计数
wc [-lwm]
-l 仅列出行
-w 列出有多少单词
-m 列出多少字符
6.3 双向重导向:tee [-a] file
6.4 字符转换命令:tr col join paste expand
6.5 分割命令:split,文档分割
6.6 参数替换:xargs
6.7 减号的用途
- 所涉及到的命令
last 查看最近登录