标签: tcsh

我可以将别名“导出”到调用脚本的 SHELL 吗?

我正在尝试编写一个定义某些别名的实用程序脚本。
我的 SHELL 是tcsh(不能改变)。

我尝试了以下

#!/bin/tcsh  
alias log 'less ~/logs/log.`date '+%Y%m%d'`''
Run Code Online (Sandbox Code Playgroud)

然后我像这样运行它:

./myscript  
log
Run Code Online (Sandbox Code Playgroud)

我得到的输出是: log: Command not found.

当然,如果我像这样运行它:

source myscript  
log
Run Code Online (Sandbox Code Playgroud)

一切安好。

有什么方法可以不指定source ...吗?

alias shell-script tcsh

20
推荐指数
1
解决办法
2万
查看次数

如何在 xterm 运行屏幕中自动更新标题?

这是这个问题的一些后续。我正在tcsh中的 GNU screen中的xterm 中工作

我的 .cshrc 中有以下内容:

alias res_t 'xtset -t %h:%d "(%u:%g)" %e'       # reset titlebar
res_t                                           # reset title right now
alias precmd res_t
Run Code Online (Sandbox Code Playgroud)

这很好用!

但是,当我运行 screen 时,我看到标题没有随当前目录更新。如何让屏幕更新 xterm 标题?

xterm gnu-screen tcsh

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

事后远程 nohup 与 tcsh

我在运行长期(数周?)进程的 xterm 中有一个 tcsh 实例。它运行的 Xvnc 服务器在杂草中消失了;它消耗 100% 的 CPU 并且没有响应。(这是一个已知的错误,我知道它是不可恢复的。)

长期进程目前在标准输出上阻塞。

有什么办法可以杀死一个底层进程——tcsh、xterm 等等——并保持这个长期进程运行?

(拜托,没有关于 的答案screen。我知道。这不是我的过程;这是用户的。他们不会学习。)

kill nohup tcsh

11
推荐指数
1
解决办法
8225
查看次数

如何为 tcsh 的 cdpath 中的目录提供自动完成功能?

我刚学的把戏设立cdpathtcsh,它看起来非常有用的。

但是,似乎没有自动完成子文件夹名称。有什么技巧吗?因为我经常进入某些目录,所以这真的很酷。

我正在使用tcsh6.14.00 (Astron)。

linux path tcsh autocomplete csh

10
推荐指数
1
解决办法
1886
查看次数

vim 不能用 :! 执行 unix 命令 由于换壳

我们公司使用red hat linux系统,在/home给大家分配一个账号。不幸的是,我们的系统正在使用 tsch,这对我不利。而且,由于我没有超级用户权限,我无法使用 chsh 命令为自己更改为 bash。更糟糕的是,我也无法使用 ypchsh。所以,最后,我将以下几行添加到 .cshrc 中:

    bash
    echo $0
Run Code Online (Sandbox Code Playgroud)

并适当配置 .bashrc(从原始 .cshrc 复制并修复必要的语法错误)。现在明显的 shell 变成了 bash(如“echo $0”命令所示)。

现在问题来了:

当我使用 vim 编辑一个 cpp 文件(例如 Hello_World),并在 vim 中使用“:!g++ -g Hello_World.cpp -o hw.out”编译文件时,不会显示任何结果,并且 vim 退出显示“bash”(当终端打开时),但没有通常的“敲击键”来回到我在 vim 中的工作。在 Hello_World.cpp 文件夹中,有一个 .Hello_World.cpp.swp 文件,但没有 hw.out。当再次vim Hello_World.cpp 时,发现这个cpp 文件已经打开了。

但是,如果我 g++ 文件夹中的 cpp 文件但不使用 vim 和 :!,则一切正常。实际上, :!现在似乎对 vim 来说是非法的。

如果我用原来的tcsh,一切也OK。

我该如何解决这个奇怪的错误?

提前感谢您的友好帮助。

顺便说一句:我更喜欢 bash 而不是 tcsh,主要是因为它具有 HISTIGNORE 和 HISTCONTROL 的便利性,尽管 tcsh 也有 histdup 设置。

我发现以下内容有点帮助,但仍然不能满足我的问题。

如何从 Vim 中运行 Unix 命令?

bash vim vimrc tcsh

8
推荐指数
1
解决办法
979
查看次数

bash 是否有一个钩子来确定子 shell 何时退出?

bash我启动一个t/cshshell,它更新stty erase ^H.cshrc 中的 tty 输入 ( ),但是当exit-ing 并返回到 bash 时,backspace密钥不再起作用。这是因为 bash 使用readline,我需要重置擦除 ( stty erase ^?)。

