FreeBSD小技巧
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
快速移动光标
ctrl+a -> 到最前面
ctrl+e -> 到最后面
编辑方面
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/ 这个目录下.
使用例子:
显示 /usr/ 下的目录及档案
#tree /usr
只显示 /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
用 up down 可用上下一个指令,或是 ctrl+p ctrl+n 亦然
配合 ! 的用法,例如以下(ps: 在<...>内代表要输入的东东)
!!
# !! => 重复执行上个一个指令
!<编号>
# !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/ 这个目录下执行.
先将 ports 资料转换成一个文字文件,如 index.txt
# make print-index > index.txt
使用 make search key=”….” 来查
将 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 这片网络卡,则做法如下.
在 /etc/rc.conf 加上这一行
ifconfig_rl0_alias0=”inet 211.211.211.212 netmask 255.255.255.255″
其中的 alias0 就是加装的第一个 ip,如要设定多个可在此修正,如 alias1、alias2.. aliasN
重新激活网络卡,执行 /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命令可以查看
拷贝文件
#cp bootsect.bsd /mnt/c/ ##说明:/mnt/c/是你挂载的Windows所在分区
修改Windows的启动文件boot.ini,在最后一行加入”C:\bootsect.bsd=”FreeBSD” ” 说明:这里假设你的Windows装在C盘
——————————————————————————–
在终端(命令行)下怎么使用鼠标进行复制,粘贴?
按住左键拖动进行复制,在光标所在的地方点击鼠标中键(也就是鼠标滚轮,假如有)进行粘贴,X下也同样适用
参考文章
freebsdchina.org的FreeBSD使用作弊条