Linux命令行技巧 + 快速提高vi/vim使用效率途径 + 解决 ubuntu 13.10下eclipse菜单栏失效

来源:互联网 发布:怎么看数据库编码格式 编辑:程序博客网 时间:2024/05/01 04:26


下面我将和大家分享一些学习Linux命令行的技巧,希望能对大家有所助益。如果在本文中遇到不太熟悉的命令,可以在终端中键入以下命令寻求帮助。

  1. Man <command> 

Where there's a shell, there's a way.

 Linux入门必备

  • 了解bash:没有必要钻研长篇累牍的bash使用手册,通过man bash学习即可。
  • 了解vi:你在工作中也许会使用Emacs或Eclipse,但vi不可替代。
  • 了解ssh:学习无密码验证的基础知识。
  • bash作业管理基础知识:如使用&、Ctrl-C、fg、bg、Ctrl-Z、jobs和kill等。
  • 文件管理命令:如硬链接和软链接,权限等。
  • 网络管理命令:如ifconfig等。
  • 如何使用正则表达式,如何使用grep、sed等。
  • 学习使用apt-get和yum管理软件包。

提升日常工作效率

  • 在bash中,可以使用Ctrl+R命令搜索命令行历史记录。
  • 在bash中,可以使用Ctrl+W删除最后一个单词,使用Ctrl+U删除整行。
  • 使用cd -命令返回之前的工作目录,使用cd ..命令返回上层目录。
  • 学习如何使用xargs:
  1. $ find . -name *.py | xargs grep some_function  
  2. $ cat hosts | xargs -I{} ssh root@{} hostnameX 
  • 使用pstree -p命令查看进程树。
  • 了解不同的信号。例如,使用kill -STOP [PID]终止进程。详细的信号列表可以在man 7 signal中查看。
  • 如果你想让进程永远在后台运行,可以使用nohup和disown命令。
  • 使用netstat -lntp命令查看侦听进程,并参考lsof命令。
  • 在bash脚本中使用subshells对命令进行分组:
  1. #do something in current dir  
  2. (cd /some/other/dir; other-command)  
  3. #continue in original dir 
  • 字符串修剪(Trimming Strings):${var%suffix}和${var#prefix}。例如if var=foo.pdf then echo ${var%.pdf}.txt prints "foo.txt"。
  • 命令的输出可以当做文件使用。例如,比较本地和远程的/etc/hosts文件:
  1. diff /etc/hosts <(ssh somehost cat /etc/hosts) 
  • 了解bash中的“here documents”。
  • 了解标准输出和标准错误重定向。
  • 了解ASCII代码表。可以在终端中运行man ascii命令作为参考。
  • 当通过ssh远程工作时,可以使用screen 或 dtach保存回话。
  • 对Web开发者而言,curl、wget等命令非常实用。
  • 将HTML页面转化文本文件:
  1. lynx -dump -stdin 
  • 如果要掌握XML,xmlstarlet命令是非常好的工具。
  • 了解ssh端口映射。
  • 使用Alt+shift+3快捷键可以在行前添加注释“#”。

数据处理

  • 了解sort和uniq命令。
  • 了解cut、paste和join命令。
  • 了解如何对文本文件做交集、并集和差集:
  1. cat a b | sort | uniq > c # c is a union b  
  2. cat a b | sort | uniq -d > c # c is a intersect b  
  3. cat a b b | sort | uniq -u > c # c is set difference a – b 
  • 对文本文件的第二列做摘要,下面的代码要比同样的Python代码更精炼、快速(3倍):
  1. awk '{ x += $2 } END { print x }' 
  • 了解字符串和grep命令。
  • 文件分割:了解split(按大小分割)和csplit(按匹配分割)命令。

系统诊断

  • 使用iostat、netstat、top和dstat命令查看磁盘、处理器和网络的状态。
  • 使用free、vmstat等命令了解系统内存状态。
  • 使用mtr网络诊断工具。
  • 使用iftop、nethogs等工具查看占用带宽的进程和带宽。
  • 使用ab工具快速洞悉Web服务器的性能。
  • 以wireshark和tshark命令应对复杂网络诊断。
  • 学习如何使用strace,并用于诊断运行的进程。这对分析程序运行错误的原因,非常有帮助。
  • 使用ldd命令查看共享库文件。
  • 了解如何使用gdb连接到运行中的进程,并进行堆栈跟踪。
  • 有关/proc的知识非常重要。
  • 如何诊断已发生的错误?Sar命令是一种很好的选择,它可以收集、保存并报告系统信息。


==================================================================================================

快速提高vi/vim使用效率途径

转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/

引言

   Vi 最初是由 Bill Joy 在 1976 年编码实现的。而 Vim (Vi IMproved) 则是改进的 Vi,由 Bram Moolenaar 在 1991 年开发并发布。Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在没有图形界面的情况下,更是离不开 Vi/Vim。Vi/Vim 命令非常多、用法极为灵活,掌握起来有一定的难度。详细介绍 Vi/Vim 使用方法的文章有很多,因而本文就不一一述及 Vi/Vim 的诸多功能及命令。本文作者将结合自己的使用经验,分七个方面着重介绍哪些原则、途径或命令能快速提高 Vi/Vim 文件编辑效率,从而达到事半功倍的效果。本文述及的途径或命令均只针对系统默认配置的 Vi/Vim。关于 Vi/Vim 各种定制后的功能不在本文讨论范围之列。(注:本文中提到的所有命令均在 Red Hat Enterprise Linux Server release 6.1 上测试通过。)

Vi/Vim 版本的选择

  “工欲善其事,必先利其器”。在 Vi/Vim 版本的选择上,原则是“能用 Vim 就不要使用 Vi;能用最新版就不要守着旧版本”。Vim 提供的功能和特性要比 Vi 多得多,如语法加亮着色功能等。就使用效果及效率来说,编辑同样的文件,使用 Vim 更胜一筹;就版本来说,新版的往往会修复旧版的一些缺陷及不足。这就要求我们在可能的情况下一定要使用最新版的 Vim。

小技巧:

  在 Linux 下,如果以 root 用户登录系统的话,通过 vi 命令打开的 Vim 编辑器往往只加载最基本的功能,像语法加亮着色的功能基本上没有。在 root 用户下使用 Vim 所有功能的技巧是用 vim 命令打开 Vim 编辑器。

启动及关闭 Vi/Vim

  打开及关闭 Vi/Vim 的方法有很多,既可以只启动 Vi/Vim 编辑器本身,也可以在启动 Vi/Vim 编辑器的同时打开一个或多个文件;既可以放弃存盘退出,也可以只保存文件的一部分。以下为相关命令列表:


表 1. 启动及关闭 Vi/Vim 的基本命令
功能命令说明启动vi 打开 Vi/Vim
vi <file> 打开 Vi/Vim 并加载文件 <file>

退出ZQ 无条件退出 
:q! 无条件退出 
ZZ 存盘并退出 
:wq 存盘并退出

保存部分文件:m,nw <file> 将 m 行到 n 行部分的内容保存到文件 <file> 中 
:m,nw >> <file> 将 m 行到 n 行的内容添加到文件 <file> 的末尾


  掌握并熟练这些基本命令是使用 Vi/Vim 的基本要求。只有这样,才能在实际使用过程中做到按需选择,灵活使用,提高 Vi/Vim 的使用效率。需要说明的一点是:在使用 Vi/Vim 的时候,有时想临时退出 Vi/Vim,转到 shell 环境里去做一些操作,等这些操作结束后,再继续回到刚才的 Vi/Vim 状态。针对这一经常碰到的现实需求,很多人在大多数情况下会将保存退出 Vi/Vim,进入 shell 执行操作,然后再重新打开刚才编辑的文件。其实这是一个很低效的方法,因为再次打开需要重新定位刚才编辑的地方,麻烦不说,Vi/Vim 编辑器的状态也完全不一样了。其实,有两种方法可以可以实现临时退出 Vi/Vim、进入 shell 环境后再回来的要求:

方法一:使用 Ctrl-z 以及 fg 这两个命令组合。

  这一解决方法主要利用了 Linux/Unix 的作业机制。具体原理是:Ctrl-z 命令将当前的 Vi/Vim 进程放到后台执行,之后 shell 环境即可为你所用;fg 命令则将位于后台的 Vi/Vim 进程放到前台执行,这样我们就再次进入 Vi/Vim 操作界面并恢复到原先的编辑状态。

方法二:使用行命令 :sh。

  在 Vi/Vim 的正常模式下输入 :sh即可进入 Linux/Unix shell 环境。在要返回到 Vi/Vim 编辑环境时,输入 exit 命令即可。

  这两种方法实现机制不一定,但效果一样,都非常快捷有效。

移动光标

   Vi/Vim 中关于光标移动的命令非常多,这也是很多人经常困惑并且命令用不好的地方之一。其实 Vi/Vim 中很多命令是针对不同的操作单位而设的,不同的命令对应不同的操作单位。因而,在使用命令进行操作的时候,首先要搞清楚的就是要采用哪种操作单位,也就是说,是要操作一个字符,一个句子,一个段落,还是要操作一行,一屏、一页。单位不同,命令也就不同。只要单位选用得当,命令自然就恰当,操作也自然迅速高效;否则,只能是费时费力。这也可以说是最能体现 Vi/Vim 优越于其它编辑器的地方之一,也是 Vi/Vim 有人爱有人恨的地方之一。在操作单位确定之后,才是操作次数,即确定命令重复执行的次数。要正确高效的运用 Vi/Vim 的各种操作,一定要把握这一原则:先定单位再定量。操作对象的范围计算公式为:操作范围 = 操作次数 * 操作单位。比如:5h 命令左移 5 个字符,8w 命令右移 8 个单词。

   注:有些操作单位(如文件)是不能加操作次数。具体说明请参考 Vi/Vim 使用手册。

   Vi/Vim 中操作单位有很多,按从小到大的顺序为(括号内为相应的操作命令):字符(h、l)→ 单词 (w、W、b、B、e) → 行 (j、k、0、^、$、:n) → 句子((、))→ 段落({、})→ 屏 (H、M、L) → 页(Ctrl-f、Ctrl-b、Ctrl-u、Ctrl-d) → 文件(G、gg、:0、:$)。

  具体命令解释如下:


表 2. 移动光标的基本命令
操作单位命令说明字符h 左移一字符 
l 右移一字符

单词w/W 移动到下一单词的开头 
b/B 移动到上一单词的开头 
e/E 移动到光标所在单词的末尾
W、B、E 命令操作的单词是以空白字符(空格、Tab)分隔的字串,比如字符串“str1-str2 str3-str4”,对 W、B、E 命令来说是两个单词,而对 w、b、e 命令来说则是四个单词。j 下移一行 
k 上移一行 
0 移到当前行开头 
^ 移到当前行的第一个非空字符 
$ 移到当前行末尾 
:n 移动到第 n 行
0 为数字零(zero)句子) 移动到当前句子的末尾 
( 移动到当前句子的开头

段落} 移动当前段落的末尾 
{ 移到当前段落的开头

H 移动到屏幕的第一行 
M 移动到屏幕的中间一行 
L 移动到屏幕的最后一行

Ctrl-f 向前滚动一页 
Ctrl-b 向后滚动一页 
Ctrl-u 向前滚动半页 
Ctrl-d 向后滚动半页

文件G 移动到文件末尾 
gg 移动到文件开头 
:0 移动到文件第一行 
:$ 移动到文件最后一行
0 为数字零(zero)

  除了这些基本单位之外,还有 %(跳转到与之匹配的括号处),`.(跳转到最近修改过的位置并定位编辑点),'.(跳转到最近修改过的位置但不定位编辑点)这三个命令也非常重要,在 Vi/Vim 中灵活使用会极大提高效率。% 除用于光标移动之后,还可用于检测源码中各种括号的匹配情况。

文本编辑

  与光标移动一样,Vi/Vim 中关于编辑操作的命令也比较多,但操作单位要比移动光标少得多。按从小到大的顺序为(括号内为相应的操作命令):字符 (x、c、s、r、i、a)→ 单词 (cw、cW、cb、cB、dw、dW、db、dB) → 行 (dd、d0、d$、I、A、o、O) → 句子((、))→ 段落({、})。这些操作单位有些可以加操作次数。操作对象的范围计算公式为:操作范围 = 操作次数 * 操作单位。比如:d3w 命令删除三个单词,10dd 命令删除十行。

  具体命令解释如下:


表 3. 文本编辑的基本命令
操作单位命令说明字符x 删除光标位置的字符 
c 更改当前字符并进入插入模式 
s 替换光标位置的字符并进入插入模式 
r 替换光标位置的字符但不进入插入模式 
i 在当前位置的字符之前进入插入模式 
a 在当前位置的字符之后进入插入模式

单词cw/cW 删除当前单词从光标开始的部分并进入插入模式 
cb/cB 删除当前单词从光标所在位置至单词开始的部分并进入插入模式 
dw/dW 删除当前单词从光标开始的部分但不进入插入模式 
db/dB 删除当前单词从光标所在位置至单词开始的部分但不进入插入模式
cW、cB、dW、dB 命令操作的单词是以空白字符(空格、Tab)分隔的字串,比如字符串“str1-str2 str3-str4”,对 cW,cB,dW,dB 命令来说是两个单词,而对 cw、cb、dw、db 命令来说则是四个单词。dd 删除当前行 
d0 删除从当前光标开始到行末的内容 
d$ 删除从当前光标开始到行末的内容 
I 在当前行的行首进入插入模式 
A 在当前行的行尾进入插入模式 
o 在当前行下方另起一行进入插入模式 
O 在当前行上方另起一行进入插入模式
  • d0 命令中的 0 为数字零
  • o 为小写英文字母 [əu]
  • O 为大写英文字母 [əu]
句子d) 删除当前句子从光标位置开始到句末的内容 
d( 删除当前句子从光标位置开始到句首的内容

段落d} 删除当前段落从光标位置开始到段末的内容 
d{ 删除当前段落从光标位置开始到段首的内容


  除上述最基本的文本编辑命令这外,Vi/Vim 还提供了许多其它的编辑命令或相关组合。使用这些命令或相关组合往往在极大提高文本编辑的效率与速度。现将这些命令按功能列如表下:


表 4. 文本编辑的高效命令
功能命令说明复制与粘贴yw 复制当前单词从光标开始的部分 
yy 复制光标所在行的所有字符 
p 将最后一个删除或复制文本放在当前字符 
P 将最后一个删除或复制文本放在当前字符之前
配合操作数使用可快速拷贝编辑文本撤消与重做u 撤消更改 
Ctrl-R 重做更改
非常实用的一个命令重复操作. 重复上次操作
  • . 为小数点(dot)
  • 配合光标移动命令使用;
  • 不用重复输入先前的复杂命令即可在不同的地方做同样的操作,有点象 MS Office 的格式刷
交换相邻字符或行xp 交换光标位置的字符和它右边的字符 
ddp 交换光标位置的行和它的下一行

大小写转换~ 将光标下的字母大小写反向转换 
guw 将光标所在的单词变为小写 
guw 将光标所在的单词变为小写 
gUw 将光标所在的单词变为大写 
guu 光标所在的行所有字符变为小写 
gUU 光标所在的行所有字符变为大写
g~~ 光标所在的行所有字符大小写反向转换

取得外部输入: r!<cmd> 将命令 <cmd> 的输出结果插入到当前光标所在位置 
:r <file> 将文件 <file> 读入到当前光标所在位置

排序:1,$!sort 将文件内的所有内容排序
加入行号:%!nl 在所有非空行前加入行号 
:%!nl -ba 在所有行前加入行号
利用 Linux 命令 nl 来实现的缩进>> 右缩进(可配合操作数使用)
<< 左缩进(可配合操作数使用)
配合操作数使用,在编辑源码的时候非常有用。自动补全Ctrl-p 自动补全在编写代码的时候非常有用。比如,输入 prin 后按 Ctrl-p 将自动帮你输入 printf 函数名后面的部分,同时将相关备选函数在底下列出来。显示当前编辑文件名Ctrl-g 显示当前编辑文件名及行数可以在不退出 Vi/Vim 情况下了解当前编辑文件的信息显示字符内码ga 显示光标所在字符的内码(包括十进制码,十六进制码以及八进制码)显示的内码为当前 encoding 下的内码

文本搜索与替换

   Vi/Vim 用于文本搜索的主要有下面的三个基本命令:


表 5. 文本搜索的基本命令
功能命令说明搜索/ 在文件中向前搜索
? 在文件中向后搜索
  • 可使用正则表达式
  • 可配合操作数使用,比如 3/str 向前搜索字串 str 并将光标移到第三个找到的串
搜索下一个n 搜索下一个 
N 反向搜索下一个
  • 可使用正则表达式
  • 可配合操作数使用,比如命令 3N 反向搜索第三个匹配的字符串

  除这三个基本命令之外,还有以下三个非常有效快捷的与搜索查找有关的命令:


表 6. 文本搜索的高效命令
功能命令说明快速搜索* 在文件中向前搜索当前光标所在的单词 
# 在文件中向后搜索当前光标所在的单词
非常快捷的搜索命令显示搜索命令历史q/ 显示搜索命令历史的窗口 
q? 显示搜索命令历史的窗口
可以选择重用以前用过的搜索查找命令查找帮助Shift-k 查找光标所在命令或函数的 man 帮助
  • 可以在不退出 Vi/Vim 情况下快速查询命令或函数的使用方法;
  • 按 q 键退出 man 帮助

  关于替换主是要结合搜索使用行命令来实现,命令格式为:

     :m,ns/str1/str2/g 将 m 行到 n 行中的字串 str1 全部替换为字串 str2。

  在众多使用正则表达式进行替换的命令中,平时需要掌握的一个命令是如何快速去除 ^M 字符。在 Linux/Unix 系统中编辑 Windows 操作系统中生成的文件时,如果上传时回车换行符处理不正确的话,用 Vi/Vim 打开经常会出现 ^M 字符。如果上传的文件是 shell 脚本的话,即使赋予了正确的执行权限该脚本还是无法运行。这也是各种文件在 Linux/Unix 和 Windows 中传输经常会出现问题的地方之一。其实,在 Vi/Vim 中使用替换命令 :1,$s/^M//g即可以很容易地快速去掉 ^M 字符。这里需要注意的是 ^M 是使用 Ctrl-v、Ctrl-m 输入的。

执行外部命令

  在 Vi/Vim 中还可以在正常模式下执行各种外部命令,命令格式如下:


表 7. 执行外部命令格式
功能命令说明执行外部命令:!<cmd> 执行外部命令 <cmd>在正常模式下输入该命令显示命令行命令历史q: 显示命令行命令历史的窗口可以选择重用以前用过的命令行命令

  其中命令 q:会显示使用过的行命令历史,可以从中选择重用以前用过的命令。这对于需要重复应用那些复杂的命令来说,非常方便快捷。

Vi/Vim 设置

   Vi/Vim 有很多内部变量,可以根据需要进行相应的设置。变量类型不同往往设置方式也不一样,简单的只要设置特定的变量名即可,复杂的则需要指定和分配一个显式值来设置变量。在实际应用中,如果有需要,请参考 Vi/Vim 的使用手册。这里主要列出大家经常使用并能提高编辑效率的一些设置命令:


表 8. Vi/Vim 设置命令
功能命令说明查看设置的当前值:set all 查看 vi 或 Vim 中设置的所有选项的当前值 
:set <option>? 查看特定选项 <option> 的当前值

设置行号显示与否:set number 显示行号 
:set no number 取消行号显示
命令的简写形式:
:set nu 
:set no nu
设置自动缩进:set autoindent 设置自动缩进 
:set no autoindent 取消自动缩进设置
命令的简写形式:
:set ai
:set no ai
设置缩进宽度:set shiftwidth=4 设置缩进宽度为 4命令的简写形式:
:set sw=4
设置大小写忽略与否:set ignorecase 设置忽略大小 
:set no ignorecase 取消忽略大小设置
命令的简写形式:
:set ic
:set no ic
设置不可见字符显示与否:set list 显示不可见字符 
:set nolist 取消显示不可见字符设置
在显示不可见字符的情况下,TAB 键显示为 ^I,而 $ 显示在每行的结尾。

  在正常模式 (Normal mode) 时,执行这些设置命令只修改当前会话的设置,退出或重启 Vi/Vim 这些设置就丢失了。要想保持住这些设置,就必须将这些设置写入 Vi/Vim 的 vimrc 文件。对 Linux/Unix 操作系统来说,每个用户的 vimrc 文件位于该用户的主目录下,文件名为 .vimrc。Vi/Vim 在每次启动的时候都会读取用户主目录下的 vimrc 文件并据此设置 Vi/Vim 的使用环境。Vi/Vim 在安装的同时也会安装 vimrc 文件的一个示例 vimrc_example.vim 到 /usr/share/vim/vim<version> 目录下。可以根据需要将这个示例文件拷贝到当前用户的主目录下并重命名为 .vimrc,在此基础上进行修改会相对容易一些。其它关于 Vi/Vim 的一些定制和键映射等相关设置基本上也是写入用户的 vimrc 文件中,更详细的介绍请参考 Vi/Vim 的使用手册。用户也可以维护一个自己的 vimrc 文件,并将这个文件拷贝到自己的使用的环境中,保持不同环境中 Vi/Vim 特性的一致,以符合自己的使用习惯。

结束语

  本文主要介绍了快速提高 Vi/Vim 使用效率的途径及相关命令,熟练掌握这些是高效使用 Vi/Vim 的基本要求。关于 Vi/Vim,还有很多其它命令以及定制功能本文没有涉及到。大家可结合自己的使用情况及需求,在本文的基础上进行拓展,不断提高自己的 Vi/Vim 使用水平。


参考资料

学习

  • 访问 developerWorks 技术专题 AIX and UNIX,阅读 AIX/Unix/Linux 系统管理以及相关软件应用方面的文章,扩展自己的 AIX/Unix/Linux 技能。

  • 查看文章“Vim 实用技术,第 1 部分: 实用技巧”,了解 Vim 的五个操作模式。

  • 查看文章“对话 UNIX: 新改进的 Vim 编辑器”,了解 Vi 与 Vim 之间的差异及 Vimr 基本命令。

  • 查看文章“神奇的 VIM”,了解 Vim 强大的文本处理功能及相关命令或脚本。

  • 查看文章“vi 技巧和诀窍:令人刮目相看的 10 个超酷命令”,了解 Vim 的使用技巧及诀窍。

  • 查看文章“学习 Linux,101: 使用 vi 编辑文件”,了解 Vi 的基本使用方法。

  • 在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。 

  • 在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。 

  • 随时关注 developerWorks 技术活动和网络广播。 

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

  • 加入 IBM 软件下载与技术交流群组,参与在线交流。

关于作者

方吾松,一名具有 9 年多从业经验的高级软件工程师。热衷于使用各种 Unix/Linux 操作系统及各种虚拟化技术。在最近 2 年中,他主要负责 IBM 云计算产品如 TPM, TSAM 等的全球化测试工作。


========================== 分割线 =====================================

使光标处在屏幕的中间,这样写代码干啥的都看得比较清晰:
    1.zz
    2.set scrolloff=10

设置tab为4个空格:
    set ts=4  (注:ts是tabstop的缩写,设TAB宽4个空格)

    set expandtab


在eclipse对于的文件夹下建立eclipse.desktop文件

然后打开在里输入:

    Type=Application      Name=eclipse      Terminal=false      StartupNotify=true      Exec=env UBUNTU_MENUPROXY= /home/zht/eclipse/eclipse      Icon=/home/zht/eclipse/icon.xpm  


    保存。给予其执行的权限。OK!!      然后在将图标复制到桌面上。