选择显示字体大小

freebsd中一些有用的命令

freebsd带有许多简单而功能强大的命令以使你的计算机工作更容易。不管你对任何unix系统有多少经验,都会发现有效完成工作的新捷径和新方法。

在这篇文章中,我们将讨论命令以帮你记住你是谁,你在哪儿,如何找东西以及如何像unix鬼精灵一样地思考问题和完成任务!

我喜欢虚拟终端的概念,而且通常我都运行所有8个终端以及xwindows会话。通常,我会运行一个ppp会话、一个打开邮件客户端的终端、几个不同的打开手册页所占的终端、以root身份运行命令的终端以及以普通用户身份运行命令的终端。当然功能越强带来的混乱越多。我会用一些命令来帮我解决混乱。

如果我忘了把手册页开在哪个终端上的话, printscrn 键会以升序依次滚动列出所有虚拟终端。如果没有运行x window会话,可以永远继续重复1到8号终端。否则,它会在9号终端上停下来,也就是x服务器

如果我进入了一个终端并希望知道这是哪个终端的话,可以用tty命令:

tty /dev/ttyv4

注意,这实际上是5号虚拟终端,因为这些终端是从0开始排列的。如果离开了该终端,就可以用 alt-f5 返回。

如果我想知道在该终端上的是哪个用户,可以用whoami:

whoami root

如果我想知道有谁登录进了终端,可以用who:

who genisis ttyv0 jun 3 15:45 genisis ttyv1 jun 3 15:46 genisis ttyv2 jun 3 21:09 genisis ttyv3 jun 3 21:10 genisis ttyv4 jun 3 21:27 genisis ttyv5 jun 4 09:40 genisis ttyv6 jun 4 09:43 genisis ttyv7 jun 4 10:46

注意who和whoami之间的区别。在ttyv4,我本来是以genisis身份登录的,然后再成为超级用户。who命令告诉你谁拥有登录命令解释器而不返回非登录解释器的信息。也就是说,因为我的x window会话不是一个登录解释器,ttyv8就不会显示在输出信息中。

如果我忘了自己在哪个目录中,可以用pwd:

pwd

它会显示我当前所在的工作目录:

/usr/home/genisis

好的经验是:不要在还没有用pwd查看一下你实际所处的位置之前就创建或删除文件。

现在,如果我忘了时间信息:

date sun jun 4 11:15:46 edt 2000

或者更糟的话,忘了今天的日期:

cal june 2000 su mo tu we th fr sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

或者需要知道2020年的圣诞节时哪一天:

cal 12 2020 december 2020 su mo tu we th fr sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

或者签署独立宣言那一周的日程:

cal 07 1776 july 1776 su mo tu we th fr sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

最后两个关于cal的小技巧同样可以使你的朋友很吃惊;试一下这个:

cal 9 1752 september 1752 su mo tu we th fr sa 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

空缺的日期是由于恺撒历到阳历的切换。还有:

ncal -e april 23 2000

这会显示耶稣降临日;用-o就可以知道东正教日历。

到此,你可能会想我一定是个非常出色的打字员。让我们看一下命令历史列表:

h
110 date > /usr/home/genisis/cal 111 cal > /usr/home/genisis/cal 112 cal 12 2020 > /usr/home/genisis/cal 113 cal 07 1776 > /usr/home/genisis/cal 117 cal 9 1752 > /usr/home/genisis/cal 122 ncal -e > /usr/home/genisis/cal 134 h > /usr/home/genisis/cal

我很讨厌打字,而且还用了这么多重定向符>。如果你要保存命令行上的结果到一个文件中就要用这个重定向符;它的语法总是一样的:

command > filename

因为我要你看到以上历史列表中每个命令的输出,所以把它们重定向到了一个文件中。然后再贴到我的文档里来。注意我覆盖了七次同样的文件;因为我只用了一个重定向符。

让我们假定你已经向freebsd问答列表中发出一个问题,这时就会有人要你提供uname -a,dmesg和fstab的输出内容。你就可以用>创建三个文件然后把它们贴到你的电子邮件文档中。但是你也可以把所有三个输出重定向到一个文件,只要用>>这个重定向符替换即可:

uname -a > /usr/home/genisis/help dmesg >> /usr/home/genisis/help more /etc/fstab >> /usr/home/genisis/help

如果我现在输入:

