技术开发 频道

高效Linux用户需要了解的命令行技能

  3.日常使用命令

  Ctrl-R

  在bash中, Ctrl-R用于在历史命令中搜索。

  Ctrl-W, Ctrl-U, Alt-BackSpace

  bash中,Ctrl-W删除最后一个词,Ctrl-U删除最后一行, Alt-BackSpace 删除光标前的一个词 man readline 中包含了大量bash中的默认热键绑定。

  cd -

  返回前一个工作路径。

  xargs

  非常强大的命令。如果你还不确定是否能正确的执行任务,可以先用xargs echo查看。下面是一个用该功能的例子:

find . -name \*.py | xargs grep some_function
cat hosts | xargs
-l {} ssh root@{} hostname

  parallel

  一个更加强大的命令. 可以实现并行执行任务,并可以分割输入文件, 指定多个节点同时运行命令等功能.详细的功能可以参考这个链接

  pstree -p

  打用进程树的得力工具。

  pgrep,pkill

  使用名字查找进程,或者直接向指定名字的进程发送信号。

  了解用户能发送给进程的一些信号。比如 kill -STOP [pid] ,让pid进程挂起。

  nohup,disown,screen, tmux

  当你需要将进程永远处在后台运行是,这两个命令很有用。

  lsof, netstat -lntp

  查询当前什么进程在监听什么端口。

  set

  在bash脚本中, 使用 set -x 获得debug输出,使用 set -e 获得错误输出。

  ;

  分号用于开启一个子shell并运行至结束后关闭。 例如:

#在当前路径下执行一些命令
(cd
/some/other/dir; other-command)
# 工作路径仍然是当前目录

  了解shell中的多种参数表达式

  ${name:?error message}

  检查某个变量是否存在,若不存在输出 error message。

  ${var%suffix}, ${var#prefix}

  输出var变量除前缀或者后缀外的部分。如下面的代码输出为foo.txt。

var = foo.pdf
echo ${var%pdf}.txt

  <,>

  输入输出重定向操作。

  some_command > logfile 2>&1

  将 some_command 运行过程中的标准输出和标准错误输出都输出到文件logfile中。

  man ascii

  获得一个好用的ASCII表格,包含10进制和16进制的值。

  screen,dtach

  在远程ssh绘画中,使用这两个命令可以保存你的会话,避免因为网络问题导致中断。

  curl, curl -l, wget

  在web页面调试中,这几个命令能帮你下载网页代码,很有用。

  lynx -dump -stdin

  将HTML转换为文本。

  xmlstarlet

  需要处理XML时,这个命令很有用。

  ssh -L, ssh -D

  需要利用远程服务器访问网页时,这命令可以帮助你在远程服务器和你的机器之间建立ssh 隧道。

  ssh连接优化

  如下配置能帮你避免链接丢失,不需要每次都输入yes确认和远程服务器的链接,以及在链接中启用压缩。建议将它放到.ssh/config中。

TCPKeepAlive=yes
ServerAliveInterval
=15
ServerAliveCountMax
=6
StrictHostKeyChecking
=no
Compression
=yes
ForwardAgent
=yes

  在正输入的命令前加#

  命令已经输入一半,忽然间改主意想少收运行时,可以使用 Alt-# 在命令前加‘#’,将整个命令变成注释。这样你稍后就能在命令历史中找到该命令了。

  cron

  可以帮助你制定一些定时执行的计划任务。

  Ctrl-S Ctrl-C

  将一不小心需要大量输出文本时,依次输入这两个操作,比单纯的频繁按Ctrl-C能更快让程序终止。

0
相关文章