每个极客都应该知道的Linux技巧(1)(4)
31:不用编辑器来进行编辑
难度:中等
- cut -c 8-15 file1 > file2
应用程序:好多
通常非常长的文件是很难用文本编辑器来进行操作的。如果你不时地要做这件事,可能你会发现用某些趁手的命令行工具会更快一些,就像下面这个例子一样。
从文件file1中打印第一列和第三列到文件file2中,我们可以使用awk:
- awk '{print $1, $3}' file1 > file2
只输出file1中第八列到第十五列中的字符,我们可以使用cut:
- cut -c 8-15 file1 > file2
要使用单词word2来替换文件file1中的单词word1,我们可以使用sed命令:
- sed "s/word1/word2/g" file1 > file2
通常这是一个比打开文本编辑器更快得到结果的方式。
32:只备份选中的文件
难度:中等
应用程序:tar
想要使用tar来备份一个目录中的某一文件?你可以使用-T标志。首先,用你想要备份的文件来创建一个文件:
- cat >> /etc/backup.conf
- # /etc/passwd
- # /etc/shadow
- # /etc/yp.conf
- # /etc/sysctl.conf
- EOF
- tar -cjf bck-etc-`date +%Y-%m-%d`.tar.bz2 -T /etc/backup.conf
现在你已经备份好了。
33:在文件中合并列
难度:中等
应用程序:bash
在文件中拆分列是非常简单的,合并它们稍微复杂一点。下面是一个简单的完成这项工作的脚本:
- #!/bin/sh
- length=`wc -l $1 | awk '{print $1}'`
- count=1
- [ -f $3 ] && echo "Optionally removing $3" && rm -i $3
- while [ "$count" -le "$length" ] ; do
- a=`head -$count $1 | tail -1`
- b=`head -$count $2 | tail -1`
- echo "$a$b" >> $3
- count=`expr $count + 1`
- done
给这个脚本命名为merge.sh并且如下运行它:
- chmod u+x merge.sh
现在,如果你想要合并file1和file2中的列到file3,下面是执行方法:
- /path/to/merge.sh file1 file2 file3
/path/to必须被你文件系统中的merge.sh位置所替代。
34:大小写敏感
难度:中等
应用程序:bash
有些时候,一个词在不同操作系统间没有任何区别,在Linux中,“Command”和“command”是不同的东西。当从Windows移动文件到Linux中时会造成一些麻烦。tr是一个小的shell功能,可以用于改变一堆文件。
- #!/bin/sh
- for i in `ls -1`; do
- file1=`echo $i | tr [A-Z] [a-z] `
- mv $i $file1 2>/dev/null
- done
通过执行这个,FILE1和fiLe2将被分别重命名为file1和file2.
35:Emacs中的宏指令
难度:中等
应用程序:Emacs
当编辑文件时,你通常会发现那些任务都是冗长和重复的,所以为了节约你的时间,你应该录制一个宏指令。在Emacs中,你将必须经历以下步骤:
1.按下 Ctrl+X 来开始一个记录。
2.插入所有你想要的按键和命令。
3.当你结束时按下Ctrl+X。
现在,你可以用以下命令来执行:
- 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文件是一个压缩文档,所以解压它:
- unzip myfile.sxw
你想要的是名为’content.xml’的文件。不幸的是,它充满了xml的标签以至于非常难以辨认,所以要用一些Perl魔法将它们过滤出去:
- cat content.xml | perl -p -e"s/<[^>]*>/ /g;s/\n/ /g;s/ +/ /;"
这可能丢失了很多格式,但是至少现在它是可以阅读的。
38:搜索和执行
难度:中等
应用程序:find
find命令并不只是在寻找文件方面很有用,它在处理以下问题时也是非常有用的。这里有一个简短的例子。
假设我们有很多的压缩文件,现在我们想找到所有的压缩文件:
- find . -name '*.gz'
将会定位出所有当前路径下的gzip文档。但是假设我们想要检查它们是否是有效文档,gunzip -vt选项将会帮我们实现这个,我们还可以机智地使用xargs结合这两个操作:
- find . -name '*.gz' | xargs gunzip -vt
39:正确使用whois服务器
难度:中等
应用程序:whois
whois命令在追捕Internet上的恶棍以及给他们提供服务的ISP都是非常有用的。不幸的是,有很多whois服务器,如果你的反搜索一个域名,通常你不得不用一个指定的他们使用的TLD。然而,一些whois代理将自动转送你的查询到正确的服务器上。其中之一可以在http://whois.geektools.com/上获得。
- whois -h whois.geektools.complop.info
40:驱动挂载到哪里了?
难度:中等
应用程序:bash
人们常碰到的一个问题是,你刚接通电源时,就有太多的可挂载外设USB驱动,flash内存卡,USB键驱动)消耗光了驱动?
实际上,所有的驱动都调用一个驱动——就像usb-storage,会在日志中存储很多有用的信息。尝试:
- dmesg | grep SCSI
这将从dmesg输出过滤出指定的驱动规格。你可能发现一些这样的文本:
- SCSI device sda: 125952 512-byte hdwr sectors (64 MB)
这个是说你的外设是在sda上。
评论暂时关闭