打印
[嵌入式linux]

关于BASH 实用技巧大全

[复制链接]
1646|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunplusedu2012a|  楼主 | 2012-11-29 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都知道Linux 下shell基本上默认是 bash, 下面是我总结的关于BASH 实用技巧大全:
  &  后台运行程序
  ()   使用子shell,比如 (cd //commlib/; make)
  $()  命令替换,和 ``的作用是一样的
  <(命令)  把命令的输出到一个临时文件
  《 HereDoc
  使用举例:
  比如你要在 shell 脚本中 使用 awk 脚本
  awk -f <(cat 《EOF
  /abc/{
  print $0;
  }
  EOF
  )
  $(())  执行整数计算$((66/2))
  if (( 算术运算 ))
  if [[ 字符串运算 ]]
  alias 定义命令别名
  dot .  或source 命令, 在当前shell中执行脚本
  exec 可以重定向当前shell的文件描述符, 或运行另一个程序。
  trap 可以捕获信号
  nohup 防止ssh 挂起导致的问题
  screen 可以用来保持 会话, 不受ssh的关闭影响
  export 导出变量给子shell使用
  tee 可以 把 输出 分流
  ENV_VAR=VALUE your_program 这样可以 为这一个程序 修改它环境变量,外部shell的环境变量没有被更改
  tac 倒置文件
  目录跳转
  cd -   快速回到前一个路径
  cd  回到用户的home目录
  pushd, popd, dirs 实现多目录跳转
  pushd 命令用来更改您的当前目录并将其存储在堆栈中。 popd 命令用来从堆栈的顶部移除目录并使您返回该位置。dirs 命令来显示当前目录堆栈。(dir v p)
  pushd +n; popd +n 可以操作虚拟目录堆栈
  快速跳至常用目录
  你可能已经知道$PATH变量可以列出 bash的搜索路径”——当在当前目录不能找到请求的文件时,bash会自动搜索的目录。不过,bash也支持$CDPATH变量,当试图改变目录时该变量列出cd命令转向的目录。为了使用这个特性,我们要对$CDPATH变量赋值一个目录列表,如下面的例子所示:
  bash>CDPATH='.:~:/usr/local/apache/htdocs:/disk1/backups'
  bash> export CDPATH
  现在,无论何时使用cd命令,bash将会检查$CDPATH列表中的所有目录来查找要转向的目录名。
  特殊参数
  1) $*: 代表所有参数,其间隔为IFS内定参数的第一个字元
  2) $@: 与*星号类同。不同之处在於不参照IFS
  3) $#: 代表参数数量
  4) $?: 执行上一个指令的返回值
  5) $-: 最近执行的foreground pipeline的选项参数
  6) $$: 本身的Process ID
  7) $!: 执行上一个背景指令的PID
  8) $_: 显示出最後一个执行的命令
  bash快捷键
  Emacs风格
  ctrl+p: 方向键 上 ↑
  ctrl+n: 方向键下 ↓
  ctrl+b: 方向键 ←
  alt+f: 光标右移一个单词
  ctrl+f :方向键 →
  alt+b: 光标左移一个单词
  ctrl+a:光标移到行首
  ctrl+e:光标移到行尾
  ctrl+k:清除光标后至行尾的内容。
  ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符
  ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
  ctrl+m : 输入回车
  ctrl+i : 输入tab
  ctrl+[ : 输入esc
  其它
  ctrl+h:删除光标前一个字符,同 backspace 键相同。
  alt + p 非增量方式反向搜索历史
  alt + > 历史命令列表中的最后一行命令开始向前
  ctrl+u: 清除光标前至行首间的所有内容。
  ctrl+w: 移除光标前的一个单词
  ctrl+t: 交换光标位置前的两个字符
  ctrl+y: 粘贴或者恢复上次的删除
  ctrl+l:清屏,相当于clear。
  ctrl + xx 光标在行头与行尾进行跳转
  alt+r 撤销当前行的所有内容
  ctrl+z : 把当前进程转到后台运行
  ctrl+s : 锁住屏幕
  ctrl+q : 恢复屏幕
  ctrl+v key: 输入特殊字符
  alt + l 将当前光标处之后的字母转化成小写字母
  alt + u 将当前光标处之后的字母转化成大写字母
  ctrl + Alt + e 扩展命令行的内容(例如:ls  => ls  -l  --color=tty)
  ctrl+c:杀死当前进程, 输入模式下,中断输入的命令。
  ctrl+d:退出当前 Shell
  esc + . 快捷键可以轮询历史命令的参数或选项。
  esc + t 快捷键可以 置换前两个单词。
  输入重复字母 Esc {100} e 可以输入100个e字符
  按多次{esc}可以补全
  {esc}{~}可以补全本机上的用户名
  {esc}{/}可以补全文件名
  {esc}{@}可以补全主机名,localhost可以方便地用 lo补全。
  Bang Bang 历史命令
  !!    重新执行上一条命令
  !N  重新执行第N条命令。比如!3
  !-N 重新执行倒数第N条命令。!-3
  !string  重新执行以字符串打头的命令。比如 !vim
  !?string?  重新执行包含字符串的命令。比如 !?test.cpp?
  !?string?%  替换为:最近包含这个字符串的命令的参数。比如:   vim !?test.cpp?%
  !$   替换为:上一条命令的最后一个参数。比如vim !$
  !!string  在上一条命令的后面追加string ,并执行。
  !Nstring  在第N条指令后面追加string,并执行。
  ^old^new^  对上一条指令进行替换
  修饰
  :s/old/new/  对第N条指令中第一次出现的new替换为old。比如 vim !?test.cpp?:s/cpp/c/
  :gs/old/new/  全部替换
  :wn  w为数字, 取指令的第w个参数。
  :p 回显命令而不是执行, 比如 !ls:p  。 这个很有用, 你可以先查看你选的命令对不对,要执行时再使用!!
  Bash相关文件
  /etc/profile 设置环境变量(所有用户)
  ~/.bash_profile 设置环境变量(当前用户)
  ~/.bashrc
  ~/.bash_history
  ~/.bash_**ut

相关帖子

沙发
cooran| | 2012-11-29 16:51 | 只看该作者
学习一下

使用特权

评论回复
板凳
现在努力吧| | 2012-12-2 16:17 | 只看该作者
看一下

使用特权

评论回复
地板
jxyfdlh1987| | 2012-12-11 17:13 | 只看该作者
初学,看下不错!

使用特权

评论回复
5
tracyjk| | 2012-12-13 13:57 | 只看该作者
学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我很懒,什么也没有留下

49

主题

78

帖子

1

粉丝