如果我理解trap正确,似乎我可以从 t/csh 进程中捕获 t/csh 出口,并在它退出后运行命令。但是,我更喜欢在 bash 中进行捕获,理想情况下,它会检测到 shell 被调用/退出,然后运行脚本来重置其配置。

这是首选,因为我可以调用任意数量的外壳程序(例如,dash, zsh),这可能会无意中修改特定于 bash 的设置。与其trap为每个 shell维护多个命令,不如为 bash 设置一个命令。


我的理解trap正确吗?如果是这样,是否可以bash检测到子 shell 退出然后运行脚本?

linux bash shell tcsh

7
推荐指数
1
解决办法
1671
查看次数

在tcsh中,如何分叉多个shell命令,等到它们全部完成,然后再执行另一个命令?

我想从 tcsh 命令行执行以下操作,最好在 1 行中:

build_cmd1 &
build_cmd2 &
build_cmd3 &
wait until all parallel build commands finish
regression_cmd
Run Code Online (Sandbox Code Playgroud)

也就是说,我想分叉出一堆构建命令,阻塞直到它们退出,然后再运行另一个命令。我想从 tcsh 命令行执行此操作。

tcsh

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

粘贴到 tcsh (mac OS X) 时的命令限制

在将命令粘贴到运行 TC shell (/bin/tcsh) 的终端应用程序(最大 OS X 10.5.8)中时,我遇到了 1024 个字符限制问题。

这可以通过将以下命令粘贴到终端应用程序中来一致地重现:

回声 0 0 0 0 0
回声 1 1 1 1 1
回声 2 2 2 2 2
回声 3 3 3 3 3
回声 4 4 4 4 4
回声 5 5 5 5 5
回声 6 6 6 6 6
回声 7 7 7 7 7
回声 8 8 8 8 8
回声 9 9 9 9 9
回声 10 10 10 10 10
回声 11 11 …

terminal shell command-line tcsh macos

6
推荐指数
1
解决办法
2061
查看次数

在 bash 或 zsh 中设置路径的制表符补全以类似于 tcsh

我\xe2\x80\x99m是tcsh的长期用户,但现在所有的酷孩子似乎都在使用bash或zsh(也就是说,git或其他东西的完成模式可用于bash和zsh,很少用于tcsh)。

\n\n

我的问题是,两个 shell 都有关于路径制表符补全的行为,这让我发疯,而且 I\xe2\x80\x99m 很难找到如何将它们更改为我喜欢的方式。

\n\n

这里\xe2\x80\x99s 是我\xe2\x80\x99m 过去在 tcsh 中所做的一些与其他人不同的操作的示例:

\n\n
    \n
  • /u<TAB>完成到/usr/
  • \n
  • 然后选项卡列出的内容/usr/
  • \n
  • /usr/li<TAB>完成/usr/lib并列出lib/libexec/
  • \n
  • 第二次按 Tab 键完成/usr/lib/
  • \n
  • 第三次按 Tab 键会列出以下内容/usr/lib/
  • \n
\n\n

在 bash 中,无论我点击多少次 tab,它都不会过去/usr/lib,需要我输入斜杠,而我不想这样做。

\n\n

在 zsh 中,/usr/li<TAB>首先完成 to /usr/lib,然后另一个选项卡列出lib/libexec/,第三次选项卡完成 to /usr/lib/,所有后续选项卡在/usr/lib/和 之间循环/usr/libexec/。我不知道如何度过这一点。我只想从/usr/li/usr/lib,然后/usr/lib/,然后列出其内容。

\n\n

对于Python来说也是如此。在 tcsh 中,我输入pyt<TAB>,它完成 …

bash zsh tcsh tab-completion

5
推荐指数
1
解决办法
1830
查看次数

通过 ssh 在他们的机器上以另一个用户身份运行命令?

作为我正常工作流程的一部分,我 SSH 到另一个用户的机器,将用户切换到他们,运行命令,然后再次退出到我自己的机器:

ssh hostname
sudo su user
runcommand
exit
exit
Run Code Online (Sandbox Code Playgroud)

有没有办法将其缩减为单行命令?例如

ssh --someflags "runcommand"
Run Code Online (Sandbox Code Playgroud)

我试过这个,但提示输入我没有的其他用户的密码:

sudo ssh user@hostnme "runcommand"
Run Code Online (Sandbox Code Playgroud)

linux ssh sudo command-line tcsh

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