设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 系统 > 正文

FreeBSD有许多简单而功能强大的命令(2)

发布时间:2017-01-02 08:47 所属栏目:52 来源:网络 佚名
导读:我很讨厌打字,而且还用了这么多重定向符。如果你要保存命令行上的结果到一个文件中就要用这个重定向符;它的语法总是一样的: command filename 因为我要你看到以上历史列表中每个命令的输出,所以把它们重定向到

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

 

上一页12下一页查看全文 内容导航
  • 第1页:命令(上)
  • 第2页:命令(下)

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读