1.合法的shell与/etc/shells功能
shell有多个版本,有Bourne Shell(sh)、C Shell、K Shell 、TCSH等。通常Linux使用的是Bourne Again Shell(Bash),是sh的增强版
可以检查/etc/shells,查看有多少可用的shell。
将合法的shell写入/etc/shells文件,是为系统某些服务在运行过程中检查用户能够使用的shells。
当用户登录时就会取得一个shell来工作,这个shell记录在/etc/passwd这个文件中
2.bash shell的功能
命令记忆history,默认命令记忆功能1000个。在~/.bash_history文件中
命令补全功能:Tab
别名:alias
作业控制、前台、后台(job control、foreground、background)
shell script
通配符(Wildcard)
3.bash 内置命令type:查看命令来自外部命令还是内置命令
type [-tpa] name
-t:显示字段有:file、alias、builtin
-p:如果后面接外部命令时显示完整的文件名
-a:由PATH定义的路径中,将所有含有name的命令列出。
4.变量的设置和显示unset、echo
变量规则:
变量与变量内容以等号=链接 name="VBird"
等号两边不能有空格键
变量名只能是英文字母与数字,开头不能是数字
变量内容若有空格,则用“”或者‘’将变量扩起来,
“”中特殊字符如$可以保持原本特性
‘’中的特殊字符仅为一般字符
转义字符\可将Enter、$、\等变成一般字符。
在一串命令中若有其他命令,可用$(comand)或者·comand·执行。
系统默认变量通常为大写,自定义变量为小写
取消变量用unset name
5.bash命令 打开一个子进程shell
6.环境变量功能
env命令查看那环境变量和常见环境变量说明
HOEM:代表主文件夹 cd ~
SHELL:当前使用的shell
HISTSIZE:记录条数
MAIL:使用mail命令在收信时系统读取的信箱文件
PATH:环境变量的目录
LANG:语系数据
RANDOM:随机数
set命令查看所有变量(环境变量和自定义变量)
PS1(提示符设置)
$(本shell PID):echo $$
?(上一个命令的回传码)
export:将自定义变量转成环境变量
declare:可将环境变量转成自定义变量
7.locale语系变量 /etc/default/locale /etc/sysconfig/i18n
8.变量键盘读取、数组与声明 read、array、declare
read [-pt] variable
-p:后面接提示符
-t:后面接等待的秒数
declare [-aixr] varibale
-a:声明称数组array
-i:声明称整数
-x:声明称export环境变量
-r:将变量设置成readonly
var[index]=content
echo "${var[1],${var[2]}}"
建议用${}读取数组内容
9.与文件系统及程序的限制关系:ulimit
10.变量内容的删除、替换、替代
${variable#关键字}:从头开始数组符合关键字,将最短的数据删除
${varibale##keyword}:从头开始符合关键字,将最长的数据删除
${variable%keyword} :从尾开始符合关键字,将最短的数据删除
${variable%%keyword} :从尾开始符合关键字,将最长的数据删除
${variable/old str/new str}:将变量内容符合旧字符串,将第一个old替换new
${variable//old str/new str}:全部替换
#:符合替换文字最短的那个
##:符合替换文字最长的那个
11.变量的测试和内容替换
str没有设置 str=“” str设置为非空
var=${str-expr} var=expr var= var=$str
var=${str:-expr} var=expr var=expr var=$str
var=${str+expr} var= var=expr var=expr
var=${str:+expr} var= var= var=expr
var=${str=expr} str=expr,var=expr str不变,var= str不变,var= $str
var=${str:=expr} str=expr,var=expr str=expr,var=expr str不变,var=$str
var=${str?expr} expr输出到stderr var= var=str
var=${str:?expr} expr输出到stderr expr输出到stderr var=str
12.历史别名 alias unalias
~/.bashrc文件中设置
13.bash的操作环境
路径与命令查找顺序:
1.以绝对相对路径执行命令
2.由alias找到该命令执行
3.由bash内置builtin命令执行
4.通过$PATH顺序找到的第一个命令执行。
bash登录与欢迎信息/etc/issue,/etc/motd.在Ubuntu中/etc/update-motd.d中00-header 10-help-text文件中
14.bash配置文件
以login shell读取流程:/etc/profile------------>~/.bash_profile-------------->开始bash操作
----->/etc/inputrc -------->~/.bashrc
----->/etc/profile.d/*.sh
--->/etc/sysconfig/i18n
当取得nologin-bash时会读取~/.bashrc
/etc/bashrc中定义的数据:
依据不同UID规定的umask值。
依据不同的UID规定PS1值。
调用/etc/profile.d/*.sh的设置
15.终端机的环境配置stty,set
16.通配符与特殊符号
通配符:
* 代表0到无穷多个任意字符
? 代表一个任意字符
[] 代表一个在中括号内的字符
[-] 代表一个中括号范围内的字符
[^] 代表非中括号内的字符
特殊符号:
# 注释
\ 转义
| 管道
; 命令分割符
~ 用户主文件夹
$ 取变量
& 作业控制,后台运行
! 非
/ 目录符号
>,>> 数据流冲定向,替换 累加
<,<< 数据流重定向
‘ ‘ 不具有变量置换功能
" " 具有变量置换功能
`` 可以执行的命令,也可用$()
( ) 中间为子shell的起始和结束
{} 中间为命令块组合
17.重定向
标准输入 代码为0,使用<,<<
stdout 代码为1,使用>,>>
stderr 代码为2,使用2>,2>>
如果将错误和正确输出到同一文件,用
find /home -name .bashrc >list 2>&1
find /home -name .bashrc &>list
如果将一些错误信息丢弃掉,用2>/dev/null
18.管道命令
选取命令:cut,grep
排序命令:sort,wc,uniq
双向重定向:tee
字符转换命令:tr,col,join,paste,expand
切割命令:split
参数代换:xargs
关于-:将前一个命令的stdout当作当前命令的stdin