31:不用编辑器来进行编辑

难度:中等

  1. cut -c 8-15 file1 > file2 

应用程序:好多

通常非常长的文件是很难用文本编辑器来进行操作的。如果你不时地要做这件事,可能你会发现用某些趁手的命令行工具会更快一些,就像下面这个例子一样。

从文件file1中打印第一列和第三列到文件file2中,我们可以使用awk:

  1. awk '{print $1, $3}' file1 > file2 

只输出file1中第八列到第十五列中的字符,我们可以使用cut:

  1. cut -c 8-15 file1 > file2 

要使用单词word2来替换文件file1中的单词word1,我们可以使用sed命令:

  1. sed "s/word1/word2/g" file1 > file2 

通常这是一个比打开文本编辑器更快得到结果的方式。

32:只备份选中的文件

难度:中等

应用程序:tar

想要使用tar来备份一个目录中的某一文件?你可以使用-T标志。首先,用你想要备份的文件来创建一个文件:

  1. cat >> /etc/backup.conf 
  2. # /etc/passwd 
  3. # /etc/shadow 
  4. # /etc/yp.conf 
  5. # /etc/sysctl.conf 
  6. EOF 

然后运行tar,并使用-T标志指向刚刚创建的文件。

  1. tar -cjf bck-etc-`date +%Y-%m-%d`.tar.bz2 -T /etc/backup.conf 

现在你已经备份好了。

33:在文件中合并列

难度:中等

应用程序:bash

在文件中拆分列是非常简单的,合并它们稍微复杂一点。下面是一个简单的完成这项工作的脚本:

  1. #!/bin/sh 
  2. length=`wc -l $1 | awk '{print $1}'` 
  3. count=1 
  4. [ -f $3 ] && echo "Optionally removing $3" && rm -i $3 
  5. while [ "$count" -le "$length" ] ; do 
  6. a=`head -$count $1 | tail -1` 
  7. b=`head -$count $2 | tail -1` 
  8. echo "$a$b" >> $3 
  9. count=`expr $count + 1` 
  10. done 

给这个脚本命名为merge.sh并且如下运行它:

  1. chmod u+x merge.sh 

现在,如果你想要合并file1和file2中的列到file3,下面是执行方法:

  1. /path/to/merge.sh file1 file2 file3 

/path/to必须被你文件系统中的merge.sh位置所替代。

34:大小写敏感

难度:中等

应用程序:bash

有些时候,一个词在不同操作系统间没有任何区别,在Linux中,“Command”和“command”是不同的东西。当从Windows移动文件到Linux中时会造成一些麻烦。tr是一个小的shell功能,可以用于改变一堆文件。

  1. #!/bin/sh 
  2. for i in `ls -1`; do 
  3. file1=`echo $i | tr [A-Z] [a-z] ` 
  4. mv $i $file1 2>/dev/null 
  5. done 

通过执行这个,FILE1和fiLe2将被分别重命名为file1和file2.

35:Emacs中的宏指令

难度:中等

应用程序:Emacs

当编辑文件时,你通常会发现那些任务都是冗长和重复的,所以为了节约你的时间,你应该录制一个宏指令。在Emacs中,你将必须经历以下步骤:

1.按下 Ctrl+X 来开始一个记录。

2.插入所有你想要的按键和命令。

3.当你结束时按下Ctrl+X。

现在,你可以用以下命令来执行:

  1. Ctrl -u <number> Ctrl -x e 

<number>是你想执行宏指令的次数。如果你输入的值为0,这个宏指令将被一直执行直到文件的结束。Ctrl -x e等同于Ctrl -u 1 Ctrl-x e。

36:简单的垃圾邮件清理

难度:中等

应用程序:KMail

垃圾邮件,或者不请自来的大批邮件,已经是个很普遍的问题,出于必要,现在几乎每个人都有某种形式的垃圾邮件保护。很多ISP包含垃圾邮件过滤,但是它并没有被设置的太过主动,而且通常很多都是简单的标记垃圾邮件,然后让它进来ISP可不想因为丢失了你的邮件而被责备)。

所以,你在客户端上可能已经设置了反垃圾邮件的东西,要让它运行得更好,你可以写一些过滤器来移除被标记的垃圾邮件。标签是作为标题包含进来的。在KMail中,你可以只创建一个快速过滤器来将你的邮件装箱,或者干脆把它放到垃圾文件夹中。精确标题的使用将决定于你的ISP使用的软件,但是通常都是像SpamAssassin这样系统的类似X-Spam-Flag = YES。

在KMail中简单创建一个过滤器,选择Match Any of the Following匹配下面的任何一个)然后输入标题细节和你需要的动作。应用过滤器到即将到来的邮件上,然后你的垃圾邮件的一半将不会再来打扰你了。

37:阅读OOo文档但不使用OOo

难度:中等

应用程序:OpenOffice.org译注:一套跨平台办公室软件套件)

你曾经有没有过拿到一个OOo文档,但是没有OpenOffice.org来阅读?所以你就把它保存成普通的文本文件.txt),但是被 StarOffice .sxw 格式所替代?这个文本文件可以得到拯救。首先,这个sxw文件是一个压缩文档,所以解压它:

  1. unzip myfile.sxw 

你想要的是名为’content.xml’的文件。不幸的是,它充满了xml的标签以至于非常难以辨认,所以要用一些Perl魔法将它们过滤出去:

  1. cat content.xml | perl -p -e"s/<[^>]*>/ /g;s/\n/ /g;s/ +/ /;" 

这可能丢失了很多格式,但是至少现在它是可以阅读的。

38:搜索和执行

难度:中等

应用程序:find

find命令并不只是在寻找文件方面很有用,它在处理以下问题时也是非常有用的。这里有一个简短的例子。

假设我们有很多的压缩文件,现在我们想找到所有的压缩文件:

  1. find . -name '*.gz' 

将会定位出所有当前路径下的gzip文档。但是假设我们想要检查它们是否是有效文档,gunzip -vt选项将会帮我们实现这个,我们还可以机智地使用xargs结合这两个操作:

  1. find . -name '*.gz' | xargs gunzip -vt 

39:正确使用whois服务器

难度:中等

应用程序:whois

whois命令在追捕Internet上的恶棍以及给他们提供服务的ISP都是非常有用的。不幸的是,有很多whois服务器,如果你的反搜索一个域名,通常你不得不用一个指定的他们使用的TLD。然而,一些whois代理将自动转送你的查询到正确的服务器上。其中之一可以在http://whois.geektools.com/上获得。

  1. whois -h whois.geektools.complop.info 

40:驱动挂载到哪里了?

难度:中等

应用程序:bash

人们常碰到的一个问题是,你刚接通电源时,就有太多的可挂载外设USB驱动,flash内存卡,USB键驱动)消耗光了驱动?

实际上,所有的驱动都调用一个驱动——就像usb-storage,会在日志中存储很多有用的信息。尝试:

  1. dmesg | grep SCSI 

这将从dmesg输出过滤出指定的驱动规格。你可能发现一些这样的文本:

  1. SCSI device sda: 125952 512-byte hdwr sectors (64 MB) 

这个是说你的外设是在sda上。


相关内容