ibus add boshiamy input method

在ibus中安裝嘸蝦米輸入法網路上已經有非常多的解決方法,經過一些參考之後自己也整理了一份,若有需要的朋友可以直接下載

http://moon.cse.yzu.edu.tw/~s932361/bsd/ibus_boshiamy.tgz

※包含以下內容

liu.txt 所有字根拆碼表
liu.db 己產生可以給ibus用的字根表
liu.png 給ibus用的圖示

※安裝方法

# cp liu.db /usr/local/share/ibus-table/tables/
# cp liu.png /usr/local/share/ibus-table/icons/
重啟動ibus就完成了

※自己手動製作字根表

請參考 http://cmchao.pixnet.net/blog/post/26079454
備用載點 http://moon.cse.yzu.edu.tw/~s932361/bsd/ibus_liu_gen.tbz

而它所需要的table請從有安裝嘸蝦米的windows中將liu-uni2.tab liu-uni3.tab liu-uni4.tab liu-uni.tab找出來後並複製到ibus_liu_gen的目錄中,之後直接執行uni2txt.sh就可以一次完全轉完產生出liu.txt字根表,在透過以下指令產生出ibus可使用的字根表格式,就可以使用了

# ibus-table-createdb -s liu.txt -n liu.db

freebsd pkg_info

pkg_info是freebsd一個非常重要的指令,拿來查詢目前安裝的軟體,雖然man文件寫的很清楚,不過常用的幾個功能記錄一下

1. 查詢某一套件
> pkg_info -Ex gtk

2. 查詢套件相依
> pkg_info -rx py26-gtk

3. 查詢套件被相依
> pkg_info -rx py26-gtk

4. 查詢套件安裝資訊
> pkg_info -Dx virtualbox-ose

5. 查詢套件包含的檔案
> pkg_info -Lx virtualbox-ose

6. 查詢套件的說明
> pkg_info -dx pkg_tree

7. 查詢套件屬於那個ports
> pkg_info -ox virtual

8. 查詢某檔案屬於那個套件
> pkg_info -W libglx.so

9. 查詢某個ports安裝後為那個套件
> pkg_info -O ports-mgmt/pkg_tree

當然光有pkg_info工具不夠,所以通常大概會裝幾個關於管理的工具如
1. pkg_tree 了解套件之間相依性
2. portupgrade 裡面的集合的工具如pkg_deinstall pkgdb ....
3. bsdadminscripts 裡面集合的pkg_libchk ...

fontconfig command

介紹幾個X11上面對於fontconfig好用的指令

$ fc-cache -fv 更新目前字型資料庫,通常會先把xx.ttf搬到 ~/.fonts/下再執行
$ fc-list 顯示目前安裝的字體有多少個
$ fc-list :lang=zh 顯示目前安裝的字體屬於中文的有多少個
$ fc-match 查詢目前fontconfig幫你選到的字型是那個
$ fc-match -s 列出除了選到的字型外,其它後補字型的排序
$ fc-match -s sans-serif 列出選到無襯線字體的字型排序
$ fc-match -s serif 列出選到襯線字體的字型排序
$ fc-match -s monospace 列出選到等寬字體的字型排序

大約這幾個就夠用了,以下補充一下,在X11下因為中英文混雜,也許使用的中文字型內含的英文字太難看,或是根本沒有英文字型,所以會造成讓fontconfig選字上的困難,預設fontconfig會先看locale所以讀到若是utf8的話,會讓中文字型優先,因此會使用中文字型內含的英文字,因此如果要使用其它的英文字型的話,必須要讓英文優先順序先選,選完一定沒有中文字型,之後在來選中文字型,就可以讓好看的英文字母來配需要中文顯示的中文字型

$ vim ~/.fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>Bitstream Vera Sans</family>
<family>AR PL New Sung</family>
</prefer>
</alias>
<alias binding="strong">
<family>serif</family>
<prefer>
<family>Bitstream Vera Serif</family>
<family>AR PL New Sung</family>
</prefer>
</alias>
<alias binding="strong">
<family>monospace</family>
<prefer>
<family>Bitstream Vera Sans Mono</family>
<family>AR PL New Sung</family>
</prefer>
</alias>
</fontconfig>

以上有看到使用到「 binding="strong" 」主要目的是讓fontconfig強制選字排序,忽略locale中要先選utf8的字型。

synergy usage

有一個很好用的軟體可以透過網路來模擬KVM,讓兩台不同的電腦連在一起,然後用同一組鍵盤和滑鼠就可以控制了,但是對於螢幕當然是沒有辦法一定要各自有自己的螢幕,但是可以省掉一組鍵盤滑鼠,還算不錯用

以下內容是將兩台電腦(一台 winxp,另一台freebsd)連結在一起

step1) 安裝軟體

winxp 的部份先去下載 http://synergy-foss.org/pm/projects/synergy/tabs/download
然而在freebsd的部份用ports來安裝
# cd /usr/ports/sysutils/synergy
# make install clean

step2) 軟體設定

在winxp方面只要設定好電腦的名稱就行了,它的名字必須對映到設定檔裡面的screen name,所以將winxp的synergy名稱設為winxp-desktop
而freebsd方面我們要當成主控端,因此要寫一個.synergy.conf的設定檔放在家目錄下面
$ cd ~
$ vim .synergy.conf

section: screens
Enya.arkbsd.org:
winxp-desktop:
end

section: links
winxp-desktop:
right = Enya.arkbsd.org
Enya.arkbsd.org:
left = winxp-desktop
end

注意在screens那邊第一行和第二行順序沒有差異,但是必須要對映到正確的電腦名稱
Enya.arkbsd.org 對應到我freebsd hostname 如果不知道的話,用uname -n來查詢
winxp-desktop 對應到windows的電腦名稱,也就是剛剛設過的名稱

在links那邊是要設定當滑鼠移到螢幕邊界的時候要到那一台電腦
winxp-desktop在Enya.arkbsd.org的左邊
反過來說Enya.arkbsd.org在winxp-desktop的右邊
以像上面範例的格式填好之後,設定檔就完成了

step3) 執行軟體

必須先執行server端的程式這樣client才可以連結的到,我們主控端是在freebsd而被控端是winxp的電腦
$ synergys
完成freebsd 主控端的啟動
接著在啟動winxp上的被控端,輸入主控端的ip之後就可以完成聯結了,可以使用滑鼠移出螢幕來確認看看

youtube-dl

如果要下載youtube的影片的話,可以使用這個由python所寫成的簡單下載程式,而且還支援續傳,雖然是文字介面,但用起來還算方法

step 1)

# cd /usr/ports/www/youtube_dl
# make install clean

step 2)
$ youtube-dl -b -o Linux_WM_show.flv "http://www.youtube.com/watch?v=0ABzP9X0zwI"

參數
-b best rate
-o output file name
"URL"
irssi 註冊nick使用者

/set nick NAME
/msg -OFTC nickserv info 查看nick有沒有人註冊
/msg -OFTC nickserv help 查看註冊說明
/msg -OFTC nickserv register your_password your_email
之後去收信,會有一封確認信,在將信內容的指令貼到irssi中就完成了
若這個nick己經有人使用的話,重新使用/set nick NAME設定其它的nick


irssi 刪除己註冊過的nick使用者

/msg -Freenode nickserv drop your_nickname your_password
/msg -Freenode nickserv info your_nickname 查看相關資訊


irssi 己註冊使用者開始連線各伺服器和頻道

/set nick NAME
/set theme red
/network add -autosendcmd "/^msg nickserv identify your_password;wait 2000" Freenode
/network add -autosendcmd "/^msg nickserv identify your_password;wait 2000" OFTC
/server add -auto -network Freenode irc.freenode.net 6667
/server add -auto -network OFTC irc.oftc.net 6667
/channel add -auto #yzugeek OFTC
/channel add -auto #yzugossiping OFTC channel_password
/channel add -auto #awesome OFTC
/channel add -auto ##freebsd Freenode
/channel add -auto #python.tw Freenode
/channel add -auto #ubuntu-tw Freenode
若使用的gtk顏色為深色系的話,那有的時候在輸入文字要選字的時候幾乎是看不到的,因為預設ibus-table輸入選字欄位是黑色字,因此可以透過以下的方法來修改成白色,比較容易看的清楚

$ sudo vim /usr/local/share/ibus-table/engine/table.py

463 attrs.append ( ibus.AttributeForeground (0x7700c3, 0, len(_phrase)) )
464 elif candi[-1] > 0:
465 # this is a sys phrase used by user:
466 attrs.append ( ibus.AttributeForeground (0x000000, 0, len(_phrase)) )
467 else:
468 # this is a system phrase haven't been used:
469 attrs.append ( ibus.AttributeForeground (0x000000, 0, len(_phrase)) )
470 self._lookup_table.append_candidate ( ibus.Text(_phrase + _tbks, attrs) )
471 self._lookup_table.show_cursor (False)

在 ibus.AttributeForeground的0x000000可以改成自己喜歡的色碼,範例如下:

463 attrs.append ( ibus.AttributeForeground (0x7700c3, 0, len(_phrase)) )
464 elif candi[-1] > 0:
465 # this is a sys phrase used by user:
466 attrs.append ( ibus.AttributeForeground (0xeeeeee, 0, len(_phrase)) )
467 else:
468 # this is a system phrase haven't been used:
469 attrs.append ( ibus.AttributeForeground (0xeeeeee, 0, len(_phrase)) )
470 self._lookup_table.append_candidate ( ibus.Text(_phrase + _tbks, attrs) )
471 self._lookup_table.show_cursor (False)

完成之後重新啟動一下ibus就行了

speed up firefox

在網址列輸入about:config來開啟設定

network.http.pipelining true
network.http.proxy.pipelining true
network.http.pipelining.maxrequests 8
browser.backspace_action 0
nglayout.initialpaint.delay 0
browser.cache.disk.parent_directory /tmp

FreeBSD 上 proxy 的使用

因為每週固定要在 Firewall 後面躲一天,因此對外都要經過 proxy。如果你是使用 FreeBSD 要編 ports ,那麼你必需為 fetch 指令設定 proxy

HTTP_PROXY=xxx.xxx.xxx.xxx:ppp
export HTTP_PROXY

xxx 是 IP,而 ppp 是 port number。

如果要使用 mercurial/hg 或 git,那麼請設定

http_proxy=http://xxx.xxx.xxx.xxx:ppp/
export http_proxy

注意! 是小寫。其它用 Python httplib 的軟體都是這樣設。

freebsd 小技巧

01.查看網絡流量
a.systat -if 1 (1表示1s刷新屏幕一次)
b.netstat 1
# Traffic 流量 peak 峰值 average 平均值
02.查看硬盤信息
diskinfo -vt /dev/ad0
disklable /dev/ad0 (分區信息)
disklable /dev/ad0s2
03.查看核心信息
vmstat 1
04.查看進程
top ps auxww ps -ef |grep xxx
05.查看硬盤詳細分區信息&讀寫狀況
gstat
06.sysctl sysctl -a 查看所有變量(/etc/sysctl.conf)
sysctl kern.maxproc 查看特定變量
sysctl kern.maxfiles=5000 設置變量
07.查看磁盤空間使用情形 df 和 du
指令df用來查看整個檔案系統的使用情形,
如果您需要知道某個目錄的使用情形用指令du。
df -h
du -h /etc
du -sh /etc
-s 參數來省略指定目錄下的子目錄
-h 表示使用GB、MB等易讀的格式
08.斷電後系統無法啟動
a.啟動到sing user模式
b.fsck
c.reboot
09.升級內核後無法啟動
a.重啟機器到10秒讀秒時按enter以外的任意鍵(新版bsd按6)
b.unload
c.boot kernel.old 或其他可以啟動的內核
另外一種方法
a.使用cd1啟動,選擇Fixit-->CDROM/DVD
b.Fixit#mount /dev/ad0s2a /mnt mount硬盤上的文件系統
c.cd /mnt/boot
d.rm -rf kernel
e.cp -R kernel.old kernel
f.reboot
修改了/boot/loader.conf以後不能正常引導系統了,當機器開始加載
/boot/defaults/loader.conf的時候(未加載完)機器停止響應,我應該怎麼辦?
a.使用cd1啟動,選擇Fixit-->CDROM/DVD
b.Fixit#mount /dev/ad0s2a /mnt mount硬盤上的文件系統
c.cd /mnt/boot
d.vi loader.conf 去掉錯誤的加載項
e.reboot
10.丟失root密碼
啟動到單用戶模式,執行/sbin/mount -a, 然後用passwd更改密碼
/sbin/mount -a=掛接/etc/fstab裡所有列出的文件系統
如果單用戶登錄也需要密碼
a.使用cd1啟動,選擇Fixit-->CDROM/DVD
b.Fixit#mount /dev/ad0s2a /mnt mount硬盤上的文件系統
c.cd /mnt/etc
d.vi /ttys 找到when going to single-user mode,更改
console none unknow off insecure為secure
e.reboot,啟動到單用戶模式/sbin/mount -a,passwd
啟動到單用戶模式後,ctrl+d進入多用戶模式
####讓單用戶登錄也需要密碼
a.cd /etc
b.vi /ttys 找到when going to single-user mode,更改
console none unknow off secure為insecure
11.用win2000的引導器啟動FreeBSD
我在筆記本上裝了雙系統,win2000 和freebsd,裝完 freebsd後 系統自動設置如下:
f1 dos
f2 freebsd
先起動到dos下,fdisk /mbr,再把FreeBSD光盤上的boot\boot1複製到c:\,
再編輯c:\boot.ini 加一行c:\boot1="FreeBsd"
12.硬盤分區時shift+F -->NO可以使用全部空間
13.ctrl+alt+backspace 殺掉xwindows
14.alt+F1...F8 或 printscreensysr循環切換控制台
15.shutdown now 切換到單用戶模式
shutdown -p now shutdown -hp now 關閉電源
shutdown -r now reboot 重新啟動機器
shutdown -p +90 (90分鐘後關機)
shutdown 0203122359(0203122359表示2002年3月12日23:59,格式是yymmddhhmm)
16.掛載ntfs,fat32分區和u盤
ntfs: mount_ntfs -C eucCN /dev/ad0s5 /mnt/d
fat32:mount_msdos -L zh_CN.eucCN /dev/ad0s6 /mnt/e
u盤(scsi盤): mount_msdos -L zh_CN.eucCN /dev/da0s1 /mnt/u
cdrom: #mount_cd9660 /dev/acd0 /mnt/cdrom
NTFS在FreeBSD中只能只讀而無法寫入
17.卸載分區
umount /dev/ad0s5
umount -f /dev/ad0s5 (強制卸載)
18.在/etc/fstab中掛載fat32分區
/dev/ad0s5 /mnt/d msdos rw,-L=zh_CN.eucCN 2 2
19.如何在FreeBSD5.X以上加載,卸載ISO文件
mount iso文件:
mdconfig -a -t vnode -f myisofile.iso (屏幕輸出md0或者類似的設備名)
mount -t cd9660 /dev/md0 /cdrom
umount:
umount /cdrom
mdconfig -d -u 0 (上面的-u後面的數字和前面的md?中的數字一致)
mdconfig -l 命令可以列出關於配置 md(4) 設備的信息
20.聲卡
vi /boot/defaults/loader.conf
更改snd_ich_load="NO"->"YES" #intel ich
檢測聲卡 kldstat 或 dmesg |grep pcm
21.ls 命令詳解
ls 顯示本目錄下的文件及目錄
ls -a顯示本目錄下的所有文件及目錄(包括隱藏目錄和文件)
ls -l 顯示本目錄下所有文件的屬性
ls -l | grep ^d 只顯示目錄
ls -l | grep ^- 只顯示文件
ls -l | grep ^d | wc –l 統計當能目錄下的子目錄數
ls -l | grep ^- | wc –l 統計當能目錄下的文件數
ls -G 以顏色顯示目錄名和文件名
22.查找程序或文件
which 程序名
whereis 程序名
find 文件名
locate 文件名
locate: database too small: /var/db/locate.database的一種解決方法
a.這個僅僅是因為你開機時間不夠長,看看/etc/periodic/weekly/310.locate
b.試試運行/usr/libexec/locate.updatedb看
whatis xxx 要找東西但不知道它是什麼
grep bpf /usr/src/sys/i386/conf/GENERIC 在文件中找指定文本
#只能對文本進行grep,如是命令,則
command |grep text
grep text filename
23.xmms亂碼問題 (要拷貝simsun.ttf和taboma.ttf到/usr/X11R6/lib/X11/fonts/TrueType/)
在用戶目錄下建立 .gtkrc.mine 文件.代碼如下
style "gtk-default-zh-cn" {
fontset = "-*-tahoma-medium-r-normal-*-12-0-0-0-p-0-iso8859-1,
-misc-simsun-medium-r-normal-*-*-120-*-*-p-*-gbk-0,*-r-*" }
class "GtkWidget" style "gtk-default-zh-cn"
修改xmms中的字體設置,將播放清單及主窗口的字體修改為下面的設置
-*-tahoma-medium-r-normal-*-12-0-0-0-p-0-iso8859-1,
-misc-simsun-medium-r-normal-*-*-120-*-*-p-*-gbk-0,*-r-*
xorg6.9+xfce4+xmms
cd /usr/ports/chineses/xmms make install clean
拷貝simsun.ttf到/usr/X11R6/lib/X11/fonts/TTF/,無需要建立.gtkrc.mine
只要修改xmms中的字體設置,字體simsun,size 12就好了。
24.停止sendmail
vi /etc/rc.conf 加入
sendmail_enable="NONE"
25.you have mail
mail 回車,輸入1看第一封郵件...輸入?看幫助
mail 古老的 UNIX 郵件處理程序
如果我們要寄信給非本機的使用者,可以使用的收件人格式如下:
mail -s"hi, my friend"
jack@mymail.com 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
mail -s "hi, my friend"
jack@mymail.com 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
zh_CN.eucCN
28.遠程連接windows終端
rdesktop [-a 16 -f] server'IP[:port]
-a 16表示16位色,-f表示全屏
gui,grdesktop (/usr/ports/net/grdesktop)
29.播放APE格式音樂
/usr/ports/chinese/xmms/ /usr/ports/audio/xmms-mac(ape插件)xmms-wma(wma插件)
30.看圖
/usr/ports/graphics/xnview
31.apache22+php5+mysql+postgresql+ZendOptimizer
a,apache22:
cd /usr/ports/www/apache22
make install clean
b,php5:
cd /usr/ports/lang/php5
make install clean
選中APACHE,就可以聯編出用於與Apache web服務器配合使用的可動態加載的mod_php5模塊.
勿選debug,否則不能裝ZendOptimizer
c,php5擴展:
cd /usr/ports/lang/php5-extesions
make install [FORCE_PKG_REGISTER=yes] 強迫安裝
make clean
(除預設項目還應選中CTYPE,EXIF,GD,ICONV,IMAP,PCRE,SESSION,ZLIB)
FreeBSD中的PHP支持是高度模塊化的,因此基本安裝的功能十分有限。增加其他功能非常簡單,
只需通過lang/php5-extensions即可完成。這個port提供了一個菜單驅動的界面來幫助完成PHP
擴展的安裝。另外也可以通過對應的port來單獨安裝擴展。例如要將對於MySQL數據庫服務器
的支持加入PHP5,只需簡單地安裝databases/php5-mysql.
d,cp /usr/local/etc/php.ini.recommended /usr/local/etc/php.ini
e,ZendOptimizer
cd /usr/ports/devel/ZendOptimizer
make install clean
f,mysql:
cd /usr/ports/databases/mysql41-server
make WITH_OPENSSL=yes BUILD_OPTIMIZED=yes WITH_CHARSET=gbk WITH_XCHARSET=all SKIP_DNS_CHECK=yes install
./work/mysql-5.0.24/scripts/mysql_install_db
cd /usr/ports/databases/php5-mysql
make install clean
g,postgresql
cd /usr/ports/databases/postgresql81-server
make install clean
/usr/local/etc/rc.d/postgresql initdb
echo 'postgresql_enable="YES"' >> /etc/rc.conf
cd /usr/ports/databases/php5-pgsql
make install clean
32.怎樣刷新環境變量值,而不用退出再登陸?
a,比如要重新設置環境變量ABC的值為abcdef
bash$ export ABC=abcdef
csh% setenv ABC abcdef
b,更新了PATH變量指定目錄裡可執行命令
rehash
c,更新配置文件
比如你編輯了.cshrc等文件,就需要用source命令
source .cshrc
33.檢視軟件間的關聯
cd /usr/ports/sysutils/pkg_tree
make install clean
之後我們就可以使用 pkg_tree | more 來看各個軟件之間的關係了
34.使用 portupgrade 更新軟件
cd /usr/ports/sysutils/portupgrade
make install clean
配置文件:/usr/local/etc/pkgtools.conf
如果您只想要升級某一個軟件本身,而非所有相依的軟件,只要使用
portupgrade "pkgname" 即可。如果您要升級所有和該軟件相依的其它軟件,
則可以加上參數 -r。如果您要更新包含相依軟件的相依軟件,則可以使用
參數 -R。另外,您可以使用參數 -m 來要求編譯 (make) ports 時多傳入
一些參數,還可以使用參數 -f 要求就算版本一樣也強制更新。portupgrade
在更新軟件時,會保留您原本的設定檔。例如,在更新 Apache 時,它會保留
httpd.conf的設定。假設我們更新軟件perl-5.8,我們可以用下列指令更新:
# portupgrade -rRf "perl-5.8.*" -m "ENABLE_SUIDPERL=yes"
35.ports安裝失敗提示
stop in /usr/ports/lang/ruby18/work
刪除work目錄下所有文件&文件夾再次安裝即可.(make clean)
36.ntop--網絡監控軟件
cd /usr/ports/net/ntop
make install clean
vi /etc/rc.conf 加入
ntop_enable="YES"
在地址欄中輸入
http://x.x.x.x:3000
即出來管理界面.
37.修改/etc/rc.conf不重啟生效
a.sh /etc/rc
b./etc/netstart
38.freebsd啟動的時候停到blanktime的解決辦法
可以試試 這個參數:blanktime="NO"
etc/rc.conf 中把 default_router 註釋掉
#未驗證!!!
39.Bsd 下的QQ
eva不錯,運行速度飛快。
/usr/ports/net-im/eva
gaim-openq
/usr/ports/net-im/gaim-openq
40.一次性把所有安裝的ports刪除掉
a.pkg_delete -a
以下步驟去掉配置文件,解決一些疑難問題
rm -fr /usr/local/
rm -fr /var/db/ports/
cd /usr/ports && make NOCLEANDEPENDS=yes clean
portsnap fetch update
b.安裝pkg_cutleaves它會告訴你,哪些package沒有人依賴,並讓你決定要不要刪除
c.make deinstall與pkg_delete有什麼不同?
簡單來說,make deinstall會移除該port,並且不會參照其相依相關的ports。
pkg_delete在移除該port前,會參照其相依相關的ports,並且pkg_delete
有支援 wild card,如要移除所有p開頭的 ports,則:
cd /var/db/pkg/
pkg_delete p*
要注意的是,如果使用 `make deinstall',則最好確定系統目前所
安裝的版本,與 ports collection 中顯示的版本符合,否則有可能會出現非預
期性錯誤;而pkg_delete是因為直接刪除系統中所安裝的版本,所以沒有此問題。
因此,換句話說,當系統所安裝的版本符合ports collections中的版本,則可
以使用make deinstall或pkg_delete,否則的話最好用pkg_delete。
41.pure-ftp安裝
cd /usr/ports/ftp/pure-ftpd/
make WITH_LANG=simplified-chinese install clean
[X] BANNER Show pure-ftpd welcome upon session start
cd /usr/local/etc/
cp pure-ftpd.conf.sample pure-ftpd.conf
vi /etc/rc.conf -->加入pureftpd_enable="YES"
關於pureftpd的編碼問題
在win下登陸ftp然後建立中文文件夾,傳中文文件然後用FlashFXP登陸看到這些
中文文件和文件夾名字全部是亂碼.pure-ftpd.conf中強制用gbk就可以了.
FileSystemCharset gbk
ClientCharset gbk
42.開機自動校準時間
vi /etc/rc.conf--->加入
ntpdate_enable="YES" # Run ntpdate to sync time on boot (or NO).
ntpdate_flags="218.75.4.130" # cn.pool.ntp.org
43.將/usr/ports/distfiles/目錄放到/data/disktfiles
cd /usr/ports
mv distfiles /data/distfiles [移動]
ln -s /data/distfiles distfiles [鏈接][要在/usr/ports目錄下做]
ln -s source_file[_dir] target_file[_dir]
44.FreeBSD下面通過串口連接到路由器
使用cu -s speed -l line,就可以連接到COM口或者家貓的線路上,我用的是COM1口,
連接Cisco2924XL,使用cu -s 9600 -l ttyd0,即可連接上交換機配置界面。
45.電子書:CHM、PDF的查看
chmsee,kchmviewer,xpdf,xchm,Acrobat Reader...chmsee對中文支持比較好
/usr/ports/print/acroread7
46.使用axel或者prozilla加速你的port下載
a.axel(據說能搞定文件夾鉗套,不錯!推薦使用 )
cd /usr/ports/ftp/axel
make install clean
vi /etc/make.conf 加入
FETCH_CMD=axel -a
DISABLE_SIZE=yes
vi /usr/local/etc/axelrc 修改代碼
#num_connections = 4
num_connections = 10
4改為10,num_connections前面不留空格,否則出錯.
(-a 交互的進步指示器,num_connections = 10 10線程下載)
SIZE參數用來在取得文件之前檢查文件的大小.而DISABLE_SIZE則是是否開啟這項功能
b.prozilla(速度快,遇到欠套的文件夾會出問題)
cd /port/ftp/prozilla
make install clean
vi /etc/make.conf 加入
FETCH_CMD=proz -s -k=10 -r --no-curses
DISABLE_SIZE=yes
(-s 查找最快的境像,-k=10 10個線程下載,-r 重新開始一個被打斷的下載)
c.wget(未測試)
cd /usr/ports/ftp/wget/
make install clean
vi /etc/make.conf 加入
FETCH_CMD=wget -c -t 1
DISABLE_SIZE=yes #這行是必要的
d.在其它機器上fetch
make fetch-recursive (fetch:取得recursive:遞歸的)
然後將/usr/ports/distfiles拿走。
###make install設置是/etc/make.conf
###pkg_add是在~/.cshrc或~/.profile
e.vi /etc/csh.cshrc
加上以下一行可以在讓pkg_add先從更快的站點下載
setenv PACKAGEROOT
ftp://ftp.cn.freebsd.org
你可以先設定 PACKAGEROOT,這是用來抓取套件的位置,筆者通常設定
setenv PACKAGEROOT
ftp://ftp.tw.freebsd.org
因為這是我認為最穩定的機器,然後就可以透過pkg_add -r 套件名來安裝套件,
他會自動的到pub/FreeBSD/ports/i386/packages-4.9-release/Latest/底下
尋找套件,而且你不需要知道版本,只要知道套件名稱即可,他會自動安 裝
當時的最新版,中文的部分只要加上 zh-,像是 zh-xcin。
你也可以直接指定 PACKAGESITE 來指向特定的位置。像是你希望安裝的套件是
最新的,而不是 release 時的版本。
setenv PACKAGESITE
ftp://ftp.tw.freebsd.org/pub/Fre
... ages-stable/Latest/
f.vi /etc/make.conf
加上以下一行可以在讓make先從更快的站點下載ports Distfiles
MASTER_SITE_OVERRIDE?=http://ports.cn.freebsd.org/${DIST_SUBDIR}/
####http://ports.cn.freebsd.org/
Welcome to use FreeBSD Ports Distfiles Mirror.
This mirror is running on China Telecom 100Mbit network.
How to use? Set your /etc/make.conf like this:
MASTER_SITE_OVERRIDE?=http://ports.cn.freebsd.org/${DIST_SUBDIR}/
or like this:
MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
47.星際譯王
辭典程序: /usr/ports/textproc/stardict2/
簡體中文辭典:/usr/ports/chinese/stardict2-dict-zh_CN/
48.控制台調音量
mixer
49.How to build openoffice
cd /usr/ports/editors/openoffice.org-2.0
Building/installing/packaging a localized language package (Japanese version for example)
make LOCALIZED_LANG=ja install
去這裡
ftp://ooopackages.good-day.net/pub/OpenOffice.org/FreeBSD/
裡面的tbz文件,
可以直接pkg_add
50.OPERA,支持Flash瀏覽器
cd /usr/ports/www/linux-opera  
(注意是www/linux-opera,www/opera是不支持Flash的。)
cd /usr/ports/www/opera
make config
選中[X]SHARED Use a shared Qt library(instead of static)[解決在opera中輸入漢字的問題]
make install clean
安裝後的美化:
A.Tools->Preference->Advanced->Fonts,把所有的字體都改成Simsun,字體大小設成12。
B.最小字體大小(像素)改為12.[解決一些網站看不清楚的問題]
51.bt客戶端
/usr/ports/net-p2p/py-bittorrent 安裝完成後執行bittorrent
/usr/ports/net-p2p/rtorrent 功能多,速度快,還完美支持中文編碼!
52.emule客戶端
/usr/ports/net-p2p/amule2
53.ipguard解決arp攻擊
ipguard->Tool designed to protect LAN IP adress space by ARP spoofing
/usr/ports/security/ipguard
make install (不要clean參數,否則無ethers.sample文件)
補充:
A.以/usr/ports/security/ipguard/work/ipguard-0.04/doc/ethers.sample
文件為實例,建立/etc/ethers文件。
B.And then start ipguard:
cd /usr/local/etc/rc.d
mv ipguard.sh.sample ipguard.sh
/usr/local/etc/rc.d/ipguard.sh start
ipguard.sh啟動腳本裡默認有iface=fxp0,這裡應該替換為你做NAT的內網網卡名稱。
54.一些安裝參數
make fetch 只抓取tarball
make fetch-recursive 抓取安裝ports所有須要的其他ports的tarball
make fetch-list 列出port所需的文件
make clean Ports裡面make clean,會附帶著make clean依賴的軟件的
make -DBATCH install不需要用戶輸入任何東西
make -DINTERACTIVE install 繼續上一步
make configure
make distclean,刪除不想要的distfiles
55.pkg_info
pkg_info |grep zh-fcitx (查軟件版本)
#ls /var/db/pkg也可以查軟件版本
pkg_info -L zh-fcitx-3.4 (查看軟件安裝目錄和安裝的文件)
pkg_info -xL zh-fcitx (加x了不需要加軟件版本號)
pkg_info -r zh-fcitx-3.4 (查看軟件依賴情況)
pkg_info -W fcitx (查看fcitx屬於哪個軟件)
56.Ports如何清除安裝參數
cd /usr/ports/www/opera
make distclean移除不是port collections所期望下載的文件
make rmconfig清除用戶配置的參數
make showconfig查看當前配置的參數
make config更改參數
57.一款好用的網絡性能測試工具iperf
/usr/ports/benchmarks/iperf
58.FreeBSD用戶帳戶鎖定
a.用vipw把他的shell修改成/sbin/nologin就可以了.
b.pw lock useri 解鎖用pw unlock userid 59.中文locale
zh_CN.eucCN zh_CN.GBK zh_CN.GB18030 zh_CN.euc zh_CN.UTF-8
#語言代碼_國家代碼.字符編碼
#查看環境變量:locale
#目前還是zh_CN.eucCN(使用GB2312編碼)locale最為正式,也最為成熟。
60.本地化設置,以系統默認的csh為例
vi /etc/csh.cshrc 加入
setenv LANG zh_CN.eucCN (語言設為中文)
setenv LC_ALL zh_CN.eucCN (所有本地子集設為中文)
setenv XMODIFIERS @im=fcitx (X下的中文輸入法)
set prompt = "%B%m"(個性化控制台%B顏色%m主機%/目錄)
set autolist (自動補齊擴展)
set nobeep (告訴應用程式避免發出嗶嗶聲)
set filec (使檔案名稱在命令列被完成)
alias ls ls -FG (彩色化ls)61.fcitx小企鵝輸入法(有關步驟見60)
/usr/ports/chineses/fcitx
vi /root/.xinitrc 添加
exec fcitx& 到最前一行
62.安裝X Server xorg-6.9.0
1.cp freebsddisk1 disk2 PKG to /data/pkg61目錄
2.cd /data/pkg61
3.pkg_add xorg-6.9.0.tbz
4.rehash
5.X[Xorg] -configure (生成/root/xorg.conf.new)
6.X[Xorg] -config /root/xorg.conf.new (測試xorg.conf.new配置是否正確)
7.cp /root/xorg.conf.new /etc/x11/xorg.conf
63.安裝桌面環境gnome2 and xfce4 and kde3.5.1
gnome2-2.12.3
1.cd /data/pkg61
2.pkg_add gnome2-2.12.3.tbz
3.rehash
4.vi /root/.xinitrc 加入 exec gnome-session
#gnome2提示vi /etc/sysctl.conf,加入
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
kern.maxfiles=25000
xfce4
1.cd /usr/ports/x11-wm/xfce4
2.make install clean
3.rehash
4.vi /root/.xinitrc 加入 exec xfce4-session
kde-3.5.1
1.cd /data/pkg61
2.pkg_add kde-3.5.1.tbz
3.rehash
4.cd /usr/ports/chineses/kde3-i18n-zh_CN
5.make install clean (kde3漢化)
6.vi /root/.xinitrc 加入 exec startkde
pkg_add -r kde
pkg_add -r zh_CN-kde-i18n
pkg_add -r zh_CN-koffice-i18n
###more /root/.xinitrc
exec fcitx&
exec gnome-session
#exec xfce4-session
#exec startkde
#exec /usr/X11R6/bin/gnome-session
#exec /usr/local/bin/xfce4-session
#exec /usr/local/bin/startkde
64.在Xwindow中使用TrueType字體(simsun宋體,msyh雅黑,tahoma)
1.cp simsun.ttc /usr/X11R6/lib/X11/fonts/TTF/simsun.ttf
2.cp msyh.ttf tahoma.ttf /usr/X11R6/lib/X11/fonts/TTF/
3.cd /usr/X11R6/lib/X11/fonts/TTF
#下面4,5步驟更新字體信息,6重建字體緩存.
4.mkfontscale (生成fonts.scale)否則xorg報錯如下:
Could not init font path element/usr/X11R6/lib/X11/fonts/TTF/,removing from list!
5.mkfontdir (生成fonts.dir)否則xorg報錯如下:
(WW) `fonts.dir' not found (or not valid) in "/usr/X11R6/lib/X11/fonts/TTF/".
Entry deleted from font path.
(Run 'mkfontdir' on "/usr/X11R6/lib/X11/fonts/TTF/".
6.fc-cache -f -v (生成fonts.cache-1)
7.vi /etc/X11/xorg.conf 確認8
8.Load "freetype" (啟用支持TrueType字體)
#現在X應用程序已經記住已安裝的TrueType字體.
9.在gnome和其他X程序中把字體設置為宋體或雅黑.
65.xlsfonts顯示系統中安裝的字體
66.FreeBSD中3D加速功能的啟用
a.DRI。
這是實現3D功能最重要的部分。DRI是Direct Rendering Infrastructure,
可以簡單的把它理解為X和硬件間的接口.但它包含很多獨立的模塊,負責
從X到硬件的各個環節,包括內核。它最主要的工作就是將Mesa或OpenGL的
函數調用轉換為硬件的指令,從而指揮硬件進行渲染等工作。
b.測試你的顯卡是不是能實現3D功能,可以採取以下辦法:
1.dmesg | grep agp,如果出現:
agp0: mem
0xe0000000-0xe3ffffff at device 0.0 on pci0
的字樣,那麼你的顯卡就有可能實現3D功能.如果什麼也沒有的話,那麼
恭喜你,你再也不用為3D功能而費心了.
2.kldload drm,如果沒報錯的話,那麼你的顯卡基本上就可以實現3D功能了。
c.3D功能的確認
運行:glxinfo。在第二行或第三行,如果出現」Direct Rendering: YES「字樣,
那就說明已經啟用3D加速了。
more /var/log/Xorg.0.log | grep "direct rendering"如果出現下面的字樣,
(II) I810(0): direct rendering: Enabled那麼你的3D就啟用的。如果沒有,
那麼你要仔細讀/var/log/Xorg.0.log。它會在某一行告訴你沒啟用的原因的。
d.nvidia顯卡驅動安裝 cd /usr/ports/x11/nvidia-driver/
67.刷新率的問題,
將xorg.conf裡的Modes行改成:Modes "1024x768"(小寫的X)
選擇默認的分辨率和色深。 這是在 "Screen" 小節中定義的:
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
68.make world
cvsup -g -L 2 -h cvsup.freebsdchina.org standard-supfile (升級源碼樹)
cp /usr/share/examples/etc/make.conf /etc/make.conf
vi /etc/make.conf,保留如下內容
CFLAGS= -O -pipe
COPTFLAGS= -O -pipe
cd /usr/src/sys/i386/conf (更改內核配置文件)
cp GENERIC TDS
vi TDS (按需要修改其內容)
shutdown now (重啟到單用戶模式)
adjkerntz -i (確定本地時間設置)
cd /usr/src
make -j4 buildworld (編譯基本系統)
make buildkernel KERNCONF=TDS (編譯新內核)
make installkernel KERNCONF=TDS (安裝新內核)
reboot (重新啟動)
shutdown now (重啟到單用戶模式)
cd /usr/src
mergemaster -p (更新/etc目錄裡的文件,-p預建模式)
make installworld (安裝新的二進制)
mergemaster -Ui (更新makeinstallworld不更新的文件,-U進了6-STABLE了,這功能很讚,
就是他會看哪些/etc 的檔案,你沒有改過的,就會自動 merge,這樣子可以省下很多時間跟力氣。
shutdown -r now (重新啟動)
uname -a (查看系統信息)
cd /usr/src
make cleanworld (清除升級過程產生的臨時文件)
#############################################
中斷的 build 可以被恢復嗎
cd /usr/src
make -DNOCLEAN all
這樣就不會取消先前的 make buildworld 所做的工作。
##############################################
如果出現了錯誤我該怎麼辦?
刪除以往的系統更新樹
cd /usr/obj
chflags -R noschg *
rm -rf *
cd /usr/src
make cleandir
make cleandir
不錯,make cleandir 真的要執行兩次。
然後重新開始整個過程,使用 make buildworld 開始。
mergemaster -p的說明
mergemaster -p的作用是建立一個臨時的根環境,把新的配置文件映射到這個環境當中,
然後和系統的配置文件進行比較和處理,目的是保證系統配置文件的更新,這一點很重要!
在執行"mergemaster -p"的過程中,主要是進行以下處理:
檢測系統是否存在臨時的根環境,如果存在,讓用戶選擇是利用現有的還是刪除它,然後新建!
*** The directory specified for the temporary root environment,
/var/tmp/temproot, exists. This can be a security risk if untrusted
users have access to the system.
Use 'd' to delete the old /var/tmp/temproot and continue 刪除舊的/var/tmp/temproot
Use 't' to select a new temporary root directory 為temproot選擇新的目錄
Use 'e' to exit mergemaster 退出mergemaster
Default is to use /var/tmp/temproot as is
How should I deal with this? [Use the existing /var/tmp/temproot]
一般的處理是選 "d" ,刪除原有的目錄,系統開始重新建立這個臨時的根環境。
只要進行的不是大跨度的 FreeBSD 版本升級,可以簡單地跳過這一步.
mergemaster的說明
重新編譯整個系統不會使用新的或改過的配置文件更新某些目錄(尤其像 /etc,/var和/usr)
更新這些文件最簡單的方式就是使用 mergemaster,手工去做也是可以的,只要您願意。
不管您選擇哪一種,一定記得備份/etc 以防出錯。
mergemaster操作中可能會遇到以下操作提示:
Use 'd' to delete the temporary 刪除文件,不更新相應的系統配置文件
Use 'i' to install the temporary 安裝文件,使用新的配置文件覆蓋舊文件
Use 'm' to merge the temporary and installed versions 對舊的配置文件進行合併處理,並安裝
Use 'v' to view the diff results again 察看新文件與舊文件的差異
###跟蹤多台機器,以A.B2個機器為例。A要啟動nfs_server,B要啟動nfs_client
A:/etc/rc.conf
rpcbind_enable="YES"
nfs_server_enable="YES"
/etc/exports
/usr/src /usr/obj /usr/ports -maproot=0 192.168.0.61(B-ip)
B:/etc/rc.conf
nfs_client_enable="YES"
A.cd /usr/src
make -j4 buildworld (編譯基本系統)
make buildkernel KERNCONF=TDS (編譯新內核)
B。mount b-ip:/usr/src /usr/src
mount b-ip:/usr/obj /usr/obj
cd /usr/src
make installkernel KERNCONF=TDS (安裝新內核)
reboot (重新啟動)
shutdown now (重啟到單用戶模式)
cd /usr/src
mergemaster -p (更新/etc目錄裡的文件,-p預建模式)
make installworld (安裝新的二進制)
mergemaster -U (更新makeinstallworld不更新的文件,-U進了6-STABLE了,這功能很讚,
69.freebsd上下的jdk的安裝方法(FreeBSD基金會提供的diablo-jdk)
cd /usr/ports/java/diablo-jdk15
最好是通過port的diablo-jdk安裝,而不是直接pkg_add,因為後者可能會出現依賴關係不對的問題。
JDK與JRE的關係
JAVA DEVELOPMENT KIT 與JAVA RUNTIME ENVIROMENT之間是什麼關係?
JRE只是Java的運行環境,而JDK是Java的開發、運行和調試一體的環境。
JAVA環境變量的設置
csh 就在/etc/csh.cshrc
setenv JAVA_HOME /usr/local/diablo-jdk1.5.0
setenv CLASS_PATH .:/usr/local/diablo-jdk1.5.0/lib/dt.jar
bash就在/etc/profile
export JAVA_HOME=/usr/local/diablo-jdk1.5.0
#export CATALINA_HOME=/usr/local/jakarta-tomcat5
export CLASSPATH=.JAVA_HOME/jre/lib/rt.jarJAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar
70.查找最快的cvsup站點
cd /usr/ports/sysutils/fastest-cvsup
make install clean
fastest-cvsup -c jp,cn,hk,us
71.chmod 命令概解:chmod命令用於改變文件的運行級別(讀=4寫=2執行=1)
chmod 400 files 給某文件以只讀權限
chmod 600 files 給某文件以只讀、寫權限
chmod 700 files 給某文件以只讀、寫、執行權限
chmod -R 400 directory 改變某目錄下所有文件的運行權限為只讀權限
chmod -R 600 directory 改變某目錄下所有文件的運行權限為以只讀、寫權限
chmod -R 700 directory 改變某目錄下所有文件的運行權限為只讀、寫、執行權限
72.chown概解:改變文件及文件夾的用戶所屬
chown root:wheel files 改變文件的用戶為root用戶組為wheel組
chown -R root:wheel directory 改變目錄的用戶為root用戶組為wheel組
73.crontab 指令語法
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
crontab 提供我們在固定的間隔時間執行自訂的程序、系統指令或 shell secrip。時間間隔的單位可以是分鐘、
小時、日、周、月及以上的任意組合。允許使用者離線執行,並且可以將執行結果以 email 通知使用者。因此,
非常設合對週期性的管理分析或數據備份等工作。
基本上,crontab 的指令格式分為六個部分,前五個為時間間隔,最後則是執行的指令。每一個部分用空格來區隔。
crontab -e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定
VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
crontab -r : 刪除目前的時程表
crontab -l : 列出目前的時程表
crontab file [-u user]-用指定的文件替代目前的crontab。
時程表的格式如下:
f1 f2 f3 f4 f5 program
分 時 天 月 星期幾 要執行的程序
當 f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程序,其餘類推
當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推
使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
先前曾提到,crontab 的格式分成六個部分,前五個是時間參數。在上例中你會發現除了數字與英文名稱,
有使用到符號"*",這個符號代表每一單位的意思,譬如30 3 * * *既代表30分3點每日每月星期的每天。
時間的指定,可以是單一的數字,或幾個數字用逗號來連接。看下例
30 3,12 * * * /root/fbin/bak-web
其中的第二項為 3,12,這代表 3 以及 12 小時的意思。再來看下例
30 */6 * * * /root/fbin/bak-web
我把第二項改成 */6 這代表每 6 小時,也相當於 6,12,18,24 的作用。此外還有一個區段的做法
30 8-18/2 * * * /root/fbin/bak-web
我把第二項改成 8-18/2 這代表在 8 小時到 18 小時之間每 2 小時,也相當於 8,10,12,14,16,18 的作用
74.使用portsnap更新系統ports
portsnap從6.0開始引進系統,給與用戶方便的更新系統ports
portsnap的命令比較少,fetch 獲取數據,extract 釋放全部ports,update 更新ports
第一次使用可以portsnap fetch extract,以後使用可以portsnap fetch update
國內鏡像站
portsnap.hshh.org
portsnap2.hshh.org
portsnap3.hshh.org (網通)
使用方法:
/etc/portsnap.conf 裡面更改
SERVERNAME=portsnap.hshh.org
使用portupgrade 更新已安裝的軟件
75.清屏
clear或ctrl+L
76.freebsd 怎麼安裝GF4 MX 440的顯卡
首先更新ports和src,到/usr/ports/x11/nvidia-driver下make install clean,要選中linux的支持。
然後到/usr/ports/x11/nvidia-xconfig下make install clean,還可以到/usr/ports/x11/nvidia-settings下安裝控制面板。
運行nvidia-xconfig會自動生成xorg.conf文件,然後根據需要自行更改。
77.如何知道一個文件屬於哪個port,比如libplds4.so.1
pkg_info -W filename
78.mplayer
cd /usr/ports/multimedia/mplayer
make install clean
問題:如何讓mplayer支持srt格式的字幕?
解答:首先複製一個中文ttf字體文件到 ~/.mplayer/ 目錄下,並改名為 subfont.ttf ;然後在gmplayer的選項
(Preferences)->Subtitle & OSD 中將 Encoding 項選為「Simplified Chinese charset (CP936)」。如果你還
使用命令行播放電影,還需要在 ~/.mplayer/config 文件中加上這麼一行:subcp=cp936 。如果仍然不能
顯示字幕,請看看字幕文件名和電影文件名是否相配:如果avi文件是movie.avi的話,字幕文件名應該是movie.srt。
問題:怎麼mplayer不能顯示.idx+.rar格式的字幕?
解答:先將rar文件中的sub文件解壓出來 。
問題:如何讓mplayer的播放窗口保持在最前面?
解答:修改 ~/.mplayer/config 文件,加上這麼一行:ontop=yes 。
問題:如何讓mplayer的畫面隨窗口大小自動縮放呢?
解答:修改 ~/.mplayer/config 文件,加上這麼一行:zoom=yes。
測試通過by tds 061119。fb61+xorg6.9+xfce4+gmplayer
79.設置控制台高分辯率
1.在內核配製文件裡加入下面的編譯內核
options VESA
options SC_PIXEL_MODE
第一行選項讓內核支持VESA 2,第二行讓內核支持控制台圖形模式。
2.vidcontrol -i mode 查詢出所有模式
......
279 (0x117) 0x0000000f G 1024x768x16 1 8x16 0xa0000 64k 64k 0xd8000000 65536k
280 (0x11 0x0000000f G 1024x768x32 1 8x16 0xa0000 64k 64k 0xd8000000 65536k
......
3.測試模式
vidcontrol MODE_280
4.vi /etc/rc.conf加入下面這條
allscreens_flags="MODE_280"
5.把console改成黑底綠字的
vidcontrol green
80.設置FreeBSD console下的字體大小
vidcontrol -f ...
81.鎖住終端
lock -np
-n 永不超時,-p 使用系統密碼作為開啟終端的密匙
82.刻錄CD ISO映像文件
burncd -f /dev/acd0 -s max data imagefile.iso fixate
刻錄一個文件到CD上而不創建ISO9660文件系統
burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate
生成ISO文件
mkisofs -o imagefile.iso /path/to/tree
把數據CD複製成一個與之等價的鏡像文件
dd if=/dev/acd0 of=file.iso bs=2048
83.類似flashget的東東download for X,d4x
/usr/ports/ftp/downloader
84.使用watch監視終端
1.編輯核心加入pseudo-device snp或者kldload snp
2.cd /dev ./MAKEDEV snp0 snp1
3.watch ttyp1
去換終端ctrl-x
退出watch ctrl-g
85.kldload xxx 加載xxx模塊
kldstat 查看已加載的模塊
kldunload xxx 從核心中移除
86.讓程序讀取新的配置文件
kill -HUP 199 (進稱號)
killall -HUP sshd (進程名)
上述指令中的參數 -HUP 也可以使用 -1 來取代
87.登入後的訊息Message Of The Day(motd)
編輯 /etc/motd 來製作自己的畫面
登入前的訊息
修改 /etc/gettytab 及 /etc/issue
編輯 /etc/gettytab,找到 default的地方。
default:\:cb:ce:ck:lc:fd#1000:im=\r\n%s/%m (%h) (%t)\r\n\r\n:sp#1200:\
:if=/etc/issue:
其中的%s %m %h %t分別對應到FreeBSD i386 example.com ttyp0,如果你不想顯示FreeBSD,
就把%s拿掉。最後一行if=/etc/issue就是表如果沒有issue這個檔的話,就執行default。
88.變更自己所使用的Shell
chsh -s /bin/tcsh
上述指令將Shell變更成/bin/tcsh。注意!輸入的shell名稱一定要存在於/etc/shells中
89.Shell 的環境變量
tcsh可以使用setenv看目前所有的環境變量,也可以使用setenv來改變一個環境變量的值
setenv EDITOR ee
如果您使用的是 Bourne Shell:
export EDITOR="ee"
90./etc/master.passwd 介紹
FreeBSD使用shadow password的方式來保護密碼文件,只有root才可以讀取編碼後的密碼文件
/etc/master.passwd。但是這並不是系統用來驗證的檔案,為了加快速度,FreeBSD將該文件
做成數據庫/etc/spwd.db及/etc/pwd.db,因此在修改完master.passwd後,必須使用指令
pwd_mkdb來將master.passwd做成數據庫檔案。不過一般而言,我會使用vipw這個指令來修改
master.passwd,vipw會先將master.passwd以預設的文書編輯軟件打開,修改完存盤後,
它會視需要自動更新數據庫。
pwd_mkdb -p -d /etc /etc/master.passwd
master.passwd這個檔案內容中,每個使用者都是獨立的一行,每個字段使用冒號分開,格式是:
name:password:UID:GID:class:change:expire:fullname:home:shell
pwd_mkdb介紹
如果我們直接以文書編輯軟件來修改/etc/master.passwd,在修改完後,必須執行pwd_mkdb
來將更新的數據做成系統可以讀取的數據庫文件。pwd_mkdb還會自動建立/etc/passwd。
91.將使用者目錄擁有者更改為所屬的使用者
chown -R user:group /home/user
使用參數-R將目錄user及其下所有檔案及子目錄的擁有人改變成user
92.記錄使用者指令
修改 /etc/rc.conf,加上下列一行設定:
accounting_enable="YES"
系統會將使用者的歷程記錄在/var/account/acct*中,最新的記錄是acct
當下達指令lastcomm時,則系統會以/var/account/acct為參考,印出所記錄的數據。
也可以使用lastcomm -f acct1來查看前一天的資料。
93.sudo
如果你希望它能將執行sudo的log記下來的話,必須先編輯/usr/ports/security/sudo/Makefile,
將CONFIGURE_ARGS中的參數 --disable-log-wrap 拿掉。
cd /usr/ports/security/sudo
make install clean
安裝完後,我們要先執行/usr/local/sbin/visudo以設定sudo的設定檔(/usr/loca/etc/sudoers)
設定完後,使用者即可執行sudo ,使用者只要輸入自己的密碼即可,不必知道root密碼,
而且5分鐘內再次執行sudo時不需再輸入密碼。如果你有打開log記錄功能,sudo執行成功或失敗的log
都將被記錄到/var/log/sudo.log中。
94./usr/ports/dns/ddclient動態dns更新軟件
95.SCSI工具camcontrol
camcontrol devlist 查看目前所有USB裝置
ATA工具
atacontrol list 查看目前所有ATA裝置
96.如果我們只知道一個關鍵詞,卻不知要使用哪一個指令,我們可以使用參數k來查詢。
例如我們要查詢 firewall 相關的指令:man -k firewall
97.bg
將指定的程序放入背景中執行。當我們下達一個指令後,必須要等待該程序結束後才能輸入下一個命令。
如果該程序必須執行一段很長的時間,我們不想等程序結束,可以把它放到背景中執行。在下達指令後,
按 Ctrl+Z 來暫停程序,接著再執行 bg 即可將程序放到背景中執行。
$ sleep 1000
^Z
Suspended
$ bg
[1] sleep 1000 &
我們也可以在所要執行的指令後面加上符號 "&",就可以將該程序放到背景執行:
$ sleep 1000 &
[2] 46461
98.jobs
jobs 指令可以讓我們查詢目前有哪些程序在背景執行。如果加入參數 -l 可以得到 PID 的信息。
jobs -l
[1] + 46459 Running sleep 1000
[2] - 46461 Running sleep 1500
99.fg
將指定的程序放到前景中執行。我們使用jobs看到目前在背景執行的程序之後,可以使用fg把它叫回前景。
例如要叫回第一個在背景中執行的程序:
fg %1
sleep 1000
100.sync
讓系統暫存的數據強制存回硬盤
101.cp -Rp sourdir tardir
-R完成遞歸複製(即可以複製目錄以下的所有內容),-p保留文件的時間、所屬等等
102.ssh
[email=username@hostname]username@hostname[/email]
從遠程拷貝 scp
[email=user@host:/path/to/files]user@host:/path/to/files[/email]
local_file_name
拷貝到遠程 scp local_file_name
[email=user@host:/path/to/files]user@host:/path/to/files[/email]

103.使用Portaudit監視第三方安全問題
cd /usr/ports/security/portaudit && make install clean
安裝完成之後更新數據庫
portaudit -Fda
使用下面的命令對通過Ports Collection安裝的第三方軟件工具進行審計
portaudit -a
104.我要怎麼從 X 切換到 virtual consoles?
請用Ctrl+Alt+Fn以切回至console。Ctrl+Alt+F1可以切回至第一個console。
當你切回至文字console後,你就可以使用一般的Alt+Fn組合鍵在各console之間切換了。
要回到X的話,你就可以使用Alt+F9以返回至X中。
105.FB下Free的殺毒軟件
clamav (security/clamav)
man clamscan 掃瞄
man freshclam 更新病毒庫
man clamd
man clamdscan
man sigtool
配置文件
/use/local/etc/freshclam.conf
/usr/local/etc/clamd.conf
把conf裡的#Example去掉
# Comment or remove the line below.
#Example
/etc/rc.conf加入
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
106.軟件默認配置示例文件的一般存放位置
/usr/share/examples
/usr/local/share/examples
107.安裝文泉驛字體
cd /usr/ports/x11-fonts/wqy/
make install clean
108.把/data/tftp打包成pxeinstfb62.tgz
cd /data/
tar zcvf pxeinstfb62.tgz tftp
解壓
tar zxvf pxeinstfb62.tgz
109.ports下有沒有xxx這個軟件?在哪個目錄下?
回答:有兩種辦法來查找,一是通過軟件名:
make fetchindex
cd /usr/ports
make search name=xxx | grep ^Path
另一種是通過關鍵字,也就是在軟件名和說明中只要包括這個單詞的都會查找出來:
cd /usr/ports
make search key=xxx | grep ^Path
110.FreeBSD如何獲得硬件信息?
sysctl -a | grep "^dev\."
pciconf -lv

screen + dvtm tiling window的脫機版

dvtm真是的個好用的東西,補足了screen在layout上的不足,以往使用screen都需要開很多個shell之後在很多個shell中快速的切換,有的時候抄個東西就要換個畫面,實在非常的麻煩,然而dvtm補足這個部份,它可以將一個shell切成數個,並以tiling的方式layout出來,因此可以在同一個畫面上邊寫程式、debug、看執行結果

1. 安裝方式
# cd /usr/ports/sysutils/dvtm
# make install clean (若要修改keybind的話先make patch之後去改config.h檔)

2. 實際使用圖


3. Keyboard Command (原始程式)
Mod : 預設為 ^g, 更改於 config.h 或 -m 的方式
Mod-c : 新增一個 window.
Mod-x : 關閉目前 window.
Mod-l : 增加 5% 主視窗的寬度.
Mod-h : 減加 5% 主視窗的寬度.
Mod-j : 移到下一個視窗.
Mod-k : 移到上一個視窗.
Mod-[1..n] : 移到第 n 個視窗
Mod-. : Toggle minimization of current window.
Mod-u : Focus next non minimized window.
Mod-i : Focus prev non minimized window.
Mod-m : Maximize current window (change to fullscreen layout).
Mod-PageUp : Scroll up.
Mod-PageDown : Scroll down.
Mod-Space : Toggle between defined layouts (affects all windows).
Mod-Enter : Zooms/cycles current window to/from master area.
Mod-t : Change to vertical stack tiling layout.
Mod-b : Change to bottom stack tiling layout.
Mod-g : Change to grid layout.
Mod-s : Shows/hides the status bar.
Mod-r : Redraw whole screen.
Mod-G : Escape the next typed key.
Mod-X : Lock screen.
Mod-M : Toggle dvtm mouse grabbing. Mod-q Quit dvtm.

Mouse commands
Copy and Paste : 按 SHIFT 加左鍵反白要 Copy 的文字,SHIFT 加中鍵為貼上
Button1 click : Select window.
Button1 double click : Select window and toggle maximization.
Button2 click : Zooms/cycles current window to/from master area.
Button3 click : Toggle minimization of current window.

4. Keyboard Command (自訂改過config.h)

Mod = ^q
Mod-c = 新增一個視窗
Mod-x = 關閉一個視窗
Mod-j = 減少5%視窗寬度
Mod-l = 增加5%視窗寬度
Mod-1~n = 移動到第n個視窗
Mod-. = 視窗最小化
Mod-k or n = 移動到下個視窗
Mod-i or p = 移動到前個視窗
Mod-t = 變成tiling layout
Mod-b = 變成bottom layout
Mod-g = 變成grid layout
Mod-m = 變成max layout
Mod-r = 所有視窗重繪
Mod-X = 鎖定整個dvtm 先輸入密碼後按enter鎖定。重打一次回復
Mod-M = 啟動/關閉滑鼠
Mod-space = 切換layout
Mod-pageup = PageUP
Mod-pagedown= PageDown

Mouse commands

Copy and Pasts : 按SHIFT加左鍵反白要Copy的文字,SHIFT加中鍵為貼上
Button1 click : Select window.
Button1 double click : Select window and toggle maximization.
Button2 click : Zooms/cycles current window to/from master area.
Button3 click : Toggle minimization of current window.

send-pr (Problem Report)

使用freebsd快一年了,今天在使用thunar這個file manager的時候發現了一個問題,當建立目錄的時候用所建出來的權限一直都是777,明明我的umask是設為022怎麼建出來是有問題的,因此追了一下程式加上問google,才發現這是一個bug,但是在freebsd ports tree裡面還沒有加入,因此也是第一次機會可以送出屬於自己的PR。

1. 複製一個原始port,還沒有加入patch的
# cd /usr/ports/x11-fm/
# cp -rfv thunar thunar.orig

2. 開始修改加入patch
# cd /usr/ports/x11-fm/thunar
# make patch (先讓此ports先patch網上存在的修正檔)
# cd work/Thunar-1.0.1/thunar-vfs/
# cp thunar-vfs-io-jobs.c thunar-vfs-io-jobs.c.orig

3. 修改thunar-vfs-io-jobs.c
把檔案修改完之後存檔

4. 輸出與原始檔案比對之後相異處的patch檔
# cd /usr/ports/x11-fm/thunar/work/Thunar-1.0.1 (主程式src的根目錄)
# diff -u thunar-vfs/thunar-vfs-io-jobs.c.orig thunar-vfs/thunar-vfs-io-jobs.c > patch-thunar-vfs-io-jobs.c
# mv patch-thunar-vfs-io-jobs.c ../../files/ (移到ports修正檔目錄中)
此看我們可以看到在/usr/ports/x11-fm/thunar/files/裡面存在patch-thunar-vfs-io-jobs.c
--- thunar-vfs/thunar-vfs-io-jobs.c.orig 2009-04-04 17:03:02.000000000 +0800
+++ thunar-vfs/thunar-vfs-io-jobs.c 2010-04-21 21:51:09.000000000 +0800
@@ -433,7 +433,7 @@

again:
/* try to create the file at the given path */
- fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, DEFFILEMODE);
+ fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, 0666);
if (G_UNLIKELY (fd < 0))
{
/* check if the file already exists */
@@ -708,7 +708,7 @@
_thunar_vfs_job_process_path (job, lp);

/* try to create the target directory */
- if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777 & ~umask(0), THUNAR_VFS_IO_OPS_NONE, error))
+ if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777, THUNAR_VFS_IO_OPS_NONE, error))
return FALSE;
}

以上是我們做完patch之後的內容

5. 驗證patch是否正確修正
# make clean (將整個port工作目錄清掉)
# make patch (重做一次patch看是否有套用自己有修改的部份)

6. 比對原始未修正的port與目前已修正的port
# cd /usr/ports/x11-fm/thunar (不是thunar.orig喔thunar.orig是原始未修改目錄)
# make clean (清掉驗證時的工作目錄,目前整個目錄除了多了一個patch-thunar-io-jobs.c整個目錄應該和原本的一樣了)
# port diff -d .orig > /tmp/thunar.patch
.orig是剛剛複製目錄時候所加的結尾,目的就是要讓port這個工具幫我們比對整個新的thunar目錄與原始的thunar.orig目錄有何差異,並輸出差異內容,我們把差異內容放在/tmp下面,最後這個在/tmp下的thunar.patch就是我們要send-pr的附加檔,內容為
===> Generating patch
===> Viewing diff with more
diff -ruN --exclude=CVS /usr/ports/x11-fm/thunar.orig/files/patch-thunar-vfs-io-jobs.c /usr/ports/x11-fm/thunar/files/patch-thunar-vfs-io-jobs.c
--- /usr/ports/x11-fm/thunar.orig/files/patch-thunar-vfs-io-jobs.c 1970-01-01 08:00:00.000000000 +0800
+++ /usr/ports/x11-fm/thunar/files/patch-thunar-vfs-io-jobs.c 2010-04-21 22:01:36.000000000 +0800
@@ -0,0 +1,20 @@
+--- thunar-vfs/thunar-vfs-io-jobs.c.orig 2009-04-04 17:03:02.000000000 +0800
++++ thunar-vfs/thunar-vfs-io-jobs.c 2010-04-21 21:51:09.000000000 +0800
+@@ -433,7 +433,7 @@
+
+ again:
+ /* try to create the file at the given path */
+- fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, DEFFILEMODE);
++ fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, 0666);
+ if (G_UNLIKELY (fd < 0))
+ {
+ /* check if the file already exists */
+@@ -708,7 +708,7 @@
+ _thunar_vfs_job_process_path (job, lp);
+
+ /* try to create the target directory */
+- if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777 & ~umask(0), THUNAR_VFS_IO_OPS_NONE, error))
++ if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777, THUNAR_VFS_IO_OPS_NONE, error))
+ return FALSE;
+ }
+
===> Done

※ports這個工具是在/usr/ports/ports-mgmt/porttools/沒有的話自行安裝

7. send-pr
# setenv EDITOR vim (設定pr的編輯器為vim)
# send-pr -a /tmp/thunar.patch (-a為附加檔案)
接下來就是要填入pr裡面許多的欄位了,這裡列出需要修改的部份
From: Clockwork Box 
Reply-To: Clockwork Box
Originator: Clockwork Box
Synopsis: [PATCH] x11-fm/thunar: fix umask handling
Serverity: non-critical
Priority: low
Category: ports
Class: update
Description:
Fix umask handling, when create directory.

填完離開存檔,它就會問你要不要send送出,選擇送出就完成了

8. 等待郵送過去之後就會收到一封由FreeBSD-gnats-submit@freebsd.org所寄過來的信
Thank you very much for your problem report.
It has the internal identification `ports/145916'.
The individual assigned to look at your
report is: freebsd-ports-bugs.

You can access the state of your problem report at any time
via this link:

http://www.freebsd.org/cgi/query-pr.cgi?pr=145916

>Category: ports
>Responsible: freebsd-ports-bugs
>Synopsis: [PATCH] x11-fm/thunar: fix umask handling
>Arrival-Date: Wed Apr 21 12:50:04 UTC 2010

透過這封信就可以追蹤到目前送出的patch有沒有被accept

無線網路設定 wpa_supplicant and wpa_cli

不論在linux系統或是BSD系統上,設定無線網卡一直都是個很麻煩的問題,尤其是一開始安裝基系統,沒有圖形介面,這樣需要上網抓東西怎麼抓是個很大的問題,然而wpa_supplicant這個軟體幫我們管理和存取點認證相關的問題,之後直接建立連線,是個很方便的作法,我在這裡提供一下目前我機器上的設定和配置方式。

系統:FreeBSD 8.0 stable
/etc/wpa_supplicant.conf 主要設定檔
/usr/share/examples/etc/wpa_supplicant.conf 範例設定檔

wpa_supplicant.conf 必須加入以下兩行
ctrl_interface=/var/run/wpa_supplicant #讓supplicant可以建立行程pid
update_config=1 #讓wpa_cli程式可以更新控制wpa_supplicant


1. 先設定系統啟動時使用wpa_supplicant
# vim /etc/rc.conf 加入
wlans_ath0="wlan0" #建立網卡介面freebsd8.0定義的,產生wlan0網卡介面
ifconfig_wlan0="WPA DHCP" #設定wlan0網卡使用wpa_supplicant認證並DHCP取得IP


2. 建立wpa_supplicant.conf設定檔
把剛剛所建立的wpa_supplicant.conf複製到/etc目錄下

此時重開機系統就會自動啟動,然而也可手動啟動

3. 手動啟動/停止/重啟wpa_supplicant
# /etc/rc.d/wpa_supplicant start|stop|restart wlan0

然而空空的設定檔,對於任何的AP都沒有定義,所以等於是做白工,因為現在最重要的部份就是開始寫你的設定檔,那要寫什麼列?以下是一些範例

4. 設定wpa_supplicant中AP的資訊和密碼,其實系統提供的範例就足夠參考了
# Shared WEP key connection
network={
ssid="wlan0" #AP名稱
key_mgmt=NONE #和wpa的psk是互斥的,沒指定就要使用psk)
wep_key0="1234512345" #需要的密碼
}
# Shared WEP key connection using Shared Key
network={
ssid="ap1411a"
key_mgmt=NONE
wep_key0="1234567890"
auth_alg=SHARED
}
# Planintext connection沒有上鎖的AP
network={
ssid="YZUWLAN"
key_mgmt=NONE
}
# WPA-PSK connection
network={
ssid="AP1411A"
psk="iplababab1411" #wpa認證密碼
}


5. 啟動wpa_supplicant
到這裡有兩種重啟方式,第一種直接reboot機器,第二使用以下指令
# /etc/rc.d/wpa_supplicant restart wlan0

6. 使用wpa_cli控制和管理wpa_supplicant
# wpa_cli -i wlan0 status (看看目前的狀態)
# wpa_cli -i wlan0 help (查看參數與指令)
# wpa_cli -i wlan0 terminate (關閉wpa_supplicant)
# wpa_cli -i wlan0 interface (查看有那些無線網卡介面)
# wpa_cli -i wlan0 list_networks (查看wpa_supplicant.conf檔裡的設定)
# wpa_cli -i wlan0 select_network (選擇不同的AP,id為AP代號0,1,2,3...)
# wpa_cli -i wlan0 enable_network
# wpa_cli -i wlan0 disable_network
# wpa_cli -i wlan0 remove_network (刪除AP資訊)
# wpa_cli -i wlan0 reconfigure (重新讀取wpa_supplicant.conf設定內容)
# wpa_cli -i wlan0 save_config (儲存寫入到wpa_supplicant.conf中,否責變更無效)
# wpa_cli -i wlan0 disconnect (斷線)
# wpa_cli -i wlan0 reconnect (重新連線)
# wpa_cli -i wlan0 scan (掃描附近的AP)
# wpa_cli -i wlan0 scan_results (印出附近AP的相關資訊)

以上常常用到的差不多是disconnect, reconnect, scan, scan_results, select_network, list_networks, status, reconfigure

※wpa_supplicat是個非常好用的工具,讓我們不必自己去一行一行用指令去設定要連結的AP相關資訊,而可以透過wpa_supplicant.conf設定檔,讓系統開機之後自動搜尋附近AP如果已建立資訊的,就會自動連結好,而如果你換了一個地方,要更換無線網路設定,也只需要用wpa_cli select_network 就可以把網路切換過去。

single-user mode 救援模式

當系統被改壞的時候,或是無法進根檔案系統的時候,就需要使用single-user mode了,進入之後在對改錯的地方修正,重開機就OK了

系統重啟時如果有選單的話,直接選4就可以進入single-user mode了,如果像我連選單都不開的話,就需要在帶入核心 前按下任意鍵,此時就會有個OK的提示符號出現,可以使用 help看一下提供什麼功能,如果要進入single-user mode 的話直接輸入

OK> boot -s

以上輸入完畢之後,系統就開始由單使用者方式進入系統,而檔案系統都是使用read-only方式掛載,此時就可以修正需要修正的地方了。

通常進入拿到的shell是B shell其難用無比,所以我通常都會第一時間執行tcsh

# /bin/tcsh

之後就可以始對錯誤的地方修正了 ,如果需要檢查和修正檔案系統的話可以使用

# fsck -y /dev/da4s1a
# fsck -y /dev/da4s1d

然而如果因為在/etc下錯砍了不知道什麼檔以造成系統無法啟動的話,除了在單人模式把設定檔修正以外,如果實在太多,而且也不知道有那些的話,可以拼一下用升級系統方式直接升級設定檔,如此一來遺失的設定檔可以補回

# cd /usr/src
# mergemaster

系統就會比對少的檔就會叫你安裝了, 如此一來就可以補齊檔案,如果src裡面的原始檔已經和此次建立的不同的話,那等救回來開機進去之後,要把整個系統都升級,因為你已經用了新的設定檔,但是整個系統都還是舊的。

256 colors

在unix系統上,本來只有16色的,不過漸漸的,許多的應用程式都支援256色了,像是常用的xterm, urxvt, screen等都支援256色表示,此篇來介紹一下如何打造一個256色的環境。

1. xterm, rxvt-unicode, screen 支援256色
要達成預期的效果,當然是軟體需要重新編譯進加上支援256色的設定,如果你已安裝了,可以透過portupgrade使用-m的參數將256色支援的選項傳給ports來重新編譯。

軟體已安裝的人請用以下的指令
# portupgrade -ufv x11/xterm -m WITH_256_COLOR=yes
# portupgrade -ufv x11/rxvt-unicode -m WITH_XTERM_COLOR=yes
# cd /usr/ports/sysutils/screen && make config (選取256色支援)
# portupgrade -ufv sysutils/screen

未安裝的人請用以下的指令由ports安裝
# cd /usr/ports/x11/xterm && make WITH_256_COLOR=yes install clean
# cd /usr/ports/x11/rxvt-unicode && make WITH_XTERM_COLOR=yes install clean
# cd /usr/ports/sysutils/screen && make config (選取256色支援) && make install clean

2. 完成軟體支援之後先測試一下是不是可以正常支援256色了
下載 http://www.frexx.de/xterm-256-notes/data/256colors2.pl 是個perl程式
# perl ./256color2.pl 如果有支援的話,那應該會出現256種顏色

3. 之後就可以開始使用256種顏色了
可以參考以下兩個網頁的教學
http://www.frexx.de/xterm-256-notes/
http://www.pixelbeat.org/docs/terminal_colours/
使用256色的指令碼就像使用ansii color 16色一樣是由一些跳脫字元表示
\033[38;5;0~255m 設定前景色
\033[48;5;0~255m 設定背景色

以上適用於程式做printf出來使用,如果使用要使用在prompt或是用在motd的話需要在文字中直接寫入跳脫字元,以vim為例,要插入跳脫字元\033為先按下ctrl+v之後按下ESC鍵,即可輸入\033跳脫字元,而在編輯器中看到大概會是這樣
^[[38;5;0~255m 要上色的文字 ^[[m

如我的prompt就使用了256色來表示

mimetype 應用程式關聯設定

在使用桌面系統的時候常常因為安裝了許多程式而造成開啟軟體與檔案之間關聯出現問題,這是因為系統的應用程式關聯不正確。

* 以下的路徑的檔案和文件開啟有相關聯
/usr/local/share/applications/*.desktop (系統存放所有應用程式的程序配置)
~/.local/share/applications/*.desktop (用戶存放所有應用程式的程序配置)
/usr/local/share/applications/mimeinfo.cache
(**非常重要,啟動相關會參考此檔來決定mimetype的對應關係,此為系統域的設定檔)
~/.local/share/applications/mimeinfo.cache
(**非常重要,啟動相關會參考此檔來決定mimetype的對應關係,此為個人域的設定檔)

如果當軟體安裝之後沒有更新mimeinfo.cache的話,可以透過指令來強制更新
# update-desktop-database (預設更新系統層級的應用程式關聯,需root權限)
> update-desktop-database ~/.local/share/applications (更新用戶層級的關聯)

* 自訂檔案開啟關聯
假如我想由vim來開啟任何一個文字型態的檔案,可以自己寫一個vim.desktop
> vim ~/.local/share/applications/vim.desktop
[Desktop Entry]
Encoding=UTF-8
Type=Application
NoDisplay=true
Name=vim
Exec=urxvt -fn 'xft:AR PL New Sung:size=10' -vb +sb -b 10 -fg '#eeeeee' -bg '#101010' -e vim %f
MimeType=text/plain

※我開啟的不是gvim而是在console下執行的vim,所以必須要由term來喚起,我所用的是urxvt,在MimeType那裡看到就是由freedesktop所分類的mimetype,以後遇到這個檔案就會由vim來開啟
> update-desktop-database ~/.local/share/applications (更新mimeinfo.cache)

* defaults.list
在上以的目錄裡面可能會放現還有一個defaults.list這種檔,其實它與mimeinfo.cache是一樣的,主是要給gnome桌面環境使用的,對於KDE或是自己手動建立的桌面環境而言它沒有任何功用

rsync 同步資料

最近發現一個超好用的工具,對於兩台電腦資料同步的時候超級好用,本來都使用sftp或是scp在那邊貼來貼去,檔案改變的時候又要清楚改了什麼,要同步乾脆就砍掉重貼,有了rsync之後透過ssh的連線一下就搞定了。

* 安裝rsync
由ports來裝
# cd /usr/ports/net/rsync
# make install clean
透過package來裝
# pkg_add -r rsync

* 使用rsync

本端使用
> rsync -av src/ dist/

本端使用目的資料夾同步來源資料夾
> rsync -av --delete src/ dist/

透過ssh遠端使用 (兩台機器同時都要安裝rsync)
> rsync -av -e "ssh -p 1234" src/ clockwork@clockwork.cse.tw:~/Desktop/dist/
※透過ssh開啟1234埠建立連線,如果目的端沒有dist資料夾的話會自動建立

透過ssh遠端同步
> rsync -av --delete -e "ssh -p 1234" src/ clockwork@clockwork.cse.tw:~/Desktop/dist/

* 特別注意
如果目的資料夾不存在的話會自動建立,因此討論以下幾個案例
1. rsync -av src dist 會建立出dist/src/xxxx
2. rsync -av src/ dist 會建立出dist/xxxx
3. rsync -av src dist/ 會建立出dist/src/xxxx
4. rsync -av src/ dist/ 會建立出dist/xxxx

freebsd 下目錄檔名轉換

在我的環境都是UTF8的情況下,如果來自windows的隨身碟或是資料為big5要貼到系統裡的時候檔名都會出現不少的問題,因此介紹大家一個好用的工具叫convmv可以用來就目錄下的檔名做轉換非常的方便。

* 軟體安裝
從ports裝
# cd /usr/ports/converters/convmv/
# make install clean
從package安裝
# pkg_add -r convmv

* 使用方式
1. 掛載磁區
# mount_ntfs -C big5 /dev/da0s1 /mnt

2. 開screen做顯示編碼轉換
:encoding big5 utf8

3. locale改big5
> setenv LC_ALL zh_TW.Big5
> 開始做cp資料到要的目錄去吧

4. 複製完之後轉換檔名
> convmv -f big5 -t utf-8 -r --notest 檔名或目錄

* 參數說明
-f 目前編碼
-t 目標編碼
-r 遞迴進入目錄中對於有的檔名都修改
--notest 預設只會告訴你會改動到那些檔,而不會真的改動,使用notest才會真的改動

Freebsd Gmail Notify

對於常常使用Gmail的使用者,使用gnome-notify工具可以即時的收到來自新郵件的通知

* 軟體安裝
透過ports來安裝
# cd /usr/ports/mail/gmail-notify
# make install clean
透過package來安裝
# pkg_add -r gmail-notify

* 軟體設定
可直接透過啟動gmail-notify來設定(第一次啟動時要求設定)
> ~/.notifier.conf
[options]
lang = English
voffset = 10
gmailusername = femc7488
checkinterval = 20000 (20秒確認新郵件一次)
gmailpassword = ******** (你的帳戶密碼)
hoffset = 10
popuptimespan = 5000
browserpath = firefox3 (開啟的瀏灠器)
actionpath = (音效播放設定可安裝play來播放wav音效)
animationdelay = 15


* 軟體使用
> gmail-notify > /dev/null &

Freebsd Sonata music player base on mpd


Sonata是一個Client/Server架構的音樂播放器,需要mpd的支援,而mpd是真正在背景播放的一個deamon,而Sonata只是一個操作介面。

* 軟體安裝
透過ports來裝
# cd /usr/ports/audio/sonata
# make install clean
透過package來裝
# pkg_add -r sonata
※由於相依的關系mpd已自動相依並安裝了

* 軟體設定
1. 先設定mpd
> ~/.mpdconf (mpd設定檔)
music_directory     "~/disk/Music"
playlist_directory "~/disk/Music/.mpd/playlists"
db_file "~/disk/Music/.mpd/mpd.db"
log_file "~/disk/Music/.mpd/mpd.log"
pid_file "~/disk/Music/.mpd/mpd.pid"
state_file "~/disk/Music/.mpd/state"
audio_output {
type "oss"
name "My OSS Device"
device "/dev/dsp" # optional
format "44100:16:2" # optional
mixer_device "/dev/mixer" # optional
mixer_control "PCM" # optional
}

2. 建立該建立的資料夾
> mkdir -p disk/Music/.mpd/playlists (並把所有音樂都放在~/disk/Music裡面就行了)
3. 建立mpd資料庫
> mpd --create-db (只有做一次,此時mpd應該已經背景執行了)
4. 設定sonata
> sonata (直接啟動設定即可)

* 軟體使用
要使用sonata播放音樂之前必須先啟動mpd,而mpd會在背景一直執行,因此只要啟動一次即可
> mpd
在啟動sonata
> sonata
如果需要重新啟動mpd的話必須先結束mpd
> mpd --kill
> mpd

一個在Console下面的播放軟體非常的小可以播放mp3

* 安裝軟體

從ports裝
# cd /usr/ports/audio/moc
# make install clean

使用package裝
# pkg_add -r moc

* 設定檔
教學設定檔 /usr/local/share/doc/moc 目錄中
> ~/.moc/config
ReadTags = no
Repeat = yes
Shuffle = yes
ShowFormat = no
ShowTime = no
Theme = moc_theme

> ~/.moc/themes/moc_theme
# Transparent background theme by Marcin Micha▒owski

background = default default
frame = white default
window_title = white default
directory = white default bold
selected_directory = white blue bold
playlist = white default bold
selected_playlist = white blue bold
file = white default
selected_file = white blue
marked_file = white default bold
marked_selected_file = white blue bold
info = white default bold
status = white default
title = white default bold
state = white default bold
current_time = white default bold
time_left = white default bold
total_time = white default bold
time_total_frames = white default
sound_parameters = white default bold
legend = white default
disabled = black default bold
enabled = white default bold
empty_mixer_bar = white default
filled_mixer_bar = black cyan
empty_time_bar = white default
filled_time_bar = black cyan
entry = white default
entry_title = black cyan
error = red default bold
message = red default bold
plist_time = white default bold

* 如何使用
> moc (直接由console就可以啟動)
enter       播放選中的曲目
a 把選中的曲目加入播放列表
A 把選中的目錄加入播放列表
d 把選中的曲目從播放列表裡刪除
C 清空當前列表
V 保存列表
space 暫停
b/n 前/後一首
s 停止播放
S 打乩播放順序
R 重覆播放列表
tab 在目錄和播放列表間切換
調整音量大小
q 關閉界面,保留音樂播放
Q 關閉界面和程序
l 切換是否顯示播放列表
h 幫助文件
T 修改界面