我正在尝试编写一个tcsh脚本.如果任何命令失败,我需要脚本退出.
在shell中我使用set -e但我不知道它在tcsh中的等价物
#!/usr/bin/env tcsh
set NAME=aaaa
set VERSION=6.1
#set -e equivalent
#do somthing
Run Code Online (Sandbox Code Playgroud)
谢谢
我使用tcsh,当在cmd行上按下Delete/End时,它只显示为~; 我必须按<Ctrl><e>下去结束.任何人都可以帮助我能够使用删除/结束键,顾名思义?
假设我在/path/to/my_script.csh中放了一个可执行的tcsh文件
我当前的目录是任何地方,例如我在/ path
所以我输入/ my_script.csh
我想在my_script.csh中有一行返回"/path/to/my_script.csh" - 就像ruby的
__FILE__
Run Code Online (Sandbox Code Playgroud) 在Unix(tcsh)中,我在别名中引用了两个不同符号的命令行参数 - $1和\!:1.
但是我注意到如果我尝试保存$1到环境变量,它就不会被保存.但是\!:1会得到保存.
alias hear 'setenv x \!:1 && echo $x'
--> hear that
that
--> echo $x
that
alias oh 'setenv x $1 && echo $x'
--> oh no
no
--> echo $x
Run Code Online (Sandbox Code Playgroud)
当$ 1用于存储值时,$ x的回显没有显示任何内容.这是什么原因?
我想快速打开目录中最后修改过的文件,也许是以别名的形式.
目前,我做ls -ltr.然后复制并粘贴文件名
假设我正在使用tcsh
我正在执行一个将崩溃报告转储到STDERR我必须过滤一些必要信息的程序.问题是,我无法重定向STDERR到STDOUT与PIPE它grep
command 2>&1 >/dev/null | grep "^[^-]" >& /tmp/fl
Run Code Online (Sandbox Code Playgroud)
得到错误: Ambiguous output redirect.
相同的命令在bash终端下工作.我应该改变什么来使它工作?
我在我的脚本上这样做:
set Cnt1 =`echo $Cnt | awk '{print $1}'`
set Cnt2 =`echo $Cnt | awk '{print $2}'`
set Cnt3 =`echo $Cnt | awk '{print $3}'`
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,说"设置:变量名称必须以字母开头".有人能告诉我我做错了什么.. Cnt有这样的价值:
Cnt = 1 1 1
Run Code Online (Sandbox Code Playgroud) 我试图将剪切命令的输出分配给变量,但是我遇到了一个奇怪的问题.我正在使用tcsh shell.
$echo $0
tcsh
Run Code Online (Sandbox Code Playgroud)
这是我正在运行的命令:
$set a=`cut -f2 -d' ' test.txt`
Missing }. //This is the output I am getting
Run Code Online (Sandbox Code Playgroud)
现在该文件非常简单(这不是我正在处理的文件,但我将问题减少到了这一点.)
的test.txt:
{ {corner
Run Code Online (Sandbox Code Playgroud)
而已!这是文件.如果我将文件更改为:
{ {corner}
Run Code Online (Sandbox Code Playgroud)
语句有效,但"a"获得以下值:
$echo $a
corner //Please note its not {corner} but corner
Run Code Online (Sandbox Code Playgroud)
因此我认为shell试图{corner
作为一个命令执行 ,因为它缺少关闭括号shell抱怨.有谁知道它为什么会出现这种行为?我的理解是它应该只将cut的输出分配给变量,但看起来像递归分配它!新手
我负责管理一堆服务器,我想在每个服务器上设置我的提示,这样我就不会对我登录的位置感到困惑.
我已经编辑了我的.cshrc文件并将其放入其中:
set prompt=`whoami`@`hostname -s`:$cwd'$ '
Run Code Online (Sandbox Code Playgroud)
但我想给这个提示加上颜色,以便它更突出.也许绿色与白色文字或东西.我怎样才能做到这一点?我对shell语法不太熟悉.
我正在使用Ubuntu附带的标准终端进行SSH连接,如果这是相关的.
我需要从bash shell运行csh脚本,因此通过命令临时更改为tcsh.它在交互模式下工作得很完美,但我不能在一行命令中找到它.所以在交互模式下我在bash shell中做:
tcsh的
来源my.tcshr
useMyTcshCmd
等等
我如何在1命令中完成所有这些操作?对不起,新手问题......