Linux 下shell基本上默认是 bash, 下面是我总结的一些技巧。

&  后台运行程序 ,注意退出当前shell后 程序也会退出
()   使用子shell, 比如 (cd ../../commlib/; make) 
$()  命令替换,和 ``的作用是一样的 
<(命令)  把命令的输出到一个临时文件 
<< HereDoc

使用举例:

比如你要在 shell 脚本中 使用 awk 脚本 
awk -f <(cat <<EOF

/abc/{

print $0;


EOF 
)

$(())  执行整数计算 $((66/2)) 
if (( 算术运算 )) 
if [[ 字符串运算 ]]

alias 定义命令别名

.  或 source 命令, 在当前shell中执行脚本,.点执行脚本会生成子shell,source会在当前shell在,所以申明环境变量的时候使用source,

exec 可以重定向当前shell的文件描述符, 或运行另一个程序。

trap 可以捕获信号 查看信号

nohup 防止ssh 挂起导致的问题 
screen 可以用来保持 会话,  不受ssh的关闭影响

export 导出变量给子shell使用

tee 可以 把 输出 分流

 ps -ax | tee processes.txt | more

ENV_VAR=VALUE your_program 这样可以 为这一个程序 修改它环境变量,外部shell的环境变量没有被更改

tac 倒置文件 (倒序)

快速跳至常用目录

你可能已经知道$PATH变量可以列出 bash的“搜索路径”——当在当前目录不能找到请求的文件时,bash会自动搜索的目录。不过,bash也支持$CDPATH变量,当试图改变目录时该变量列出cd命令转向的目录。为了使用这个特性,我们要对$CDPATH变量赋值一个目录列表,如下面的例子所示:

bash> CDPATH='.:~:/usr/local/apache/htdocs:/disk1/backups'

bash> export CDPATH

现在,无论何时使用cd命令,bash将会检查$CDPATH列表中的所有目录来查找要转向的目录名。(默认是家目录)

bash快捷键

 

其它 
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补全.

历史命令

crtl +r  搜索历史命令

!!    重新执行上一条命令 
!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  。 这个很有用, 你可以先查看你选的命令对不对,要执行时再使用!!

定制shell提示符
你可以定制bash shell提示符以显示当前用户名和主机名、当前时间、平均负载和/或当前工作目录。要实现这一点,像下面这样改变$PS1变量:
bash> PS1=’\u@\h:\w \@> ‘
bash> export PS1
root@localhost:/tmp 03:01 PM>

jobs 查看后台程序

fg 将后台程序调到前台

bg 将程序调到后台

crtl +s 锁窗口

crtl +q 解锁窗口

命令行光标移动

^P 、^N、 ^B、 ^F      方向键 上 下 左 右

Alt+shift+F          光标右移一个单词  又可能会和terminal的快捷键冲突

Alt+shift+B          光标左移一个单词

^A 、^E         光标移至行首 行尾

删除命令

^k   清楚光标后至行尾的内容

^u   清楚光标前至行首的内容

^b   删除光标所在的字母

^h   删除光标前一个字符

^w   删除光标前一个单词

^y   粘贴或恢复上次的删除、

^t 或者ESC+t 置换光标位置前的两个字符

ALT+L 将光标后面的字母小写

ALT+U 大写

bash小技巧的更多相关文章

  1. bash小技巧1 获取文件当前路径

    我们linux获取文件当前路径一般问 #逼格不够高 [root@xxxx]# pwd 高逼格 SHELL_FOLDER=$(dirname $(readlink -f "$0"))

  2. bash 小技巧

    CTRL-R (reverse find),按下之后敲几个字母就能在最近打过的命令里搜索.

  3. Linux的95个小技巧

    Linux的95个小技巧 by WEB全栈工程师 on 2012 年 03 月 27 日 这里总结了Linux使用中的一些小技巧 1.实现RedHat非正常关机的自动磁盘修复 先登录到服务器,然后在/ ...

  4. MySQL大表DROP删除小技巧(转)

    在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务. 那么用一个小技巧,即可轻松平滑的 ...

  5. Linux查看History记录加时间戳小技巧

    Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如[root@servyou_web ~]# history | more ...

  6. Linux及FL2440使用过程遇到的各种问题和小技巧

    原文链接:http://www.cnblogs.com/NickQ/p/8900474.html ## Linux及FL2440使用过程遇到的各种问题和小技巧 关于移植linux根文件系统中的问题 在 ...

  7. Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器

    一.ftp的安装 装个ftp搞了一下午,感觉以前没那么麻烦的呀,结果到晚上才发现是实验室网的问题,换连手机的热点马上可以了,真是尴尬,把基本安装步骤记录一下: 1.检查安装vsftpd软件 使用如下命 ...

  8. python小技巧 小知识

    python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...

  9. docker的小技巧记录(如果使用了更多会继续添加)

    docker小技巧 复制本地sql脚本到docker容器mysql中进行使用 # 找到容器 docker ps # 复制文件 cp ./xxx.sql container-id:/tmp/ # 进入容 ...

随机推荐

  1. Redis初探

    Redis如今已经成为Web开发社区中最火热的内存数据库之一,而他的诞生距离现在不过才6年的时间,随着Web2.0的蓬勃发展,网站数据快速增长,对高性能读写的需求也越来越多,再加上半结构化的数据比重逐 ...

  2. Java基本数据类型与位运算

    >>赋值运算符 赋值使用操作符“=”.它的意思是“取右边的值(即右值),把它复制给左边(即左值)”.右值可以是任何 常数.变量或者表达式 (只要它能 生成 一个值就行).但左值必须是一个明 ...

  3. 无废话ExtJs 入门教程十九[API的使用]

    无废话ExtJs 入门教程十九[API的使用] extjs技术交流,欢迎加群(201926085) 首先解释什么是 API 来自百度百科的官方解释:API(Application Programmin ...

  4. Power BI FAQ

    关于Power BI,最近一直想写点什么,但是也想不到写什么.直到前几天,有个朋友在qq加我,问了我好几个问题,我发现都是一些很有代表性的问题,所以都记录了下来,特意整理了一下分享出来,希望能帮到更多 ...

  5. Sublime Text3 安装markdown插件

    1.打开Sublime Text,使用快捷键 ctrl+` (左上角Tab键上方,Esc键下方)或者使用菜单 View > Show Console menu,此时将出现Sublime Text ...

  6. Hadoop学习笔记(1) 初识Hadoop

    1. Hadoop提供了一个可靠的共享存储和分析系统.HDFS实现存储,而MapReduce实现分析处理,这两部分是Hadoop的核心. 2. MapReduce是一个批量查询处理器,并且它能够在合理 ...

  7. Java基础知识点2:hashCode()方法

    hashCode()方法基本实现 hashCode方法是Java的Object类所定义的几个基本方法之一.我们可以深入到Object类的源码中去查看: public native int hashCo ...

  8. js实现去重字符串

    实现去重字符串主要是把重复的字符与原来的字符(先push()进入一个数组存起来)相匹配,如果match返回的不是null则说明重复,就删除掉: <script> var str = pro ...

  9. NOI 题库 7084

    7084  迷宫问题 描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, ...

  10. 尝试封装适用于权限管理的通用API

    谈谈我对权限系统的简单理解 最近一段时间在研究权限系统,在园子里看到个很牛逼的开源的基于DDD-Lite的权限管理系统,并有幸加入了作者的QQ群,呵呵,受到了很大的影响.对于权限管理我有我自己的一些简 ...