标签: csh

如何确定我正在使用的当前shell?

如何确定我正在使用的当前shell?

ps仅仅命令的输出是否足够?

如何在不同版本的UNIX中完成?

unix bash shell csh tcsh

587
推荐指数
14
解决办法
46万
查看次数

shell脚本可以设置调用shell的环境变量吗?

我正在尝试编写一个shell脚本,在运行时,将设置一些将在调用者的shell中保留的环境变量.

setenv FOO foo
Run Code Online (Sandbox Code Playgroud)

在csh/tcsh中,或

export FOO=foo
Run Code Online (Sandbox Code Playgroud)

在sh/bash中只在脚本执行期间设置它.

我已经知道了

source myscript
Run Code Online (Sandbox Code Playgroud)

将运行脚本的命令而不是启动新的shell,这可能导致设置"调用者"环境.

但这里有一个问题:

我希望这个脚本可以从bash或csh调用.换句话说,我希望任何一个shell的用户都能够运行我的脚本并改变他们的shell环境.所以'source'对我来说不起作用,因为运行csh的用户无法获取bash脚本,而运行bash的用户无法获取csh脚本.

有没有合理的解决方案不需要在脚本上编写和维护两个版本?

bash shell csh tcsh

396
推荐指数
8
解决办法
46万
查看次数

获取ssh以在目标计算机上的后台执行命令

这是关于如何在shell脚本中使用ssh的后续问题题.如果我想在该机器的后台运行的远程机器上执行命令,我该如何获取ssh命令?当我尝试在命令末尾包含&符号时,它就会挂起.命令的确切形式如下所示:

ssh user@target "cd /some/directory; program-to-execute &"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?需要注意的一点是,登录目标计算机始终会生成文本标题,并且我已设置SSH密钥,因此无需密码.

ssh bash csh

282
推荐指数
9
解决办法
28万
查看次数

在shell脚本运行时编辑它

您可以在shell脚本运行时编辑它并让更改影响正在运行的脚本吗?

我很好奇csh脚本的具体情况,我有批处理运行一堆不同的构建风格并运行一整夜.如果我在操作过程中发生了某些事情,我想进入并添加其他命令,或者注释掉未执行的命令.

如果不可能,是否有任何shell或批处理机制可以让我这样做?

当然我已经尝试过了,但是在我看到它是否有效之前还需要几个小时,而且我很好奇幕后发生了什么或者没有发生什么.

linux shell csh

81
推荐指数
5
解决办法
4万
查看次数

将stderr重定向到C shell中的stdout

当我运行以下命令时csh,我什么都没有,但是它可以工作bash,是否有任何等效的csh可以将标准错误重定向到标准输出?

somecommand 2>&1
Run Code Online (Sandbox Code Playgroud)

csh io-redirection

60
推荐指数
4
解决办法
11万
查看次数

可以传递给SQL*Plus的命令行参数的最大长度?

我从Linux C Shell调用SQL*Plus:

sqlplus username/password @file.sql var1 var2 var3

如果我传递一个字符串var1,这个字符串可以多长时间?

它是由操作系统管理的吗?在这种情况下:

Linux version 2.6.9-100.ELsmp (mockbuild@x86-010.build.bos.redhat.com) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-11)) #1 SMP Tue Feb 1 12:17:32 EST 2011

更新:经验测试产生以下结果:

  • 一个5200个字符的命令行参数给出了错误,"Word太长了".
  • 1300个字符然后产生SQL*Plus错误,"字符串开头"(000796384 ..."太长.最大大小为239个字符."
  • 一旦我得到239个字符,一切都很顺利.

我想我会sqlldr用来克服这一点.

linux csh sqlplus command-line-arguments

51
推荐指数
2
解决办法
7万
查看次数

如何在csh/tcsh中为一个命令设置环境变量

在bash中,我可以为一个命令设置一个临时环境变量,如下所示:

LD_LIBRARY_PATH=/foo/bar myprogram
Run Code Online (Sandbox Code Playgroud)

我可以在csh/tcsh中做类似的事情吗?我可以

setenv LD_LIBRARY_PATH /foo/bar; myprogram; unsetenv LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

,但这将失去变量之前的任何值.

csh tcsh

44
推荐指数
1
解决办法
3万
查看次数

如何在待处理的Perforce更改列表中获取所有文件的差异?

我想在特定的挂起更改列表中获取文件差异.我希望我能做到这一点:

p4 diff -c 999
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我串联一些csh魔法来实现这一目标吗?

也许把它的输出p4 opened -c 999和管道输送到p4 diff

shell terminal perforce csh

37
推荐指数
5
解决办法
3万
查看次数

如何用sed中的另一个路径替换路径?

我有一个csh脚本(虽然我可以更改语言,如果它有任何相关性)我必须:

sed s/AAA/BBB/ file
Run Code Online (Sandbox Code Playgroud)

问题是AAA和BBB是路径,因此包含'/'.AAA是固定的,所以我可以说:

sed s/\\\/A\\\/A\\\A/BBB/ file
Run Code Online (Sandbox Code Playgroud)

但是,BBB基于变量,包括$ PWD.如何逃避$ PWD中的'/'?

还有其他方法我应该完全这样做吗?

csh sed path

37
推荐指数
4
解决办法
7万
查看次数

仅显示tcsh或bash中符号链接的文件和文件夹

基本上我想做以下事情:

ls -l[+someflags]
Run Code Online (Sandbox Code Playgroud)

(或通过其他方式)只显示符号链接的文件

所以输出看起来

-rw-r--r--  1 username grp   size date-time    filename -> somedir
-rw-r--r--  1 username grp   size date-time    filename2 -> somsdfsdf
Run Code Online (Sandbox Code Playgroud)

等等

例如,

仅显示我有别名的目录:

alias  lsd  'ls -l | grep ^d'
Run Code Online (Sandbox Code Playgroud)

我想知道如何只显示隐藏文件或只隐藏目录?

我有以下解决方案,但它不显示颜色的输出:(

ls -ltra | grep '\->'
Run Code Online (Sandbox Code Playgroud)

linux shell csh tcsh

35
推荐指数
6
解决办法
5万
查看次数

标签 统计

csh ×10

shell ×5

tcsh ×4

bash ×3

linux ×3

command-line-arguments ×1

io-redirection ×1

path ×1

perforce ×1

sed ×1

sqlplus ×1

ssh ×1

terminal ×1

unix ×1