学习笔记20140428shell和bash的简介

bash及其特性

shell是什么?(外壳,用户与pc打交道)

分为2种:gui(gnome,kde,xface等)

cli(shell,bsh---把式(集合了csh和ksh的优点),csh---tcsh,ksh--商业和社区)

程序和进程的关系

同一个程序一个,可以运行多个进程,可以多个用户使用。

在进程开来,当前主机上只有内核和当前进程。

进程在内核中只要进程号不一样即可正常工作。

进程可以以程序的副本运行,进程是程序执行的实例

shell特性:

1.支持所有的用户自定义环境。

 如qq安装到win7下,每个qq号登录后可以自定义各种皮肤。

2.shell和子shell的关系

使用pstree来查看shell和子shell的关系

在cli中可以打开多个shell,互不相关,互相不知道对方的存在,内部设定互不继承。

bash的特性:

1.命令历史

命令历史:自动记录,保存在内存中的,用户正常退出会保存在~/.bash_history中

histroy查看命令历史

-c清空命令历史

-d删除指定的hsitory记录,后面可以加第多少条

history -d 500删除第500行记录,后面的往上移动

history -d 500 10删除第500行开始,往后的10行

history -w将缓存的内存保存在历史文件中

命令历史的大小默认是1000,使用echo $HISTSIZE查看变量历史命令的大小

历史命令的使用技巧:

执行第100条   !n-------!100

!-n执行命令历史的倒数第多少条

!!执行上一条历史

!man执行最近的一次与执行字符串开头的命令

!$应用前一个命令的最后一个参数

cat /tmp/inittab

vi !$

esc 按下在松开再按.可以显示上一条命令

2.管道,重定向

3.命令别名

alias(命令别名)

alias cls=clear(右边是存在的命令)若有空格则用单引号引起来

退出shell会失效,且只对当前shell生命周期有效,仅对当前的shell进程

unalias  取消别名

使用别名命令本省\ls

4.命令行展开

5.文件名通配(globbing)

*通配符,可用于匹配任意长度的任意字符

?任意单个字符

[]匹配指定范围内的任意单个字符

[^]匹配指定范围外的任意字符

范例:查看以1个字母开头的,后面是数字ls 1[0-9]*

以a开头后面任意字符ls a*

以字母a开头的,以数字3结尾的ls a*3

以字母开头,后面任意字符,以数字结尾ls[a-zA-Z]*[0-9]

以a开头后面跟一个数字ls a[0-9]*

以任意一个字符开头,后面跟y在跟任意字符ls ?y*

以数字,大小写开头的都显示ls [0-9a-zA-Z]*

touch 'a b'创建空格的文件名,不建议,查看文件名含有空格ls *[[:space:]]*

bash globe的通配符

[:space:]一类字符,空格,应用则在通配符号外再加个[]

[:punct:]所有标点符号

[:upper:]大写字母

[:alpha:]大小写字母

[:digital:]数字

[:aluum:]数字和大小写字母

也可以使用man 7 globe获得上面的列表

6.命令行编辑

可以使用各种快捷方式编辑命令行

如ctrl+a跳到命令行行首

 ctrl+e跳到命令行行尾

 ctrl+u删除光标到行首的内容

 ctrl+k删除光标到行尾的内容

 crtl+l清屏

7.变量

8.编程

9.命令补全

命令补全的原理:在PATH环境变量中搜索并补全(/bin,/sbin...)

路径补全的原理:在打头的路径下搜索补全

10.命令替换

将命令中的子命令替换为其执行的结果

echo “the current directory $(pwd)"打印当前的目录

创建以当前时间命名的文件

touch ./file-$(date +%F-%H-%M-%S).txt

命令替换可以用:$(command)或者`command`esc下的反引号

bash支持的引号:

``esc下面的键,命令替换

""双引号,弱引用,可以实现变量替换

''单引号,强应用,不完成变量的替换


你可能感兴趣的:(history,程序,记录,历史,皮肤)