配置文件
全局配置文件 /etc/csh.cshrc
個人配置文件 ~/.cshrc或~/.tcshrc
為了方便,建議修改全局性的配置文件,這樣每個賬號都可以享受便利。
按鍵綁定
通常,我們不設置按鍵綁定也能很好地工作,
但是對於遠程登錄,可能需要一些額外的配置。
比如,為了避免putty登錄后,Home、End、Delete等變成~,你需要如下配置:
bindkey '\e[1~' beginning-of-line # Home
bindkey '\e[3~' delete-char # Delete
bindkey '\e[4~' end-of-line # End
bindkey "^W" backward-delete-word # Delete
bindkey -k up history-search-backward # PageUp
bindkey -k down history-search-forward # PageDown
提示符
設置一個漂亮使用的的提示符可以讓工作變得更愉快高效。
以下是一個合理的配置方案:
if ( $?prompt ) then #如果$prompt變量尚未設置,則做如下設置
if ( "$uid" == "0" ) then #判斷用戶的uid
set prompt = "%U%n%u@%m [%l] %B%~%b # " #對於root,我們顯示“#”號
else
set prompt = "%U%n%u@%m [%l] %B%~%b % " #對於普通用戶,顯示“%”號。
endif
endif
一種彩色的配置方案如下:
set cr = "%{\e[31m%}" #開始紅色
set cg = "%{\e[32m%}" #開始綠色
set c0 = "%{\e[0m%}" #恢復為默認色彩
# Set some variables for interactive shells
if ( $?prompt ) then
if ( "$uid" == "0" ) then
set prompt = "%B%U%n%u@%m.$cr%l$c0%b %c2 %B%#%b "
else
set prompt = "%B%U%n%u@%m.$cg%l$c0%b %c2 %B%%%b "
endif
endif
顏色代碼:
1 for brighter colors
4 for underlined text
5 for flashing text
30 for black foreground
31 for red foreground
32 for green foreground
33 for yellow (or brown) foreground
34 for blue foreground
35 for purple foreground
36 for cyan foreground
37 for white (or gray) foreground
40 for black background
41 for red background
42 for green background
43 for yellow (or brown) background
44 for blue background
45 for purple background
46 for cyan background
47 for white (or gray) background
查看更多參數,及其作用:
man tcsh #查看man手冊
/%/ #搜索到“%/”開始的地方
環境變量等
你在抱怨 FreeBSD下的 ls 沒有顯示顏色, grep 出來的東西沒有高亮嗎? 那么你需要如下的配置:
#讓 ls 鮮艷些
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
#讓 grep 匹配到的字符高亮
setenv GREP_OPTIONS --color=auto
對於在KDE下使用fcitx的人,需要如下三行設置,
其實就是fcitx安裝完后所提示的內容,如果你夠細心的話。
setenv XMODIFIERS @im=fcitx
setenv QT_IM_MODULE xim
setenv GTK_IM_MODULE xim
嗯, ls 有顏色了,但是等等,為何 tab 不能補全?
你需要如下配置:
set autolist
如果命令輸錯了,讓csh/tcsh 為你糾正:
set correct = cmd
為了在命令行啟動某個游戲,或者kde程序,例如dolphin、kcalc,
你需要加兩個路徑到$path中去:
/usr/games /usr/local/kde4/bin/
set path = (/sbin /bin /usr/sbin /usr/local/bin /usr/games /usr/local/sbin /usr/bin $HOME/bin /usr/local/kde4/bin/)
黑魔法防御術
重定向防御
重定向很強大,我們有時候會運行諸如“date ? b.txt”,“ls -l > files.txt”等命令。
然而如果一不小心,把“?”輸成“>”會造成什么后果呢?
為此,tcsh提供了noclobber這個選項:
set noclobber
有了它,悲劇就不會發生。如果“>”的目標文件已存在,tcsh會拒絕重定向。
覆蓋防御
是否遇到過“mv a b”,從而把有用的b文件覆蓋掉了?
為此,我們要讓mv和cp的行為更謹慎:
alias mv 'mv -i'
alias cp 'cp -i'
如果目標文件已存在,mv和cp會拒絕操作,除非使用參數“-f”。
誤刪防御
rm這個命令自從誕生起,就一直是個危險的操作。
我們可以讓rm更溫和:
alias rm 'rm -i'
這樣rm之前,會要求再次確認。
一切皆alias
前面,我們在黑魔法防御術中已經初步見識了alias。
alias不僅可以避免危險操作,還可以簡化命令,自創命令。
除非極短,否則良好的alias命名,應當以某個統一的單詞或字母開頭,
例如下面即將展示的reload/edit系列、update系列、show系列等。
先展示最基本的alias,並逐條解釋。
alias .. 'cd ..' #兩點即可回到上級目錄
alias - 'cd -' #一杠返回上次的目錄
alias q 'exit' #退出登錄
alias rm 'rm -i' #誤刪防御
alias del 'rm -r' #刪除整個目錄
alias mv 'mv -i' #覆蓋防御
alias cp 'cp -i' #覆蓋防御
alias ls 'ls -I' #root狀態下,默認不顯示隱藏文件(.*)。BSD的ls很特殊,root默認顯示所有文件。
alias la 'ls -a' #顯示所有文件
alias ll 'ls -h -l' #顯示文件權限和大小(以合理的單位)
alias lr 'ls -R' #遞歸顯示目錄
alias dh 'df -h -a -T' #以合適的單位顯示所有磁盤的剩余空間,以及文件系統類型(如ufs、devfs、procfs)。
alias ds 'du -sh' #以合適的單位顯示查看每個文件/文件夾的大小
find/wc系列。快速查找當前目錄下的所有c/cxx/python源碼文件。結合wc可以統計行數。
alias find-c 'find . -name "*.h" -o -name "*.c"'
alias find-x 'find . -name "*.h" -o -name "*.hpp" -o -name "*.cpp" -o -name "*.cxx"'
alias find-py 'find . -name ".py"'
alias wc-c 'find . -name "*.h" -o -name "*.c" | xargs wc | sort -k 4'
alias wc-x 'find . -name "*.h" -o -name "*.hpp" -o -name "*.cpp" -o -name "*.cxx" | xargs wc | sort -k 4'
alias wc-py 'find . -name ".py" | xargs wc | sort -k 4'
reload/edit系列。實現快速修改,載入配置文件。
alias reload-rc.conf 'sh /etc/rc'
alias reload-cshrc 'unalias * && source /etc/csh.cshrc'
alias edit-xorg.conf 'vim /etc/xorg.conf'
alias edit-csh.cshrc 'vim /etc/csh.cshrc'
alias edit-make.conf 'vim /etc/make.conf'
alias edit-kern.conf 'vim /etc/kernconf/thinkpad'
alias edit-rc.conf 'vim /etc/rc.conf'
alias edit-vimrc 'vim /usr/local/share/vim/vimrc'
set系列。快速設置locale。
alias setlocale-zhcn 'setenv LC_ALL zh_CN.UTF-8 && setenv LANG zh_CN.UTF-8'
alias setlocale-c 'setenv LC_ALL C'
startx專用。
保持命令行下為英文locale(避免date等命令出現亂碼),而讓x環境為中文,適合手動startx而不是kdm的人。
alias sx 'setenv LC_ALL zh_CN.UTF-8 && setenv LANG zh_CN.UTF-8 && startx && setenv LC_ALL C'
make系列。快速編譯kernel/world。
alias make-world 'cd /usr/src && make buildworld && cd -'
alias make-kernel 'cd /usr/src && make kernel KERNCONF=thinkpad && cd -'
alias make-installworld 'cd /usr/src && make installworld && make delete-old && cd -'
show系列。查看狀態或某些信息。
alias show-ifstat 'systat -ifstat' #查看網絡接口的數據流量
alias show-geom 'gstat' #查看I/O狀態
alias show-thermal 'sysctl dev.acpi_ibm.0.thermal' #查看ThinkPad筆記本的各部分溫度
alias show-cpufreq 'sysctl dev.cpu.0.freq' #查看當前cpu頻率
alias show-cpulevels 'sysctl dev.cpu.0.freq_levels' #查看可用的cpu頻率
alias show-battery 'sysctl hw.acpi.battery.life && sysctl hw.acpi.battery.time' #查看電力
alias show-smartctl 'smartctl -a /dev/ad4' #需要安裝smartmontools,查看磁盤smart參數
alias show-alldep 'make all-depends-list' #需要在ports的安裝目錄下執行,顯示所有依賴
alias show-dep 'portmaster --show-work ./ | sort' #同上,且需要安裝portmaster,只顯示尚未安裝的依賴
alias show-ver 'pkg_version -v' #查看是否有軟件可更新
update系列。顧名思義,更新嘛。
alias update-locatedb '/usr/libexec/locate.updatedb' #更新locate數據庫
alias update-kernsrc 'csup -L 2 /etc/supfiles/stable-supfile' #同步kernel tree
alias update-ports 'portsnap fetch update' #同步ports tree
alias update-apps 'portmaster -a --force-config' #需要安裝portmaster,更新所有軟件,提示配置選項
雜項,均需要安裝第三方軟件才能用。
alias lt 'tree -N -C' #需要安裝tree。樹狀顯示目錄,-N可以保證中文顯示,-C使用彩色
alias l3 'tree -N -C -L 3' #目錄最多遞歸三級
alias l4 'tree -N -C -L 4' #四級
alias l5 'tree -N -C -L 5' #五級
alias l6 'tree -N -C -L 6' #六級
alias v 'vim' #不用說,我懶
alias m 'mocp' #控制台下的cs架構播放器
alias getdir 'wget -c -r -np -k' #遞歸下載目錄
alias ssh-home 'ssh raphael.vicp.cc -l root' #用root賬號登錄,結合key可以免輸密碼
alias ftp-home 'ftp ftp://syh:syh@raphael.vicp.cc' #BSD自帶的ftp,免輸賬號密碼。主機已被電信和工信部和諧,勿再試
alias lft-phome 'lftp raphael.vicp.cc -u syh,syh' #lftp的免輸賬號密碼。
alias scons 'scons -Q -j 4' #構建工具,默認4個線程進行
alias valgrind-checkmem 'valgrind --tool=memcheck --leak-check=full' #檢查內存泄漏
最好的教材
最好的教材莫過於man手冊,真的什么都有了。
man tcsh
//////////////////////////////////////////////////////////////////////////////////
1、讓Freebsd終端也支持彩色
ls -G就會顯示彩色
csh在.cshrc文件中,添加:alias ls="ls -G"
sh在.profile文件中,添加:alias ls="ls -G"
2、更改用戶登陸shell
默認安裝是使用sh登陸的,sh不支持TAB鍵
要切換到csh,直接運行csh即可
如果需要一勞永逸,那么用下面這個命令
name:是指你登陸的名稱
pw usermod -n name -s csh
3、更換提示符
set prompt = "%B%n@%M[%/] "
也可以將這句話加到.cshrc或者.profile配置文件中
4、Freebsd下支持dir
alias dir "ls"
也可以將這句話加到.cshrc或者.profile配置文件中
alias類似Dos下的doskey