问题标签 [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.
bash - 带有可变隐藏根前缀的 Tcsh 和/或 bash 目录完成
我正在尝试在 tcsh 和/或 bash 中设置目录补全(两者都在我的站点上使用),但略有不同:对于特定命令“foo”,我希望补全使用自定义函数来匹配第一个 / 分隔的术语到实际的子树节点,然后按照正常目录完成任何后续术语。它是 cdpath 和完成的组合,或者我认为是目录完成的一种形式,其中起点由完成脚本控制。它将按如下方式工作:
我们愿意这样做是因为我们有一个大型的生产开发树(这是一个 CGI 生产设施),精通 shell 的用户一直在导航和跳跃。抱怨是树的上层繁琐且多余;他们只需要快速搜索第一个术语即可找到可能的“头”选择并从那里完成目录完成。看起来可编程完成可以提供一种方法来做到这一点,但事实证明它非常难以捉摸。
我已经多次尝试自定义 bash 和 tcsh 补全来做到这一点,但我得到的最接近的是一种“单词补全”形式,其中用户必须将目录级别视为带有空格的单独单词(例如 foo scene/shot /元素/工作区/ ...)。我可以继续修改我当前的脚本——但我一直想知道是否有什么我不理解的东西——这是我第一次尝试完成程序,并且在 shell 书籍和互联网上的文档和示例非常薄. 如果有任何完成大师可以让我走上正轨,我将不胜感激。
FWIW:这是我到目前为止所得到的(首先是 tcsh,然后是 bash)。请注意,静态根 '/root/sub1/sub2/sub3' 只是搜索功能的占位符,它将在不同级别找到不同的匹配项。如果我能让它工作,我可以稍后加入搜索功能。同样,这两个示例都进行了单词补全,这要求用户在每个匹配项之后输入一个空格(我还必须删除函数中的空格来构造一个实际的路径,哎呀!)
TCSH 示例(注意该函数实际上是一个 bash 脚本):
重击示例:
bash - csh 命令列表,如 ksh { list; }
在 bourne 兼容的 shell 中,{ list; }
语法会导致 shell 在执行之前读取完整的命令列表,而无需打开新的 shell。csh有类似的东西吗?
谢谢。
shell - 如何在 csh shell 的命令提示符下使用 for 循环——寻找体面的一个内衬
来自 bash shell,我错过了一个简单的循环滚动(for i in (...); do ... done;)
你会在 cshell 中发布典型的单行循环吗?
请单行,而不是多行 thx
vim - 如何从 shell 脚本启动编辑器?
我希望我的 tcsh 脚本启动一个编辑器(例如,vi、emacs):
这会使用 my_file 启动 vi,但首先会显示警告“Vim:警告:输出不是终端”,并且我的击键不会出现在屏幕上。在我杀死 vi 之后,我的终端窗口被弄乱了(没有换行符),需要“重置”。我尝试了“emacs -nw”、“xemacs -nw”和 pico,结果相似。“xemacs”可以工作,但会启动一个单独的窗口。我想重用相同的终端窗口。
有没有办法从脚本启动编辑器,以便它重用相同的终端窗口?
unix - 第二个前一个命令执行
在 Unix 中,!!
是前一个命令的别名:
第二个最前面的命令的别名是什么?
shell - 如何在 tcsh shell 上映射 Delete 和 End 键?
我使用 tcsh ,当在 cmd 行上按下 Delete/End 时,它只是显示为~
; 我必须按<Ctrl><e>
才能走到行尾。任何人都可以帮助我使用他们的名字所暗示的删除/结束键吗?
scripting - 如何按时间顺序定期将 tcsh 历史备份到单个文件?
我在工作中使用 tcsh - 我广泛使用的功能之一是在 shell 提示符下完成命令行历史记录。目前,我已将历史文件的大小限制为 2000(因为我不想让 shell 太慢)。但是有时我需要一个命令,我知道我已经使用了一两个月,但现在已经被删除了。所以我想要一个系统,其中:
我的历史缓冲区仅存储 2000 行
旧命令不应被删除,而是应保存到“主”历史文件中,按时间顺序排列,即如果打开了两个外壳,则应根据日期戳(而不是外壳的顺序)对历史中输入的命令进行排序被关闭)!
如果这个主历史文件可以自动备份,比如每周备份,那将是完美的。
我敢肯定,许多狂热的 shell 用户都面临过这样的情况——我希望从其中一位用户那里得到答案!
find - 在 tcsh 的单个命令别名中使用 vim 查找和打开文件
我想创建一个像这样工作的别名:
vf hello.c
将执行一个 find 命令来搜索 hello.c 并在 vim 编辑器中打开它。
最好的方法是什么?我尝试了以下方法(不起作用):
alias vf "find -name $* -exec vi {} \;"
alias vf "vi `find -name $*`"
任何人都可以帮忙吗?
tcsh - 奇怪的事情发生在一个简单的 CShell 程序中
嘿伙计们,我有一个奇怪的错误,我不知道如何修复它,如果你能提供帮助将非常高兴。
基本上,程序所做的是接收 2 个参数,例如Sep-22-07 11:45am
并以这种格式返回它yyyymmddhhmm
-200709071145
现在,当我发送开头带有两个零的第二个参数时,会发生奇怪的事情,例如……例如上午 00:01。然后整个设定的月份,设定的日期,设定的年份开始疯狂并返回我的输出:
+ 另一个输出。
程序中还有其他的回声,不过我只是用来调试的。
无论如何,提前谢谢。我是 CShell 的新手,所以如果这是一个简单的错误,我很抱歉,但我似乎找不到它。
bash - 使用vi打开目录中最后修改的文件
我想要一种快速的方法来打开目录中最后修改的文件,可能是以别名的形式。
目前,我做 ls -ltr。然后复制粘贴文件名
假设我正在使用 tcsh