Linux用户必知之节省工作时间的技巧(上)

        作为一名程序员或者系统管理员,我们经常需要在unix-like(比如Linux)平台下工作。当我们第一次使用unix-like系统,面对一个黑漆漆的屏幕,我们不知道它背后在做些什么,这是一件多么糟糕的事情!然而,如果我们能够掌握一些工具,那么我们会发现unix-like系统的美妙之处。这种系统快速、高效,非常完美。下面是一些重要的使用技巧,来帮助初学者使用Linux。

        这篇文章稍微有点长,希望大家能耐心看。要获得下面提到的任何一个命令的详细信息,请使用“man”命令。最好的学习方式就是在实际操作任何一个命令之前,先阅读该命令的参考手册。这篇文章是由Joshua Levy总结的,并由血蝙蝠小组成员unix1986翻译而来。


基本的内容:

  • 学习基本的Bash。实际上,可以完整地阅读bash的man page(即man bash的内容);man bash的内容非常容易理解,而且不是很长。可能shell相对来说更简单些,但是bash却很强大而且任何版本的linux上都可以获得(如果以zsh或者tcsh这些shell为学习对象,适用环境会比较受限制)。
  • 学习vim。从随处可以使用的角度来说,vim是任何编辑器无法媲美的。(即使是强大的Emacs或者Eclipse)。
  • 了解ssh和ssh的无密码验证方式。比如通过ssh-agent,ssh-add等进行无密码验证登陆。
  • 熟悉bash的作业管理机制。比如&,Ctrl-Z,Ctrl-C,jobs,fg,bg,kill等命令。
  • 了解基本的文件管理机制。ls和ls -l(特别是该命令的每个字段的含义),less,head,tail和tail -f ,ln 和 ln -s(了解硬链接和软链接的不同和优缺点),chown,chmod,du(快速获取磁盘摘要信息:du -sk *),df,mount。
  • 了解基本的网络管理命令:ip,ifconfig,dig。
  • 掌握正则表达式和grep/egrep的常用选项:-o,-A,-B都是值得记住的。
  • 学会使用apt-get或者yum(看你使用的是Linux的哪个发行版本)来安装软件包。
每天都会用到的命令:

  • 在bash中,通过快捷键Ctrl-R可以在使用命令历史记录中快速查找近期使用过的命令。
  • 在bash中,使用Ctrl-W删除最后输入的一个单词,使用Ctrl-U删除整个命令行。通过命令“man readline”可以查看缺省的快捷键设置。其中有很多,比如Alt+.可以使用上一条命令的参数作为当前命令的参数,Alt+*可以一次性输入下一个字符若干个。注意:有些快捷键在ssh客户端下不可用!
  • 回到上一次所在的目录:cd -
  • 学会使用xargs,这是一个非常强大的命令。
  • pstree -p显示进程树。
  • 使用pgrep和pkill通过进程名称查找进程或给进程发送信号(-f选项很有用)
  • 熟悉可以发送给进程的各种信号。举个列子,挂起一个进程,可以使用 kill -STOP [pid] .要知道所有信号,使用命令man 7 signal。
  • 使用nohup或disown使得一个后台进程长时间保持运行。
  • 通过命令netstat -lntp查看哪些进程处于监听状态。同时,要了解lsof命令。
  • 在编写bash脚本时,使用set -x调试脚本,使用set -e终止出错的脚本。使用set -o处理管道错误,这个用法有些精细。对于进阶的脚本编程,考虑使用trap命令。
  • 在bash脚本编程中,子shell(写在括号中的内容)便于成组的使用命令。一个常见的例子是临时更换目录,比如:
# do something in current dir
(cd /some/other/dir; other-command)
#continue in original dir
  • 在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。
  • 通过输入重定向,一个命令的输出可以作为一个输入文件,比如,比较本地文件/etc/hosts和远程的一个文件:diff /etc/hosts <(ssh somehost cat /etc/hosts)
  • Know about "here documents" in bash, as in cat < (备注:这句真不知道如何翻译,在ubuntu下试cat < 报错!没用过这个)
  • 在bash中,同时重定向标准输出和标准错误,这样使用:some-command >logfile 2>&1. (Often,to ensure a command does not leave an open file handle to standard input, tying it to the terminal you are in, it is also good practice to add ")(备注:括号里这句翻译不好)
  • 使用“man ascii”查看ascii码表。
  • 在远程ssh回话中,使用screen或dtach保存回话,以免中断。(ubuntu上测没找到这两个命令)。
  • 对于web调试,curl和curl -I是手头必备的,等价的还有wget。
  • 转换HTML为文本文件:lynx -dump -stdin.
  • 如果必须处理XML,xmlstartlet是很好的工具。
  • 对于Amazon S3,s3cmd是很方便的工具(尽管不是很成熟,偶尔还会有错误)。
  • 在使用ssh时,了解port tunnel通过使用-L或-D或-R是很有用的,比如,通过web站点访问远程机器。
  • 对你使用的ssh配置进行一些优化是有必要的。比如,.ssh/config中包含了在某种网络环境下避免丢失链接的配置,必须要链接验证,前向验证和压缩(这对于低带宽的链接很有用):
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
StrictHostKeyChecking=no
Compression=yes
ForwardAgent=yes
  • 如果在你输入一条命令时,半途改变了主意,可以通过键入Alt-#,来注释掉这次输入,或者使用Ctrl-A,然后输入#来达到注释的目的,这个不适用于一些ssh客户端。

未完,待续。。。

类似资料链接:

                     《掌握Awk命令》 blog&pdf

                     《掌握Sed命令》 blog&pdf

你可能感兴趣的:(linux,命令,程序员,服务器,vim)