我正在为Linux的新用户构建一个脚本,所以请理解我为什么这样问:)
我的脚本是这样运行的:
python script.py -f filename.txt
为此,我使用了optparse模块。但是,在进行制表符补全时,我注意到了以下几点。
当我执行以下操作时,制表符完成功能正常:
python script.py <tab completion> # Tab completion works normally as expected
但当我这样做时,它不起作用:
python script.py -f <tab completion> # No type of ta
我想为一个(相当复杂的) Bash完成脚本写一个Unit Test,最好是用Python --只是一些以编程方式获得Bash完成值的东西。测试应该如下所示:
def test_completion():
# trigger_completion should return what a user should get on triggering
# Bash completion like this: 'pbt createkvm<TAB>'
assert trigger_completion('pbt createkvm') ==
我使用缩进选项卡在文本编辑器中编写脚本,因为键入1 Tab比4 Space更容易。然而,我只是想弄清楚为什么下面的if语句(它在我的bash脚本中工作)不能在命令行上工作,这让我自己发疯了:
dirs=(HIC11490 HIC11493 HIC11494)
for i in "${dirs[@]}"; do
if [ -d "$i" ]; then
echo $i exists;
else
echo $i does not exist;
fi
done
具体来说,它列出了工作目录中的所有文件:
$
像zsh和bash这样的Shells有bang命令,这些命令以感叹号开头,然后扩展到用户历史记录中的项。
要获得运行的最后一个命令的最后一个参数,可以使用!$。
$ echo one two three
$ echo !$ !$ !$
> three three three
在zsh中,可以交互地扩展这些bang命令:
touch foo bar
ls !$<TAB>
!$将被扩展为内联foo。
这是非常有用的,因为它经常防止我犯错误:我按tab展开并确保我正确地展开它,而C-/则在我自信的时候撤销扩展。
在bash中是否有一个设置来实现in命令的交互扩展?
子subshel
由于一些问题,我不得不从头开始安装我的开发机器,在这样做的时候,我还从Ubuntu14.04升级到了16.04。
我安装了最新的节点和npm,但是我观察到了一个奇怪的行为。键入命令后按tab键时
npm run sta
我在终端机上没有收到任何建议/自动完成。在上面的示例中,我希望它能够自动完成
npm run start
我在package.json中定义了许多脚本,但在按下选项卡时,这些脚本都没有显示为建议或自动完成。在我的脚本中,我已经定义了、pack-linux-x64, pack-darwin-x64等,但是在输入
npm run pack
按下选项卡,我不会从我在package.
我需要bash脚本从用户那里获得函数名。脚本应该通过自动完成在同一个bash脚本文件中定义的函数来帮助用户。
例:
myBash.sh
#!/usr/bash
function func1()
{
echo "In func1 func"
}
function func2()
{
echo "In func2 func"
}
function myFunc1()
{
echo "In myFunc1 func"
}
while [ 1 ]
do
echo -n "cmd>"
re
最近,当我使用java命令运行一个java程序,然后按tab键自动完成.class文件时,它就冻结了。我必须按下control+c才能杀死它,然后我得到了消息Killed by signal in _java_class after 4s。我试过用谷歌搜索,但似乎什么也找不到。javac +Tab键按预期工作。