FreeBSD操作技巧 (来自于 http://wiki.scivoid.net/index.cgi/FreebsdTips )

来源:互联网 发布:数值最优化 万中 pdf 编辑:程序博客网 时间:2024/05/16 07:00

目录树

目录

  1. FreeBSD tips
    1. tips
    2. 参考文章

FreeBSD tips

 

tips

  • 为什么有些软件编译不了?

因为有些软件依赖/usr/src,所以你装系统的时,在安装内容里应选上src



  • 如何让FreeBSD像RedHat那样在ls时显示多种颜色的目录?

在/etc/csh.cshrc里面加入:

setenv LSCOLORS ExGxFxdxCxegedabagExEx setenv CLICOLOR yes

然后,执行:

sed -i.bak -E s/set/ prompt/#set/ prompt/g /root/.cshrc

并重新登录.



  • 如何让FreeBSD的csh像bash那样按tab列出列出无法补齐的候选文件?

标准的方法是按Ctrl+D。但如果一定要用tab的话,在/etc/csh.cshrc中加入:

set autolist

 



  • 如何让FreeBSD的csh显示类似[delphij@spirit] ~这样的提示符?

在/etc/csh.cshrc中加入:

set prompt = '[%B%n@%m%b] %B%~%b%# '

然后,执行:

sed -i.bak -E s/set/ prompt/#set/ prompt/g /root/.cshrc

 



  • 如何让普通用户也拥有类似root用户那样的命令行编辑能力?

在/etc/csh.cshrc中加入:

bindkey "^W" backward-delete-word bindkey -k up history-search-backward bindkey -k down history-search-forward

 



  • 使用port来安装软件的理由是什么?

ports是FreeBSD推荐的安装方式,它提供了依赖关系检查、自动安全审计(portaudit)、更新等多种功能。此外,还有一些其他理由:

  • 并不是每一个开发人员都了解FreeBSD,但是每一个ports committer都了解。他们可以帮助那些第三方软件的开发者将软件更好地运行在FreeBSD上
  • 几乎每一个port都符合hier(7)标准。你可以轻易地找到文件
  • 可以完整地卸载port,但手工安装的不行
  • port出了问题你可以去邮件列表里抱怨port有问题,手工安装一个人一个办法,没人知道你的问题是什么
  • FreeBSD的POLA政策保证了绝大多数情况下ports的使用方式的延续性(阅读ports/UPDATING基本上不会遇到大的困难)

 



  • bash, sh, csh哪一个更好?我是否可以把普通用户或root的shell改为bash或者ksh?

答案是,习惯哪个哪个就更好。唯一要注意的一点是,尽量不要改变root的shell,特别是要避免使用第三方的shell,因为这会在升级时带来麻烦

改变shell官方的作法是chsh(1),然而你也可以用vipw或另外一大打工具来完成类似的工作。



  • tcsh(csh兼用) 提示符的变量常用的都有哪些?

    • ! 和%h一样
    • %B 开始粗体模式
    • %b 结束粗体模式
    • %c 当前工作目录名称的最后部分
    • %c2,%c3等等 当前工作目录名称的最后两个、三个(等等)组成部分
    • %C 跟%c类似,但是使用长形式的目录名称
    • %d 本周的当天
    • %D 今天是当月中的第几天
    • %h 当前命令的历史记录编号
    • %l shell的当前控制终端
    • %L 清除从提示符末尾到下一行的所有内容
    • %m 机器的主机名称
    • %M 机器的完全符合规范的域名
    • %n 用户名
    • %p 用精确格式(包括秒)显示的12小时制时间
    • %P 用精确格式(包括秒)显示的24小时制时间
    • %S 开始标准输出格式
    • %s 结束标准输出格式
    • %t 以12小时制格式显示时间
    • %T 以24小时制格式显示时间
    • %U 开始下划线模式
    • %u 结束下划线模式
    • %w 当前月的名称
    • %W 当前月的序数
    • %y 以2位格式表示的年
    • %Y 以4位格式表示的年
    • %% %字符
    • %! 跟%h相同
    • %@ 跟%t相同
    • $# 扩展到>供常规使用,如果用户正以root身份运行的话,就扩展到#

    • %/ 当前工作目录的完整名称
    • %- 以短格式表示的当前工作目录
    • C 跟C匹配的控制字符:例如G代表Ctrl+G

    • /a 使tcsh在任何时候显示提示符时嘟嘟响
    • /e 终止的escape符0x1B
    • /f 终止的换页符
    • /n 在这个位置开始一个新行
    • /r 回车符
    • /t Tab制表符
    • /v 垂直制表符
    • /nnn 由八进制数字nnn所指定的字符

 



  • 在 console 下操作时,由于屏幕显示有限,如何查看前面显示的资料?

按一下 Pause or Scroll Lock键后,则可利用 PageUp PageDown Up Down Home End 等键来看前后显示的资料

再按一下 Pause or Scroll Lock则可回复等待输入画面



  • 加速按键速度和改善cusror 的位置有些时不太明显

在 /etc/rc.conf 中加入:

keyrate="fast" cursor="blink或destructive" 

 



  • 一些 console 下使用的快速键

以下按键皆适用于 tcsh 及 bash

  1. 快速移动光标
    • ctrl+a -> 到最前面

    • ctrl+e -> 到最后面

  2. 编辑方面
    • ctrl+d -> 删除光标所在字符

    • ctrl+w -> 删除光标所在字前面的字符

    • ctrl+u -> bash:将光标前所有的字及字符删掉,tcsh:删除所有字

    • ctrl+k -> 将光标后所有字符删掉

    • ctrl+b -> 下个字符

    • ctrl+f -> 前一个字符

    • ctrl+m -> 和按下 enter 的结果一样

    • ctrl+h -> 和按下 del 或 backspace 键一样

    • del 或 backspace -> 删除前一个字符

如果对按键有研究兴趣者,不妨参考 /usr/share/syscons/keymaps/ 这个目录,其中 us.iso.kbd 是一般我们使用的按键



  • 如何快速切换目录?

在 FreeBSD 中常常需要切换目录,有时目录名称较长、或是有大小写、或是只记得前面几个字,怎么办?

其实只要输入部份字再加上 * 这个符号就可以了.

如我们要切换到 /usr/local/ 这个目录,只需输入 cd /usr/lo* 就可以了.

如果输入 cd /usr/l* 会如何呢?则会进到 /usr/lib/ 这个目录,这是因为 shell 找到第一个符合的条件便停止了.



  • 如何清空档案内容?

如我们要将 /var/log/httpd-access.log 清空,则使用以下指令

# cd /var/log/ # true > httpd-access.log 

 



  • 显示目录及档案[tree]

有时需显示某个目录下所有的目录及档案,虽使用 ls 可达到部份功能,但并不是很方便.

以下我们就透过 ports 来安装 tree

#cd /usr/ports/sysutils ; make install clean

如此会将 tree 这个指令安装在 /usr/local/bin/ 这个目录下.

使用例子:

  1. 显示 /usr/ 下的目录及档案

#tree /usr
  1. 只显示 /usr 下的目录

#tree -d /usr

详细用法请参考:

#man tree 

PS:可透过管道 | 及 more 来显示

#tree /usr | more

 



  • 重复使用先前使用过的指令

你可以使用以下的方法来重复使用先前使用过的指令:

例如,我们先用 history 显示先前输入的指令:

# history . .. ... 10 clear 11 cd /usr/local 12 ls 13 ls etc 14 cd ~ 15 clear 
  1. 用 up down 可用上下一个指令,或是 ctrl+p ctrl+n 亦然
  2. 配合 ! 的用法,例如以下(ps: 在<...>内代表要输入的东东)

  3. !!

# !! => 重复执行上个一个指令
  • !<编号>

# !11 => 执行 cd /usr/local
  • !<指令> 可输入部份字,但前面部份需符合

# !cl => 执行 15 clear 指令
  • !<?指令?> 输入部份字符,部份吻合

# !?etc? =>执行 13 ls etc 

以上指令在 tcsh 及 bash 下皆可使用,如此是不是可帮你省下许多时间.



  • 如何将 man 的档案印出来?

man 是大家学习 FreeBSD 的最佳资料参考来源,但在显示器上看到底不是很方便,有没有方法转成一般的文件档案呢?

使用 col 这个指令吧.

例我们要将 ssh2 转成 ssh2.txt,则使用以下语法:

# man ssh2 | col -b > ssh2.txt

 



  • 为何查不到正确的 ports 资料

在 /usr/ports/ 下有着几千个 ports 的安装资料,有时我们可使用以下方式来查相关的 ports.

以下都是在 /usr/ports/ 这个目录下执行.

  1. 先将 ports 资料转换成一个文字文件,如 index.txt

# make print-index > index.txt
  1. 使用 make search key="...." 来查
  2. 将 ports 内容转换成 README.html

# make readmes 

用以上方法,可很容易的查到相关的 ports 资料,但很奇怪的是,为何我更新一个 ports 的资料后(或 ports tree),为何会查不到,查到的仍然是旧的资料.

原来,在 /usr/ports/ 中有一个 INDEX 檔,以上的查询方式都是在这个 INDEX 档中查询,当你更新 ports 资料时,这个 INDEX 档并不会随之更新.

所以为了查询方便,我们需以手动的方式来做.

# make index

做完后,再更新 index.txt 及 README.html.



  • 如何在 FreeBSD 同一片网硌卡加一个 ip 地址

有的时候,需要在同一片网络卡上加 ip 以达到一些特殊的要求.

在 FreeBSD 这是非常简单的,假设原先网络卡的 ip 是 211.211.211.211,想加一个 211.211.211.212,使用的是 rl0 这片网络卡,则做法如下.

  1. 在 /etc/rc.conf 加上这一行

ifconfig_rl0_alias0="inet 211.211.211.212 netmask 255.255.255.255"

其中的 alias0 就是加装的第一个 ip,如要设定多个可在此修正,如 alias1、alias2.. aliasN

  1. 重新激活网络卡,执行 /etc/netstart

# /etc/netstart

 



  • 更新了rc.conf,如何生效?

#cd /etc && sh rc

 



  • 修改更新.cshrc(或者类似文件)之后如何不退出登录立即生效?

# source ~/.cshrc 

 



  • 我新装了程序在 path (/usr/bin /usr/local/bin etc.,)路径中,如何不重新登录就能直接使用?

#rehash

 



  • csh中如何快速在命令行中移动?

移动到行首:a,行尾:e,清除:^u



  • 如何看一个文件而不需要先解压?

#zcat 

 



  • 我总是工作到很晚而忘了睡觉的时间怎么办?

#leave +hhmm(hh小时,mm分钟) 

 



  • 如何清屏?

#clear 

 



  • 分割和合并文件

$ split -b 650m file # 将大文件分块成多个650MB的小文件 $ cat x* >largefile # 将所有小文件合并成一个大文

 



  • 为什么改了.xinitrc但是当我使用xdm/gdm/kdm时没有效果

应该改.xprofile,或者直接在.xprofile中source .xinitrc



  • 如何锁定终端登陆?

$lock -p

当你使用终端登陆时想暂时离开而又不想logout,那么可以用lock -p. 当你返回时输入密码就可以.



  • 双系统中 重装Windows后怎样再进FreeBSD

  • 在能进FreeBSD时先备份好FreeBSD的引导文件

#dd bs=512 count=1 if=/dev/ad0s3 of=bootsect.bsd ##说明:/dev/ad0s3是你的FreeBSD所在分区,用mount命令可以查看 
  1. 拷贝文件

#cp bootsect.bsd /mnt/c/ ##说明:/mnt/c/是你挂载的Windows所在分区
  1. 修改Windows的启动文件boot.ini,在最后一行加入"C:/bootsect.bsd="FreeBSD" " 说明:这里假设你的Windows装在C盘

 



  • 在终端(命令行)下怎么使用鼠标进行复制,粘贴?

按住左键拖动进行复制,在光标所在的地方点击鼠标中键(也就是鼠标滚轮,假如有)进行粘贴,X下也同样适用

 
原创粉丝点击