more /usr/home/genisis/help,

就会看到以上三个文件的输出了。

让我们更仔细地看一下这些命令:

在uname -a命令中我只用了一个>,因为我正在创建一个新文件,不会覆盖它本身的内容。

因为我在dmesg命令中用了>>,就不会覆盖那个文件中uname -a的那部分了。

注意,我需要为/etc/fstab使用更多的命令。如果我用:

fstab >> /usr/home/genisis/help, fstab: command not found:

将会出现错误信息。你不能重定向文件;你只能对命令输出进行重定向。在这种情况下,读/etc/fstab的命令就是more了;读取的结果就会被重定向到/usr/home/genisis/help。

这样你已经成功地发送了三个命令到一个文件中,而不会覆盖每个命令的输出。但为什么要打上三个命令呢?完全可以有一种方法用一个命令就完成这些工作。如果我打:

uname -a dmesg more /etc/fstab >> /usr/home/genisis/help2, usage: uname [-amnrsv]

我就会收到这样的信息。再看一下这个命令;它的确有你要做的每件事儿,但你能说出倒底哪个是命令,哪个是开关,哪个是文件呢?如果你对此感到因惑的话,想象一下你的命令解释器在试图解释你的意图时会感觉怎样。所以我们需要一些分隔命令的方法;试一下这个:

uname -a; dmesg; more /etc/fstab >> /usr/home/genisis/help3

这会使uname -a和dmesg的输出送到终端上;如果你用这个命令:

more /usr/home/genisis/help3

你只会看到more /etc/fstab命令的输出。

所以,我们已经有点接近了。我们已经分隔了这些命令,现在要让命令解释器知道我们想要的是三个输出都送到那个文件中,而不是最后那个命令的输出。最后再试一下这个:

(uname -a; dmesg; more /etc/fstab) >> /usr/home/genisis/help4 more /usr/home/genisis/help4

你就会得到想要的结果了。上面的圆括号告诉命令解释器,你想先运行括号里的命令,然后再把它们所有的输出重定向到那个文件中。

freebsd还有几个好用的工具用于查找信息。使用哪个工具就取决于你要找什么。如果你要找应用程序的话,可以用whereis:

whereis ls ls: /bin/ls

如果你要找一个文件的话,可以用locate:

locate fstab /etc/fstab

如果你要找些东西但不知道它是什么的话,可以用whatis:

whatis ls ls(1) - list directory contents whatis fstab fstab(5) - static information about the filesystems

注意whatis这个命令会在括号中包含手册页的号码。如果你要上面两样东西的附加信息的话,可以用:

man 1 ls man 5 fstab

但你是否需要找一段指定的文本呢?就需要用grep工具了,它有一套很简单的语法:

grep whatyou'relookingfor filename

让我们假设我记不清在freebsd 4.0的缺省内核里是否允许了bpf这个设备。虽然我可以打开这个文件开始阅读,但更快的办法是:

grep bpf /usr/src/sys/i386/conf/generic # the `bpf' pseudo-device enables the berkeley packet filter. pseudo-device bpf #berkeley packet filter

如果你记不清bpf选项所在的行号是多少,可以向grep里加一个开关:

grep -n bpf /usr/src/sys/i386/conf/generic 212:# the `bpf' pseudo-device enables the berkeley packet filter. 214:pseudo-device bpf #berkeley packet filter

这样就可以列出相应的行号了。

当然,我也可以把这些输出重定向到一个文件里,把它寄给向我要的人。

grep -n bpf /usr/src/sys/i386/conf/generic > /usr/home/genisis/reply

看另一个例子,如果你想取得计算机的cpu信息,可以运行dmesg,打开你的scroll lock按钮,往上翻屏,查找描述cpu的那些行。或者你可以用:

dmesg grep cpu cpu: amd-k6tm w/ multimedia extensions (199.96-mhz 586-class cpu)

这样会更快地取得同样的信息。注意,如果你这样用那个命令:

grep cpu dmesg grep: dmesg: no such file or directory)

就会得到错误信息了。dmesg是一个命令,而你只能对文件进行grep。但是你可以用管道把输出信息送到grep,这样你就可以打到特定的信息了。

现在总结一下:当你使用grep时,问一下自己要找的东西是在文件里还是命令结果。如果在文件里,用:

grep text filename

如果是命令结果,用:

command grep text   


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons