我问这个问题是因为我尝试了很多找到的解决方案但都没有用:
gnome-terminal --save-config=...
导致错误,此选项不再可用gnome-terminal --tab -- 'vim ~/Files/file.txt'
创建 shell 脚本导致错误,我的系统是德语的,但似乎There was an error creating the child process for this terminal Failed to execute child process "vim ~/Files/file.txt" (No such file or directory)
并且什么都不做,只是使用
vim
没有文件来打开作品用一个会话管理器只是自动打开终端,但不显示任何标签
并且
gnome-terminal --tab -- 'cd ~/Files/'
也不起作用(类似上述错误)
版本是# GNOME Terminal 3.28.2 using VTE 0.52.2 +GNUTLS -PCRE2
。也许我的解决方法有错误,或者您知道其他(更好的)替代方案?
感谢你们对我的帮助!
答案1
我能找到的最接近实现这一点的方法需要创建多个脚本。gnome-terminal
多年来发生了变化,并且-x
和--command
选项已被严重弃用。最好的办法是为要运行和使用的每个选项卡创建配置文件:
gnome-terminal --tab-with-profile=Something1 --tab-with-profile=Something2
如果你在命令中使用类似~
或的内容,那么很可能是那些*
惯于被评估,因为这实际上是 shell (bash) 的工作gnome-terminal
,因此在某处创建一个实际的脚本并告诉gnome-terminal
使用它可能会有所帮助。
答案2
该脚本打开新标签页:
pathtabs.list
将(foo-test) 路径列表保存到新的终端选项卡中;- 创建一个新脚本
autotab.sh
来xdotool
格式化任何路径列表,向命令添加controlshiftt快捷方式和s;cd
autotab.sh
对 xdotool 格式有用<any-list-of-paths>
;- 用法:
autotab.sh <any-list-of-paths>
; - 为创建
foo_*
测试目录pathtabs.list
; - 运行
./autotab.sh pathtabs.list
并将输出保存到新脚本maketabs.sh
maketabs.sh
对于打开与原始相同的一组选项卡/路径很有用pathtabs.list
;
...并运行命令:
- 保存
pathncommtabs.list
(foo-test) 路径和命令列表以在新终端选项卡中运行; - 创建一个新脚本
autopctab.sh
来xdotool
格式化任何路径和命令列表,并向命令添加controlshiftt快捷方式;
和s;cd
autopctab.sh
xdotool
对于格式化很有用<list-of-paths-and-commands>
(参见pathncommtabs.list
);- 用法:
autopctab.sh <list-of-paths-and-commands>
;(见pathncommtabs.list
) - 运行
./autopctab.sh pathncommtabs.list
并将命令列表保存到新脚本makepctabs.sh
makepctabs.sh
有助于打开与原始相同的一组选项卡/路径/命令pathncommtabs.list
;
#open-several-tabs-with-xdotool-slowly-and-easily
#!/bin/bash
#pathtabs.list
if [ ! -f ~/pathtabs.list ]; then
echo ~/foo_00 > pathtabs.list
echo ~/foo_00/foo_00_1 >> pathtabs.list
echo ~/foo_00/foo_00_2 >> pathtabs.list
echo ~/foo_00/foo_00_2/foo_00_2_1 >> pathtabs.list
fi
echo 'pathtabs.list: has a list of paths for the new tabs'
#mkdirs
if [ ! -d ~/foo_00/ ]; then
mkdir foo_00
mkdir foo_00/foo_00_1
mkdir foo_00/foo_00_2
mkdir foo_00/foo_00_2/foo_00_2_1
fi
echo 'mkdirs: testing foo_*'
##commtabs.list
if [ ! -f ~/commtabs.list ]; then
echo nano newfile1.txt > commtabs.list
echo nano newfile2.txt >> commtabs.list
echo nano newfile3.txt >> commtabs.list
echo nano newfile4.txt >> commtabs.list
fi
echo 'commtabs.list: has a list of commands to run on the new tabs'
#pathtabs.list+commtabs.list+options
if [ ! -f ~/pathncommtabs.list ]; then
cat pathtabs.list |sed 's/.*/cd &;/'|sed '1s/^/c+s+t;/'|\
paste - commtabs.list|tr -d '\t' |sed '$!s/$/;c+s+t/' > pathncommtabs.list
fi
echo 'pathncommtabs.list: integrates pathtabs.list+commtabs.list+cd+;+(new-tab-tokens)'
#autopctab.sh <anypathncommtabs.list>
if [ ! -f ~/autopctab.sh ]; then
echo '#!/bin/bash' > autopctab.sh
echo 'cat $1| sed '\''s/ /#/g'\''| sed '\''s/\(.\)/\1 /g'\''|sed '\''s/#/space/g'\''|\
sed '\''s/~/asciitilde/g'\''|sed '\''s/_/underscore/g'\''|sed '\''s/c + s + t/control+shift+t/g'\''|\
sed '\''s/\//slash/g'\''|sed '\''s/\./period/g'\''|sed '\''s/;/Return/g'\''|\
sed '\''s/.*/xdotool key --delay 18 & Return/'\''' >> autopctab.sh
chmod u+x autopctab.sh
fi
echo 'autopctab.sh: xdotool-format paths+commands+(xdotool-commands)'
#run autopctab.sh <pathncommtabs.list>
#makepctabs.sh
if [ ! -f ~/makepctabs.sh ]; then
echo '#!/bin/bash' > makepctabs.sh
./autopctab.sh pathncommtabs.list >> makepctabs.sh
chmod u+x makepctabs.sh
fi
echo 'makepctabs.sh: run xdotool command lines to OPEN new tabs AND RUN commands with pathncommtabs.list'
#autotab.sh <anytabs.list>
if [ ! -f ~/autotab.sh ]; then
echo '#!/bin/bash' > autotab.sh
echo 'cat $1|sed '\''s/.*/cd &/'\''|sed '\''s/ /#/g'\''|\
sed '\''s/\(.\)/\1 /g'\''|sed '\''s/#/space/g'\''|\
sed '\''s/~/asciitilde/g'\''|sed '\''s/_/underscore/g'\''|\
sed '\''s/\//slash/g'\''|sed '\''s/\./period/g'\''|\
sed '\''s/.*/xdotool key --delay 18 control+shift+t space c d space asciitilde Return & Return c l e a r Return/'\''' >> autotab.sh
chmod u+x autotab.sh
fi
echo 'autotab.sh: xdotool-format ONLY paths+(xdotool-commands)'
#run autotab.sh <pathtabs.list>
#maketabs.sh
if [ ! -f ~/maketabs.sh ]; then
echo '#!/bin/bash' > maketabs.sh
./autotab.sh pathtabs.list >> maketabs.sh
chmod u+x maketabs.sh
fi
echo 'maketabs.sh: run xdotool command lines ONLY to open new tabs with pathtabs.list'
#run-maketabs?
#./maketabs.sh
#remove-maketabs.sh?
#remove-autotab.sh?
#rm autotab.sh
#remove-pathtabs.list?
#rm pathtabs.list
#run-makepctabs?
#./makepctabs.sh
#remove-makepctabs.sh?
#rm makepctabs.sh
#remove-autopctab.sh?
#rm autopctab.sh
#remove-pathncommtabs.list?
#rm pathncommtabs.list
#remove-dirs?
#rm -r foo_0?
#echo See also 'https://askubuntu.com/a/380320'
#echo ' https://www.semicomplete.com/projects/xdotool/'
#echo ' https://github.com/jordansissel/xdotool'