分享
 
 
 

FreeBSD带有许多简单而功能强大的命令

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

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

110date > /usr/home/genisis/cal

111 cal > /usr/home/genisis/cal

112cal 12 2020 > /usr/home/genisis/cal

113cal 07 1776 > /usr/home/genisis/cal

117cal 9 1752 > /usr/home/genisis/cal

122ncal -e > /usr/home/genisis/cal

134h > /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-devicebpf#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-devicebpf#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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有