其实学习linux系统主要就是学的bash shell,可见它的强大之处,学好会给我们系统管理带来很大的方便,以下都是参考各种资料后自己整理的,方便日后查找。
Bash shell 的功能:
1.命令历史(history) :记录使用过的指令。默认记录1000个指令。保存在~/.bash_history里(只有用户退出
系统后),至于当前执行的被记忆在内存中。
2.命令补全:提高输入速度。
3.别名设定:例如alias a='ls-l' 执行a指令时与执行ls -l输出结果是一样的。
4.shell script编写:
5.内建命令:type可查看指令是否为内建指令很好用的哦!!!常用参数-[t p a]
-----------------------------------------------------------------------------
自定义变量:
1.定义变量时,可直接赋值 如 A=123 等号两边没空格!!!
2.大写字母开头 如TODAY=monday 显示 echo $TODAY
3.赋值的内容有空格时,用“” 如 NAME=“he name is tom” 注意:“”内的保留原来的意义 如:A=1
B="1=$A" echo $B 显示1=1 哈哈!!!
4.\脱去特殊意义
5.反单引号 ` tab键上面那个 注意:``它里面放的是可执行的指令 如: version=`uname -s` echo
$version 会显示当前系统
6.若该变数为扩增变数内容时,则可用"$变数名称"或${变数}累加内容,如下所示:
PATH="$PATH":/home/bin
7.export 变成全局变量
8.通常情况下:大家为系统预设,小写为自己定义。
9.查看变量 set
10.取消设置:unset 变量名
注意:无论单引号、 又引号必须成对出现!!!!!!!!
可以将比较长的目录赋值给一个变量,如A=/etc/sysconfig/network/* 可以这样进入 cd $A 可以省去敲打长的
命令,哈哈!!!!
-------------------------------------------------------------------
ps1 常用:
\d :可显示出『星期月日』的日期格式,如:"Mon Feb 2"
\H :完整的主机名称。举例来说,鸟哥的练习机为『www.vbird.tsai』
\h :仅取主机名称在第一个小数点之前的名字,如鸟哥主机则为『www』后面省略
\t :显示时间,为24 小时格式的『HH:MM:SS』
\T :显示时间,为12 小时格式的『HH:MM:SS』
\A :显示时间,为24 小时格式的『HH:MM』
\@ :显示时间,为12 小时格式的『am/pm』样式
\u :目前使用者的帐号名称,如『root』;
\v :BASH 的版本资讯,如鸟哥的测试主机版本为3.2.25(1),仅取『3.2』显示
\w :完整的工作目录名称,由根目录写起的目录名称。但家目录会以~ 取代;
\W :利用basename 函数取得工作目录名称,所以仅会列出最后一个目录名。
\# :下达的第几个指令。
\$ :提示字元,如果是root 时,提示字元为# ,否则就是$
设置PS1 PS1='[\u\h \W \A #\#]\$' 显示如下内容 [rootlocalhost / 13:38 #10]#
--------------------------------------------------------------------
echo $SHELL 显示当前shell
echo $PATH 显示查找路径
echo $?显示上条指令是否正确 0为对 1为错
read 读取键盘的输入把值给变量
1.带参数:-p -t
如 [rootlocalhost ~ ]#read -p "please input your name :" name
please input your name :tom
[rootlocalhost ~ ]#echo $name
tom
2.不带参数:
[rootlocalhost ~ ]#read a
jkljkljkljkl
[rootlocalhost ~ ]#echo $a
jkljkljkljkl
-----------------------------------------------------------------
通配符与特殊符号:
*
代表 『 0 个到无穷多个』 任意字符
?
代表 『一定有一个』 任意字符
[ ]
同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能
是 a, b, c, d 这四个任何一个』
[ - ]
若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数
字,因为数字的语系编码是连续的!
[^ ]
若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符
,只要是非 a, b, c 的其他字符就接受的意思。
#
批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行
\
跳脱符号:将『特殊字符或通配符』还原成一般字符
|
管线 (pipe):分隔两个管线命令的界定(后两节介绍);
;
连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
~
用户的家目录
$
取用变量前导符:亦即是变量之前需要加的变量取代值
&
工作控制 (job control):将命令变成背景下工作
!
逻辑运算意义上的『非』 not 的意思!
/
目录符号:路径分隔的符号
>, >>
数据流重导向:输出导向,分别是『取代』与『累加』
<, <<
数据流重导向:输入导向 (这两个留待下节介绍)
' '
单引号,不具有变量置换的功能
" "
具有变量置换的功能!
` `
两个『 ` 』中间为可以先运行的命令,亦可使用 $( )
( )
在中间为子 shell 的起始与结束
{ }
在中间为命令区块的组合!
未完待续!!!