Shell 应用技巧
Shell是一个命令解释器,是在内核之上和内核交互的一个层面。
Shell有很多种,我们所使用的的带提示符的那种属于/bin/bash,几乎所有的linux系统缺省就是这种shell,很方便做一些管理,通常使用这种shell。
bash应用技巧
命令补齐
命令补齐允许用户输入文件名或命令名起始的若干个字母后,按<Tab>键补齐文件名,命令名,若以此开头的文件名或命令名不唯一,则按一下tab键没反应,按第二下列出所有。若唯一则直接补全。
命令历史
命令历史允许用户浏览先前输入的命令并重新调用他们,用history命令可以显示命令列表,!+命令数字可执行,按方向键 ↑和↓可以找到以前执行过的命令
Clear清屏 ctrl+l(快捷键)
Ctrl+u 删除光标前所有字符
命令别名
命令别名定义:
范例:alias copy=cp
alias xrm=“rm -r”
命令直接写,有选项参数的带双引号
查看别名信息:alias
删除别名信息:unalias copy
可以使操作更简单容易
alias直接列出别名
每个用户自己定义的别名只能自己使用。
输入/输出重定向
同标准I/O一样,shell对于每一个进程预先定义3个文件描述字(0,1,2,)。分别对应于:
0 (STDIN) 标准输入 键盘
1 (STDOUT)标准输出 显示器
2 (STDERR)标准错误输出 显示器
重定向表示输入不是从键盘,输出不是从显示器,标准错误输出不是从显示器
>或>> 输出重定向
范例:ls -l /temp>/tmp.msg 重定向到根目录下tmp.msg中
Date >> /tmp.msg
错误输出重定向
范例:cp -R /usr/backup/usr.bak 2>/bak.error
所谓重定向,就是把原本显示在显示器上的内容输出到文件中。
date查看系统当前时间
>会将文件内容清空,这可能不是我们想要的。
于是我们可以用>>可以追加
输入重定向是指不是从键盘输入,而是从其他地方输入
错误输出重定向
范例:cp -R /usr/backup/usr.bak 2>/bak.error
Usr(unix系统资源,十分重要,有时需要备份,此条命令执行备份,若出错将2写入bak.error,成功什么都不做)
2是什么鬼?
其实0> 0>> 1< 这是输入,输出重定向的标准写法,0,1都可省略。
2> 此时2不可省略,若省略则和输出重定向一样了
管道
管道:讲一个命令的输出传送给另一个命令,作为另一个命令的输入
使用方法:命令1|命令2|命令3.....|命令n
范例:
ls -l /etc | more 分页浏览前边命令执行的结果,空格翻页,回车翻行,q退出
ls -l /etc | grep init 提取与关键词相关的行,并将其列出来
ls -l /etc | grep init | wc -l 在目录etc下包含init的文件有多少个
管道的作用就是让几个简单的命令发挥很大的作用
wc -l 文件名 显示此文件有多少行
命令连接符
;
用;间隔的各命令按顺序依次执行,比如在写系统的计划任务时,让几个命令在后台依次执行。编译内核时就是敲那几个命令,几个命令间隔时间长,此时便可用;使之依次执行,再加个错误判断,将错误写到日志里。
&&
Command1 && comand2
成功 执行
失败 不执行
前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,它后面的命令才被执行
||
Command1 || command2
成功 不执行
失败 执行
前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,他后面的命令才被执行
命令替换符
命令替换:讲一个命令的输出作为另一个命令的参数
格式为:命令1 ‘命令2’(键盘数字一左边的小撇)
范例:ls -l ‘which touch’