bash小技巧
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小技巧的更多相关文章
- bash小技巧1 获取文件当前路径
我们linux获取文件当前路径一般问 #逼格不够高 [root@xxxx]# pwd 高逼格 SHELL_FOLDER=$(dirname $(readlink -f "$0"))
- bash 小技巧
CTRL-R (reverse find),按下之后敲几个字母就能在最近打过的命令里搜索.
- Linux的95个小技巧
Linux的95个小技巧 by WEB全栈工程师 on 2012 年 03 月 27 日 这里总结了Linux使用中的一些小技巧 1.实现RedHat非正常关机的自动磁盘修复 先登录到服务器,然后在/ ...
- MySQL大表DROP删除小技巧(转)
在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务. 那么用一个小技巧,即可轻松平滑的 ...
- Linux查看History记录加时间戳小技巧
Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如[root@servyou_web ~]# history | more ...
- Linux及FL2440使用过程遇到的各种问题和小技巧
原文链接:http://www.cnblogs.com/NickQ/p/8900474.html ## Linux及FL2440使用过程遇到的各种问题和小技巧 关于移植linux根文件系统中的问题 在 ...
- Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器
一.ftp的安装 装个ftp搞了一下午,感觉以前没那么麻烦的呀,结果到晚上才发现是实验室网的问题,换连手机的热点马上可以了,真是尴尬,把基本安装步骤记录一下: 1.检查安装vsftpd软件 使用如下命 ...
- python小技巧 小知识
python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...
- docker的小技巧记录(如果使用了更多会继续添加)
docker小技巧 复制本地sql脚本到docker容器mysql中进行使用 # 找到容器 docker ps # 复制文件 cp ./xxx.sql container-id:/tmp/ # 进入容 ...
随机推荐
- Schwarz积分公式
设$f\in H(B(0,R))\cap C(\overline{B(0,R)})$,且$f=u+iv$,则$f$可用其实部表示为 $$f(z)=\frac{1}{2\pi}\int_{0}^{2\p ...
- Linux常用命令学习8---(用户和用户组管理)
1.用户和用户组 用户和用户组概念 用户:使用操作系统的人(Linux支持多个用户在同一时间登陆同一个操作系统) 用户组:具有相同权限的一组用户(Linux系统中可 ...
- Intent传递list<bean>集合
首先你定义的bean需要继承Serializable接口 //传递list<bean>集合Intent intent = new Intent(ViolationOfTheQueryAct ...
- BFC的深入理解
一:BFC是什么东东 了解BFC前先一了解一下Box和Formatting Context (1)B: BOX即盒子,页面的基本构成元素.分为 inline . block 和 run-in 三种类型 ...
- amd和CMD
AMD(Modules/Asynchronous-Definition).CMD(Common Module Definition)规范区别? Asynchronous Module Definiti ...
- php 小函数
1 变量函数 a.is_xxx函数用来判断变量类型 is_numeric (PHP 4, PHP 5) — 检测变量是否为数字或数字字符串 is_int.is_integer.is_long,判断变 ...
- WebRTC手记之初探
转载请注明出处:http://www.cnblogs.com/fangkm/p/4364553.html WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏 ...
- 在list_*页面显示出一级栏目下的所有二级栏目
<ul class="nav nav-pills nav-stacked"> {dede:channelartlist typeid='1,1'} <div cl ...
- [Android]关于Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED ,修改包名
查了很多,说修改manifest.本来是没有任何的修改,自动生成的,最后发现参考了人家的一篇: http://bbs.csdn.net/topics/390613702 修改包名,包名带了大些的开头了 ...
- [LintCode] Majority Number 求众数
Given an array of integers, the majority number is the number that occurs more than half of the size ...