[csh]配置你的csh/tcsh

news/2023/11/28 12:14:32

                                配置你的csh/tcsh

一、配置文件

  1. 全局配置文件 /etc/csh.cshrc
  2. 个人配置文件 ~/.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                      #判断用户的uidset prompt = "%U%n%u@%m [%l] %B%~%b # "    #对于root,我们显示“#”号elseset 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 ) thenif ( "$uid" == "0" ) thenset prompt = "%B%U%n%u@%m.$cr%l$c0%b %c2 %B%#%b " elseset prompt = "%B%U%n%u@%m.$cg%l$c0%b %c2 %B%%%b "endif
endif

 3.1 颜色代码:

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

 3.2 查看更多参数,及其作用:

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

       若要在补全时也将历史记录(即命令history的输出)纳入参考范围,可以添加如下配置:

set autoexpand

       而对与命令history本身,则提供了以下两项配置:

set history = 100
set savehist = 10

       第一项设置了历史记录暂存条数,默认为100;

       第二项设置了退出当前Shell时会将多少条最新的暂存条数写入~/.history,其取值显然不能大于set history。
       需要说明的是,在savehist的设置中,还可以使用类似set savehist = (10 merge)的写法;这里merge表示保存时合并历史记录中的相同命令,合并后的序列号、时间则与其中最新者相同。

       如果命令输错了,让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/) 

五、防止误操作

 5.1 重定向防御

       重定向很强大,我们有时候会运行诸如“date » b.txt”,“ls -l > files.txt”等命令。然而如果一不小心,把“»”输成“>”会造成什么后果呢?为此,tcsh提供了noclobber这个选项:

set noclobber
  • 有了它,悲剧就不会发生。如果“>”的目标文件已存在,tcsh会拒绝重定向。

 5.2 覆盖防御

       是否遇到过“mv a b”,从而把有用的b文件覆盖掉了?为此,我们要让mv和cp的行为更谨慎:

alias mv 'mv -i'
alias cp 'cp -i'
  • 如果目标文件已存在,mv和cp会拒绝操作,除非使用参数“-f”。

 5.3 误删防御

       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


http://www.ppmy.cn/news/187242.html

相关文章

Schollship

每年的这个时候,总是你争我夺的时候,为了什么? 奖学金..... 说句实话,前段时间也在奖学金上忙了一阵,事后想想,挺没意思的.朋友忙没了…

Bash与Csh的区别

zz :http://dangdanding.blog.163.com/blog/static/27992981201262595221896/ 一、csh的while循环控制结构及if then: #!/bin/csh -f while ($#argv > 1) if ("$1" "-s") then shift if ($#argv > 1) then set source …

SDM670 AMSS代码编译

Ubuntu16.04系统下AMSS代码的编译 上周高通给的SDM670代码刚刚释放,尝试进行了modem的编译工作。 首先是编译工具的准备,按照高通文档的描述,需要以下工具: 一、工具安装 1.Snapdragon LLVM Arm toolchain 4.0.3 2.Snapdragon …

几种常见的Shell:sh、bash、tcsh、csh、ash的区别

Author : Spinach | GHB Link : http://blog.csdn.net/bocai8058文章目录 概念shcshtcshashbash查看 Shell 概念 Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后…

bash 与 csh 区别

BASH中的算术运算表达式 定义变量: Var2 Var13 Var24 可用的写法: 1、Var$[$Var1 $Var2] 或 Var$[$Var1 1] 2、Var$[Var1 Var2] 或 Var$[Var1 1] 3、Var$(($Var1 $Var2)) 或 Var$(($Var1 1)) 4、Var$((Var1 Var2)) 或 Var$((Var1 1)) 5、let Var$Var1$Var2 或…

linux几种常见的Shell:sh、bash、csh、tcsh、ash

Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。例如: Linux 内核最初由芬兰黑客 Linus Torvalds 开发&…

【sbt】sbt package与sbt assembly

1. sbt packge 命令解释: 创建一个Jar文件,位置在target文件夹中,其中包含:src/main/resources、src/main/scala中的类文件;另外Test/package命令也会产生一个jar文件,其中包含:src/test/reso…

