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)}\[\033[01;37m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n  \[\033[05;35m\]\$ \[\033[00m\]'
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

效果:
在这里插入图片描述
在这里插入图片描述

tcsh (csh) prompt 命令提示符
set prompt="\n%B"

##color prompt################
set cblack =  "%{\e[30m%}"
set cred =    "%{\e[31m%}"
set cgreen =  "%{\e[32m%}"
set cyellow = "%{\e[33m%}"
set cblue =   "%{\e[34m%}"
set cpurple = "%{\e[35m%}"
set cyan =    "%{\e[36m%}"
set cwhite =  "%{\e[37m%}"

set cfault =           "%{\e[0m%}"
set cbrighter_colors = "%{\e[1m%}"
set cunderline_text =  "%{\e[4m%}"
set cflashing_text =   "%{\e[5m%}"

set prompt="\b%B${cyellow}[%y-%W-%D %P] ${cgreen}[%h]%b [$user@`hostname`: ${cyan}%/${cfault}] \n %B${cpurple}${cflashing_text}>> %b"
if语句

bash注意点: 对空格要求特别严格if_[if和括号之间有空格, [_$day_]前括号后和后括号前有空格。
另外,if还可以这样:if [ $days -gt 365 ] ; then ,另外days=365无空格,

tcsh注意点: then不能放在下一句,对空格无要求
在这里插入图片描述
结果:
在这里插入图片描述

操作符 -eq -gt -lt -d -e
在这里插入图片描述
如果if多重条件,bash可用这么用, [ ] 中可以使用 –a –o 进行逻辑运算, -a为逻辑与(and),-o为逻辑或(and)

if [ $day -gt 365 -o $day -gt 366 ]
then
	echo "equal to 365 or 366"
fi

if参考:
If Statements - Bash Scripting Tutorial
Bash Conditional Expressions (Bash Reference Manual)
shell中括号的特殊用法 linux if多条件判断 - 浮沉一梦 - 博客园

while语句

在这里插入图片描述
结果:
在这里插入图片描述

for, foreach 语句

在这里插入图片描述
结果:
在这里插入图片描述
参考:Unix: csh Shell Loop Example - nixCraft

case和switch语句

在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述

function 函数

csh注意点csh不支持函数!,但是可以用alias 加上调用脚本的形式,实现类似于函数的功能。
在这里插入图片描述
在这里插入图片描述

csh判断文件夹或文件是否存在

有如下文件结构

./
├── case/  文件夹
│   └── case.txt 文件
└── case.sh 脚本
#脚本case.sh
#判断文件夹是否存在
set folder_name = case
set file_name = case.txt
# 如果存在
if(-d $folder_name) then
	echo "folder exist"
else
	echo "folder isn't exist"
endif

#判断文件是否存在
#如果存在
if(-f "${folder_name}/${file_name}") then
	echo "file exist"
else
	echo "file isn't exist"
endif

#如果不存在
if(! -d $folder_name) then
	exit
endif
文件操作格式:

-操作符 filename

-e 文件存在返回1(.true.), 否则返回0(.false.).
-r 文件可读返回1,否则返回0.
-w ....可写................
-x ....可执行...............
-o 文件属于用户本人返回1, 否则返回0.
-z 文件长度为0返回1, 否则返回0.
-f 文件为普通(plain)文件返回1, 否则返回0.
-d 文件为目录文件时返回1, 否则返回0.

参考:
CShell
shell bash判断文件或文件夹是否存在 - emanlee - 博客园

参考:
If Statements - Bash Scripting Tutorial
Intro to Bash Scripting - ITNEXT
Bash Scripting Tutorial - Ryans Tutorials
shell中括号的特殊用法 linux if多条件判断 - 浮沉一梦 - 博客园
csh大全 – C Shell, a shell (command interpreter) with C-like syntax
sh大全,sh, resh, ksh, bash – POSIX-compliant (Korn/Bourne-Again) shell and command interpreter

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha-Ha-Interesting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值