问题标签 [tcsh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2095 浏览

bash - 带有可变隐藏根前缀的 Tcsh 和/或 bash 目录完成

我正在尝试在 tcsh 和/或 bash 中设置目录补全(两者都在我的站点上使用),但略有不同:对于特定命令“foo”,我希望补全使用自定义函数来匹配第一个 / 分隔的术语到实际的子树节点,然后按照正常目录完成任何后续术语。它是 cdpath 和完成的组合,或者我认为是目录完成的一种形式,其中起点由完成脚本控制。它将按如下方式工作:

我们愿意这样做是因为我们有一个大型的生产开发树(这是一个 CGI 生产设施),精通 shell 的用户一直在导航和跳跃。抱怨是树的上层繁琐且多余;他们只需要快速搜索第一个术语即可找到可能的“头”选择并从那里完成目录完成。看起来可编程完成可以提供一种方法来做到这一点,但事实证明它非常难以捉摸。

我已经多次尝试自定义 bash 和 tcsh 补全来做到这一点,但我得到的最接近的是一种“单词补全”形式,其中用户必须将目录级别视为带有空格的单独单词(例如 foo scene/shot /元素/工作区/ ...)。我可以继续修改我当前的脚本——但我一直想知道是否有什么我不理解的东西——这是我第一次尝试完成程序,并且在 shell 书籍和互联网上的文档和示例非常薄. 如果有任何完成大师可以让我走上正轨,我将不胜感激。

FWIW:这是我到目前为止所得到的(首先是 tcsh,然后是 bash)。请注意,静态根 '/root/sub1/sub2/sub3' 只是搜索功能的占位符,它将在不同级别找到不同的匹配项。如果我能让它工作,我可以稍后加入搜索功能。同样,这两个示例都进行了单词补全,这要求用户在每个匹配项之后输入一个空格(我还必须删除函数中的空格来构造一个实际的路径,哎呀!)

TCSH 示例(注意该函数实际上是一个 bash 脚本):

重击示例:

0 投票
2 回答
514 浏览

bash - csh 命令列表,如 ksh { list; }

在 bourne 兼容的 shell 中,{ list; }语法会导致 shell 在执行之前读取完整的命令列表,而无需打开新的 shell。csh有类似的东西吗?

谢谢。

0 投票
4 回答
13028 浏览

shell - 如何在 csh shell 的命令提示符下使用 for 循环——寻找体面的一个内衬

来自 bash shell,我错过了一个简单的循环滚动(for i in (...); do ... done;)

你会在 cshell 中发布典型的单行循环吗?

请单行,而不是多行 thx

0 投票
7 回答
12116 浏览

vim - 如何从 shell 脚本启动编辑器?

我希望我的 tcsh 脚本启动一个编辑器(例如,vi、emacs):

这会使用 my_file 启动 vi,但首先会显示警告“Vim:警告:输出不是终端”,并且我的击键不会出现在屏幕上。在我杀死 vi 之后,我的终端窗口被弄乱了(没有换行符),需要“重置”。我尝试了“emacs -nw”、“xemacs -nw”和 pico,结果相似。“xemacs”可以工作,但会启动一个单独的窗口。我想重用相同的终端窗口。

有没有办法从脚本启动编辑器,以便它重用相同的终端窗口?

0 投票
1 回答
220 浏览

unix - 第二个前一个命令执行

在 Unix 中,!!是前一个命令的别名:

第二个最前面的命令的别名是什么?

0 投票
3 回答
6622 浏览

shell - 如何在 tcsh shell 上映射 Delete 和 End 键?

我使用 tcsh ,当在 cmd 行上按下 Delete/End 时,它只是显示为~; 我必须按<Ctrl><e>才能走到行尾。任何人都可以帮助我使用他们的名字所暗示的删除/结束键吗?

0 投票
2 回答
1357 浏览

scripting - 如何按时间顺序定期将 tcsh 历史备份到单个文件?

我在工作中使用 tcsh - 我广泛使用的功能之一是在 shell 提示符下完成命令行历史记录。目前,我已将历史文件的大小限制为 2000(因为我不想让 shell 太慢)。但是有时我需要一个命令,我知道我已经使用了一两个月,但现在已经被删除了。所以我想要一个系统,其中:

  1. 我的历史缓冲区仅存储 2000 行

  2. 旧命令不应被删除,而是应保存到“主”历史文件中,按时间顺序排列,即如果打开了两个外壳,则应根据日期戳(而不是外壳的顺序)对历史中输入的命令进行排序被关闭)!

  3. 如果这个主历史文件可以自动备份,比如每周备份,那将是完美的。

我敢肯定,许多狂热的 shell 用户都面临过这样的情况——我希望从其中一位用户那里得到答案!

0 投票
1 回答
187 浏览

find - 在 tcsh 的单个命令别名中使用 vim 查找和打开文件

我想创建一个像这样工作的别名: vf hello.c将执行一个 find 命令来搜索 hello.c 并在 vim 编辑器中打开它。

最好的方法是什么?我尝试了以下方法(不起作用):

alias vf "find -name $* -exec vi {} \;"

alias vf "vi `find -name $*`"

任何人都可以帮忙吗?

0 投票
2 回答
329 浏览

tcsh - 奇怪的事情发生在一个简单的 CShell 程序中

嘿伙计们,我有一个奇怪的错误,我不知道如何修复它,如果你能提供帮助将非常高兴。

基本上,程序所做的是接收 2 个参数,例如Sep-22-07 11:45am 并以这种格式返回它yyyymmddhhmm-200709071145

现在,当我发送开头带有两个零的第二个参数时,会发生奇怪的事情,例如……例如上午 00:01。然后整个设定的月份,设定的日期,设定的年份开始疯狂并返回我的输出:

+ 另一个输出。

程序中还有其他的回声,不过我只是用来调试的。

无论如何,提前谢谢。我是 CShell 的新手,所以如果这是一个简单的错误,我很抱歉,但我似乎找不到它。

0 投票
2 回答
6558 浏览

bash - 使用vi打开目录中最后修改的文件

我想要一种快速的方法来打开目录中最后修改的文件,可能是以别名的形式。

目前,我做 ls -ltr。然后复制粘贴文件名

假设我正在使用 tcsh