使用Linux的10个小技巧
write by Ellen Siever
translate by guipei
每个使用Linux的用户都会发现自己最爱的技巧,根据我们的经验和工作的实践。这里有一些是我的经验。这些技巧可能非常简单,但是我发现正是这些简单的技巧会对我们的日常工作有最大的帮助。
使用其他的控制台
Linux可以使用虚拟控制台同时登陆多个会话,因此你可以一次做更多的操作或者同时用另一个用户登陆。登陆另外的虚拟控制台好像是使用不同的物理终端,可以在它们直接进行切换,实际上你是在一个终端里面。
如果你不在X系统里面,虚拟控制台十分的有用,你可以在你需要的使用方便的使用它。
在早期的内核版本( 1.1.54 以前),可以使用的虚拟控制台数量被编译进内核。在最近的内核,63个虚拟控制台可以使用,默认的设置了6个虚拟控制台在配置文件/etc/inittab中。
使用组合键ALT+Fn可以切换虚拟控制台,Fn指的是从F1到F6功能键。(如果你在X环境当中,你必须同时使用Ctrl-Alt-Fn来切换)。如果你运行了X系统,Alt+F7用来返回到X系统。你还可以使用Alt-right或者Alt-left组合键来在你登陆的虚拟控制台中循环切换。
临时使用其他的shell
每一个帐户都有一个shell与其关联。Linux里面默认使用bash,一个流行的替代者是tcsh。在帐户密码文件(/etc/passwd)的最后一列保存的是帐户的shell信息。你可以通过检查密码文件查看,或者使用finger命令。举例,使用命令”finger ellen”,在一些情况下,我会使用/bin/tcsh。
命令chsh可以修改登陆默认使用的shell,这就是说,它修改帐户信息中的shell内容。当然,你也可以临时的使用其他的shell在任何的时候,通过简单的命令来实现。举一个例子,如果我需要在bash中做一些操作,我可以输入命令bash,在控制台中执行。使用Ctrl-d或者exit命令来返回,切换到原来的tcsh会话当中。
打印帮助手册
这里有一些有用的小提示关于查看或者打印帮助手册(manpages):
打印帮助,可以使用如下命令:
man <manpage> | col -b | lpr
命令col –b 的作用是去除退格或者其它造成阅读困难的非打印字符。
如果你需要打印一个不在标准帮助目录帮助手册(也就是说,这个帮助文件不在MANPATH的环境变量中),你可以指定这个帮助文件的路径,包含完全的文件名:
man /work/myapp/mymanpage.1
如果你使用emacs编辑器,你可以使用命令meta-x man 查看帮助手册,emacs可以提示你帮助文件的名字。你可以在任何的emacs buffer中查看和打印它。
最后一个提示,使用groff命令格式化帮助手册。默认的输出文件是PostScript格式,你可以发送打PostScript打印机,或者使用ghostview查看。
groff -man /work/myapp/mymanpage.1 | ghostview -i
你可是使用-a选项输出ASCII,输出的结果是未格式化的文本。阅读起来不是很完美,但是如果没有其他的需要,它也足够使用。
使用替换命令来简单话复杂操作
命令替换功能可以让你使用一个命令的输出作为另外一个命令的输入参数。使用命令替换,确定你所需要的输出结果,使用反引号(backquotes)包含命令,然后使它成为另外一个命令的输入参数。例如,我经常在grep中使用替换命令递归查找目录文件:
grep 'Title' `find /work -type f -name 'chap*' -print` > chaptitles
这个命令中被反引号包含的内容是在/work目录中查找包含chap的文件。然后输出结果提供给grep命令,grep命令在find结果里面查询”Title”内容,最终的结果保存到chaptitles文件。
查看非文本文件
你可能在有的时候需要查看一个二进制文件。也许你发现没有帮助手册(manpage)你在这方面所需要的,或者你正在查找谁开发这样一个程序,或者哪个程序你可以使用。
实际上,文本命令可以很好的满足你的需要。它可以顺序的搜索一个文件然后打印出你所需要的内容。你可以使用管道命令例如 more,或者你查看部分文本,可以通过grep命令过滤内容。
使用locate命令
你需要一个更简单的方法查找文件么?试试使用locate命令,同复杂find命令相比,它更加简单,使用方法:
locate <string>
这个命令是在内部数据库中查找包含它们名字的文件然后输出全部文件名称,你可以通过使用grep命令过滤输出结果。举例,下面的例子查找所有包含字符”kde”并且在目录bin的文件:
locate kde | grep bin
查找的文件名不必使用全部名字;可是使用部分字符,例如使用“gno”代替“gnome”。使用参数-r选项可以使用正则表达式进行查询:
locate -r 'gno*'
需要注意的一个问题是locate命令区分大小写:查找HOWTO和howto,你会得到不同的结果。
同find命令相比较,locate命令是从数据库中查找,而不是每次搜索文件系统。因为是从数据库中查找,locate的速度远远快于find命令。但是,使用locate命令查找的结果仅仅是在当前数据库。
Locate数据库是通过cron的日任务更新,你也可以手工进行,使用updatedb命令完成(通常需要root用户)。如果在你安装新的程序或者删除旧的文件,又不希望等到下一日进行locate数据库的更新,你可以使用手工的处理完成。
使用dmesg查看启动消息
命令dmesg提供了一个简单的方法查看系统启动信息。当Linux启动的时候,内核的信息被存入内核ring缓存当中,dmesg可以显示缓存中的内容。默认情况下,dmesg打印内容到屏幕上面,当然你可以重定向输出到一个文件。
% dmesg > bootmsg
查看你使用的内核版本
你曾经需要知道你的系统的内核版本么?你可以通过命令uname查看到,它会显示出你的系统版本信息。使用 –r参数,uname命令打印出内核版本:
% uname -r
2.2.14
-5.0
其他的uname命令选项提供例如机器类型、操作系统名称,处理器等信息,使用—all选项可以打印出全部的信息。
使用df和du来维护你的磁盘
使用df(display filesystem 、disk free)命令可以查看你的文件系统使用以及剩余空间的状况。如果你有试用和下载新软件的爱好,你不可避免的会使用它来查看你的磁盘信息。df命令有一些选项,不使用选项它会提供一个文件系统的基本信息列表:
% df
Filesystem | 1k-blocks | Used | Available | Use% | Mounted on |
/dev/hda3 | 1967156 | 1797786 | 67688 | 96% | / |
哦,是该清理空间的时候了。还有一个du(disk usage)命令需要了解。du命令提供你所需要的文件占用信息,可以提供整个文件系统、子目录、目录的使用情况。你可以使用du查看一个目录的使用情况,或者默认查看当前目录。
如果你不想在每一个子目录里面使用du命令查看,可以使用-s参数来做统计。在这里,你可以指定你所希望查看的目录在这个命令里面,举例说明:
% du -s /usr/X11R6
142264 /usr/X11R6
% du -s /usr/X11R6/*
34490 /usr/X11R6/bin
1 /usr/X11R6/doc
3354 /usr/X11R6/include
97092 /usr/X11R6/lib
7220 /usr/X11R6/man
106 /usr/X11R6/share
通过使用du提供的信息,你可以清理那些占用空间的目录文件或者你不再需要的归档文件了。
允许非root用户加载和卸载驱动器
一般情况下,系统在启动的时候会自动加载硬盘系统,但是象软盘和光盘系统一般没有装载,直到你有需要使用的时候,以便你方便的更换软盘或者光盘。在默认情况下,装载和卸载系统需要root用户权限。然而,你可以修改这个默认配置通过文件配置参数,/etc/fstab,可以让其他用户正常使用这个命令。进行这个操作需要在选项中加入user配置参数。
/dev/fd0 | /mnt/floppy | auto | noauto,user | 0 0 |
/dev/cdrom | /mnt/cdrom | iso9660 | noauto,ro,user,unhide | 0 0 |
你可以查看文件/etc/mtab或者运行命令mount(没有任何参数和选项) ,查看目前什么文件系统被装载,使用的什么选项。