fel 文档_HYB39S128160FEL-7

Data Sheet HY[B/I]39S128[40/80/16][0/7]F[E/T](L) 128-MBit Synchronous DRAM 1 1.1 • • • • • • • • • Overview Features • • • • • • • • • Data Mask for Read / Write control (x4, x8) Data Mask for Byte Control (x16) Auto Refresh (CBR) and Sel…

笔记本电脑连接蓝牙耳机设备

1, 添加设备 选择找到的蓝牙设备,譬如SBH70 2, 选择服务 勾选耳机服务,应用,确定 3, 安装驱动 A, Bluetooth外围设备驱动 B, Bluetooth AV C, Bluetooth …

SRB x-sign

本文案例是对SRB 小程序的x-sign参数分析,文章内容仅用于学习和技术交流,如有侵权请联系我删除。 注意:付费订阅的是整个《签名逆向合集》专栏。 本案例是专栏中的第十五篇案例,以后还会持续更新,感谢订阅! 文章目录 环境准备参数定位逻辑分析加密还原备注环境准备 小…

BSP Day60

今天开始,我们就来学习数据结构了。 数据结构的概念 数据结构是计算机存储,组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素 的集合。通常情况下,精心选择的数据结构 可以带来更高的运行或者存储效率。 名词解释 数…

NR SSB概述 - PSS/SSS序列及PBCH

NR中小区ID的与LTE中的一样,都由和决定,其中 , , 那么小区ID。 1. PSS,SSS PSS和SSS都是长度为127的序列,通过PSS同步获得及时间位置信息,从而获得SSS的位置,根据SSS序列信息获得,通过PSS及SS…

BSP Day47

Linux 文件(io) Linux的文件结构 root:该目录为系统管理员(也称作超级管理员)的用户主目录。 bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。 boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件和镜像…

SRB0 SRB1 SRB2 SRB

SRB(Signalling Radio Bearer)是信令承载,用于传输RRC和NAS信令消息。RRC消息是UE和基站之间的信令,NAS消息是UE和MME之间的信令1。 SRB分为三种类型:SRB0,SRB1和SRB2。 SRB0是用于传输RRC连接请求和RRC连…

Shell: sh,bash,csh,tcsh等shell的区别

转载自:http://zhidao.baidu.com/question/493376840.html, http://blog.sina.com.cn/s/blog_71261a2d0100wmbj.html 谢谢! 1.Shell脚本 有那些类型 比如说 .csh . py .sh 这些脚本又有什么区别 通常写一个shell脚本都要在第一行注明使用…

bash 和 tcsh(csh)的不同,带例子

我使用bash和tcsh(csh)过程中总结出的一些异同,附我的彩色的提示行配置 效果: 自做的彩色提示符 bash PS1 命令提示符 ## PS1\[\033[01;33m\][\D{%y-%m-%d} \t]\[\033[00m\]\[\033[01;32m\][\!]\[\033[00m\]${debian_chroot:($debian_chroot)}\[\03…

csh和tcsh

csh和tcsh EDACAD 我们都知道IC设计中,经常试用C Shell或者tcsh,那么这两个直接到底有什么差别呢? 首先,我们登陆Linux系统查看 # which tcsh /usr/bin/tcsh # which csh /usr/bin/csh # ls -al /usr/bin/csh lrwxrwxrwx 1 root r…

Linux shell:sh csh tcsh ash bash dash zsh

Shell :贝壳,寓意类似内核的壳,Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种…

BT601和BT709到底什么关系

每每遇到这两个玩意,头脑就一片空白,去baidu,都是讲一大堆历史故事,故事看完,还是没弄懂他们之间到底是什么关系,在我们日常编程中要怎样才能遵从这两个玩意。 下面利用一个包含视频采集和视频显示的设备讲…

csh和bash的区别

csh和bash的区别 csh和bash是两种不同的Unix和Linux shell,它们有一些语法和功能上的差异。例如: csh使用C语言风格的语法,如if endif, while end等,而bash使用Bourne shell风格的语法,如if fi, for do done等。csh设…
最新文章