时间:2023-01-31来源:系统屋作者:zhijie
日常使用
在Bash中,使用 tab 补完参数,使用 ctrl-r 来搜索命令历史。
在Bash中,使用 ctrl-w 来删除最后的单词,使用 ctrl-u 来删除整行,返回行首。使用 alt-b 和alt-f 来逐词移动,使用 ctrl-k 来清除到行尾的内容,以及使用 ctrl-l 清屏。参见 man readline来查看 Bash 中所有默认的键盘绑定,有很多。例如,alt-。 可以循环显示先前的参数,而alt- 扩展通配。(LCTT 译注:关于 Bash 下的快捷键,可以参阅: https://linux.cn/article-5660-1.html)
另外,如果你喜欢 vi 风格的键盘绑定,可以使用 set -o vi。
要查看最近用过的命令,请使用 history 。 有许多缩写形式,比如 !$(上次的参数)和!!(上次的命令),虽然使用 ctrl-r 和 alt-。 更容易些。(LCTT 译注:关于历史扩展功能,可以参阅: https://linux.cn/article-5658-1.html )
返回先前的工作目录: cd -
如果你命令输入到一半,但是改变主意了,可以敲 alt-# 来添加一个 # 到开头,然后将该命令作为注释输入(或者使用快捷键 ctrl-a, #,enter 输入)。然后,你可以在后面通过命令历史来回到该命令。
使用 xargs(或 parallel),它很强大。注意,你可以控制每行(-L)执行多少个项目,以及并行执行(-P)。如果你不确定它是否会做正确的事情,可以首先使用 xargs echo。同时,使用 -I{} 也很方便。样例:
find 。-name ’*.py‘| xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
pstree -p 对于显示进程树很有帮助。
使用 pgrep 和 pkill 来按名称查找进程或给指定名称的进程发送信号(-f 很有帮助)。
掌握各种可以发送给进程的信号。例如,要挂起进程,可以使用 kill -STOP [pid]。完整的列表可以查阅 man 7 signal。
如果你想要一个后台进程一直保持运行,使用 nohup 或 disown。
通过 netstat -lntp 或 ss -plat 检查哪些进程在监听(用于 TCP,对 UDP 使用 -u 替代 -t)。
lsof来查看打开的套接字和文件。
在 Bash 脚本中,使用 set -x 调试脚本输出。尽可能使用严格模式。使用 set -e 在遇到错误时退出。也可以使用 set -o pipefail,对错误进行严格处理(虽然该话题有点微妙)。对于更复杂的脚本,也可以使用 trap。
在 Bash 脚本中,子 shell(写在括号中的)是组合命令的便利的方式。一个常见的例子是临时移动到一个不同的工作目录,如:
# 在当前目录做些事
(cd /some/other/dir; other-command)
# 继续回到原目录
注意,在 Bash 中有大量的各种各样的变量扩展。检查一个变量是否存在:${name:?error message}。例如,如果一个Bash脚本要求一个单一参数,只需写 input_file=${1:?usage: $0 input_file}。算术扩展:i=$(( (i + 1) % 5 ))。序列: {1..10}。修剪字符串:${var%suffix} 和${var#prefix}。例如,if var=foo.pdf ,那么 echo ${var%.pdf}.txt 会输出 foo.txt。
命令的输出可以通过 《(some command) 作为一个文件��处理。例如,将本地的 /etc/hosts 和远程的比较:
diff /etc/hosts 《(ssh somehost cat /etc/hosts)
了解 Bash 中的“嵌入文档”,就像在 cat 《《EOF 。.. 中。
在 Bash 中,通过:some-command 》logfile 2》&1 同时重定向标准输出和标准错误。通常,要确保某个命令不再为标准输入打开文件句柄,而是将它捆绑到你所在的终端,添加 《/dev/null 是个不错的做法。
man ascii 可以得到一个不错的ASCII表,带有十六进制和十进制值两种格式。对于常规编码信息,man unicode,man utf-8 和 man latin1 将很有帮助。
使用 screen 或 tmux 来复用屏幕,这对于远程 ssh 会话尤为有用,使用它们来分离并重连到会话。另一个只用于保持会话的最小可选方案是 dtach。
在 ssh 中,知道如何使用 -L 或 -D(偶尔也用-R)来打开端口通道是很有用的,如从一台远程服务器访问网站时。
为你的 ssh 配置进行优化很有用;例如,这个 ~/.ssh/config 包含了可以避免在特定网络环境中连接被断掉的情况的设置、使用压缩(这对于通过低带宽连接使用 scp 很有用),以及使用一个本地控制文件来开启到同一台服务器的多通道:
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMasterauto
ControlPath/tmp/%r@%h:%p
ControlPersist yes
其它一些与 ssh 相关的选项对会影响到安全,请小心开启,如各个子网或主机,或者在信任的网络中:StrictHostKeyChecking=no, ForwardAgent=yes
要获得八进制格式的文件的权限,这对于系统配置很有用而用 ls 又没法查看,而且也很容易搞得一团糟,可以使用像这样的东西:
stat -c ’%A %a %n‘/etc/timezone
对于从另一个命令的输出结果中交互选择值,可以使用percol。
对于基于另一个命令(如git)输出的文件交互,可以使用fpp (路径选择器)。
要为当前目录(及子目录)中的所有文件构建一个简单的 Web 服务器,让网络中的任何人都可以获取,可以使用: python -m SimpleHTTPServer 7777 (使用端口 7777 和 Python 2)。
2023-01-31
Linux系统如何在Git里撤销操作2023-01-30
Linux替换硬盘已挂载目录的技巧2023-01-30
Fedora 21升级Fedora 22的方法使用DenyHosts能够进行自动屏ip的功能,掌握DenyHosts在Linux系统中的安装是很有必要的,那么在Linux系统中要如何安装DenyHosts工具呢?安装后又要如何配置呢?这都是用户需要学习的。...
2023-01-30
在使用vps安装Linux系统后,发现可用分区不足,这主要是vps安装后没有进行相关配置所致,下面小编就给大家介绍下Linux vps系统盘如何分区,深感分区不同的朋友可以来学习下。...
2023-01-30