你喜欢的话,可以键入set -o vi来使用 vi 风格的快捷键,而set -o emacs可以把它改回来。
键入history查看命令行历史记录。其中有许多缩写,例如!$(最后键入的参数)和!!(最后键入的命令),尽管通常被ctrl-r和alt-.取代。
回到上一个工作路径:cd -
如果你输入命令的时候改变了主意,按下alt-#来在行首添加#,或者依次按下ctrl-a,#,enter。这样做的话,之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。
使用xargs( 或parallel)。他们非常给力。注意到你可以控制每行参数个数(-L)和最大并行数(-P)。如果你不确定它们是否会按你想的那样工作,先使用xargs echo查看一下。此外,使用-I{}会很方便。例如:
pstree -p有助于展示进程树。
使用pgrep和pkill根据名字查找进程或发送信号(-f参数通常有用)。
了解你可以发往进程的信号的种类。比如,使用kill -STOP [pid]停止一个进程。使用man 7 signal查看详细列表。
使用nohup或disown使一个后台进程持续运行。
使用netstat -lntp或ss -plat检查哪些进程在端口(默认是检查 TCP 端口; 使用参数-u检查 UDP 端口)。
有关打开套接字和文件,请参阅lsof。
使用uptime或w来查看系统已经运行多长时间。
使用alias来创建常用命令的快捷形式。例如:alias ll='ls -latr'使你可以方便地执行ls -latr命令。
在 Bash 脚本中,使用set -x去调试输出,尽可能的使用严格模式,使用set -e令脚本在发生错误时退出而不是继续运行,使用set -u来检查是否使用了未赋值的变量,使用set -o pipefail严谨地对待错误(尽管问题可能很微妙)。当牵扯到很多脚本时,使用trap。一个好的习惯是在脚本文件开头这样写,这会使它检测一些错误,并在错误发生时中断程序并输出信息:
在 Bash 脚本中,子 shell(使用括号(...))是一种便捷的方式去组织参数。一个常见的例子是临时地移动工作路径,代码如下:
在 Bash 中,注意到其中有许多形式的扩展。检查变量是否存在:${name:?error message}。例如,当 Bash 脚本需要一个参数时,可以使用这样的代码input_file=${1:?usage: $0 input_file}。数学表达式:i=$(( (i + 1) % 5 ))。序列:{1..10}。 截断字符串:${var%suffix}和${var#prefix}。例如,假设var=foo.pdf,那么echo ${var%.pdf}.txt将输出foo.txt。
使用括号扩展({...})可以减少不必要的重复输入相似文本以及文本组合。
通过使用<(some command)可以将输出视为文件。例如,对比本地文件/etc/hosts和一个远程文件:
了解 Bash 中的“here documents”,例如cat <<EOF ...。
在 Bash 中,同时重定向标准输出和标准错误,some-command >logfile 2>&1。通常,为了保证命令不会在标准输入里残留一个打开了的文件句柄导致你当前所在的终端无法操作,添加</dev/null是一个好习惯。
使用man ascii查看具有十六进制和十进制值的ASCII表。man unicode,man utf-8,以及man latin1有助于你去了解通用的编码信息。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-51206-2.html
就是想说什么就说什么