《bash及其特性》由会员分享,可在线阅读,更多相关《bash及其特性(4页珍藏版)》请在金锄头文库上搜索。
1、bash及其特性:shell:外壳 用户连接计算机时的工具广义上:GUI: Gnome,KDE,XfceGLI: (b)sh,csh,ksh,bash(增强版,包含前面所有sh ),tcsh,zsh 程序只有一个,进程可以是多个进程:在每个进程看来,当前主机上只存在内核和当前进程,意识不到其他进程。进程是程序的副本,进程是程序执行的实例用户工作环境:bash-支持用户自由定义环境 shell,子shell(在shell中还有shell)exit:退出子shellbash-bash:子、父shell都是独立的,没有关联关系,意识不到对方。csh,ksh,bash,可以交互使用bash:1. 命令
2、历史2. 管道、重定向3. 命令别名4. 命令行编辑5. 命令行展开6. 文件名通配7. 变量8. 编程-多个命令组合起来,以某种逻辑来进行编程。(脚本)命令行编辑光标跳转 Ctrl+a:调到命令行首 ctrl+e:跳到命令行尾ctrl+u:删除光标至命令行首的内容 ctrl+k:删除光标至命令行尾的内容ctrl+左右键:跳前后一个单词 ctrl+l:清屏命令历史:history:以前执行过的命令历史 -c:清空命令历史(不想让别人看到) -d:删除指定位置的命令(-d 30)-d 30 10:从第30行删除10行 -w:保存命令历史至历史文件中.bash history:在home中为隐藏文
3、件rootlocalhost # ll a -rw-. 1 root root 11 8月 3 15:46 .bash_history 环境变量:PATH-命令搜索路径 HISTSZE:能保存的命令历史(缓冲)大小(数量) 命令历史的使用技巧: !n:执行命令历史中第n条命令 !-n:执行命令历史中的倒数第几条 !:执行上一条命令!string:执行命令历史中最近一个以指定字符串开头的命令 !$:引用前一个命令的最后一个参数 Esc+. :引用前一个命令的最后一个参数Alt+. :引用前一个命令的最后一个参数 命令补全: 补全前提:打头命令下查找,在PATH环境变量下补全的,2次tab 显示打
4、头的命令。 路径补全:打头路径下查找,命令别名 alias CMDALIAS=COMMAND(定义别名)otions 例:alias cls=clearrootlocalhost # alias cl=clear在shell中定义的别名仅在当前shell生命周期中有效:别名的有效范围为当前shell进程如果要永久有效需要配置文件定义,不是命令定义的。rootlocalhost # aliasalias cl=clearalias cp=cp -ialias l.=ls -d .* -color=autoalias ll=ls -l -color=autoalias ls=ls -color=a
5、utoalias mv=mv -ialias rm=rm -ialias which=alias | /usr/bin/which -tty-only -read-alias -show-dot -show-tildeunalias + CMDALIAS(别名) 撤销别名rootlocalhost # unalias clrootlocalhost # cl-bash: cl: command not found命令替换:$(COMMAND),或者用:反引号: COMMAND把命令中某个子命令替换为其执行结果的过程rootlocalhost etc# echo 12345 /etc/ 1234
6、5 /etcrootlocalhost etc# echo 12345 $(pwd) 12345 /etcrootlocalhost # touch ./file-$(date +%F-%H-%M-%S).txtrootlocalhost # ll-rw-r-r-. 1 root root 0 8月 3 16:12 file-2018-08-03-16-12-11.txt-rw-r-r-. 1 root root 0 8月 3 16:13 file-2018-08-03-16-13-46.txtbash支持的引号::命令替换(反引号)“”:弱引用,可以实现变量替换:强引用,不完成变量替换文件名
7、通配, globbing*:任意长度的任意字符(字符包括字母、数字)rootlocalhost # touch a12 ab123 x12 b123 34abrootlocalhost # ls a* /以a开头,后面任意字符a12 ab123rootlocalhost # ls a*3 /以a开头,中间任意字符,结尾是3ab123rootlocalhost # ls *12 /以12结尾,前面任意字符a12 x12?:任意单个字符 例:ls ?y*匹配 y前2个任意单字符,y后面任意字符。 rootlocalhost # ls a?0-9 /以a开头,后面跟了数字的a12rootlocalh
8、ost # ls *a? /以任意字符开头,中间为a,后面限定2个字符a12:匹配指定范围内的任意单个字符 例: ls a-Za-z*0-9 abc a-m a-z A-Z a-Za-z 0-9rootlocalhost # ls a-z*0-9 /以字母开头,中间任意字符,后面跟了数字a12 ab123 b123 x12rootlocalhost # ls a-z?0-9 /以字母开头,中间限定1个字符,后面是数字a12 x12创建带空格的名字 : touch a b 一般不用 :space:空白字符 :punct:标点符号 :lower:小写字母 :upper:大写字母 :alpha:大小
9、写字母 :digit:数字 :alnum:数字和大小写字母man 7 glob :说明列表:alpha:*:digit:*:alpha: : 字母开头,中间数字,字母结尾rootlocalhost tongpei# touch a b /创建中间为空白字符的文件rootlocalhost tongpei# ls :alpha:*:space:*:alpha: /通配中间为空白字符的文件a b:匹配指定范围之外的任意单个字符 例:ls 0-9* :除了这个范围之外的 练习:1. 创建a123,cd6,c78m,my,m.z,k 67,8yu,789,hello 123asAD123。2. 显示所
10、有以a或m开头的文件 ls am*3. 显示所有文件名中包含了数字的文件 ls *0-9* 或 ls *:digit:*4. 显示所有以数字结尾且文件名中不包含空白的文件 ls ?5. 显示文件名中白了非字母或数字的特殊符号的文件ls *:alnum:*SHELL的类型:站在用户角度来讲登录式shell:正常通过某终端su - USAERNAMEsu -l USAERNAME非登录式shell:su USERNAME 图形终端下打开命令窗口自动执行的shell脚本bash的配置文件: 全局配置(默认一样的配置,即编辑一个都生效) /etc/profile, /etc/profile.d/*.s
11、h, /etc/bashrc 个人配置(根据个人修改后与他人不同的),只对当前目录生效/.bash_profile,/.bashrc profile 类的文件:设定环境变量(对所有用户生效)运行命令或脚本一般来讲,作用范围越小,越是最终生效的。即个人和全局配置一样根据个人配置为准。 bashrc类的文件: 设定本地变量 定义命令别名登录式shell如何读取配置文件?(依次读取)/etc/profile - /etc/profile.d/*.sh - /.bash _profile -/.bashrc - /etc/bashrc非登录式shell如何配置文件?(依次读取)/.bashrc - /etc/bashrc -/etc/prfile.d/*.shsu -:完整切换,su:不完整切换