此文为学习《鸟哥的私房菜》时候的备忘录.
##第三部分 学习shell与shell script
###vi的使用
- 一般模式,
vi a.c进入此模式。移动光标,删除字符,删除整行,复制粘贴 - 编辑模式,输入“i,o,a,r”任何一个字母进入。
 - 命令行模式,输入“[:],[/],[?]”中任一个字符进入。查找数据,读取保存,大量替换字符,离开,显示行号等。
 
一般过程:
touch a.c
vi a.c
//get into vim
...
//input 'i' to enter edit modle
...
//edit the file
...
//tap 'esc' to enter order modle
//tap ':wq' to store the changes(or tap ':wq!' to compel to save the file )
vim仅需要熟记几种常用命令即可。
###bash基础
 通过shell将我们输入的命令与内核(kernel)通信,好让内核可以控制硬件来正确无误地工作。诸如ls,cd都是独立的应用程序。通过shell来操作这些应用程序。
shell的版本
- sh(bourne SHell)
 - C SHell(Sun里的)
 - K SHell(商业常用)
 - bash(Bourne Again SHell)
 
可以用 cat /ect/shells 命令查看shells文件的内容,找到可用的shell,而bash是Linux的默认shell
###shell常用功能
- 命令记忆,按[上下箭头]选择历史纪录
 - 文件补全,按[tab]
 - 命令补全,按[tab]
 - 别名,如
alias lm='ls -al' - shell script
 - wildcard(通配符)
 
###shell变量
1.环境变量,如
- @SHELL,默认shell的版本
 - @PATH,执行文件查找的路径
 - @HOME,用户的主文件夹
 - @HISTSIZE,history size,历史命令的条数
 - @LANG,语系数据
 - @RADOM,0~32767之间的随机整数
 
2.自定义变量,如:
myvar=one
echo @myvar    //会显示one
- 取消变量使用
unset myvar。 - 使用
export使自定义变量变成环境变量。 
3.可以利用变量来进行目录的简化:
Jyoshin:/ xujin$ prac="/Users/xujin/practice/"
Jyoshin:/ xujin$ cd $prac
Jyoshin:practice xujin$ pwd
/Users/xujin/practice
Jyoshin:practice xujin$ 
4.从键盘读取变量
- read var
 - declare -i var(声明一个int变量)
 
###管道命令(pipe)
仅处理标准输出。 ls -al /etc | less
- 基本读取命令:less,more,head,tail,均可作为接受标准输入的管道命令。
 - 选取命令:cut,grep
 - 排序命令:sort,wc(计数),uniq(剔除重复)
 - 双向重定向:tee
 
###正则表达式