提问者:小点点

打开一个新的终端标签并在里面运行一个命令,仅在打开标签后


我正在尝试创建一个脚本来在我的rails项目中打开一个新选项卡并在此选项卡中运行rails s,以启动我的服务器。

我的命令:

xfce4-terminal --tab --title="rails server" --working-directory="Documents/projects/rails_blog" --command="bash -c 'rails s';bash"

新选项卡在正确的目录中打开。
但我总是收到这个错误:
bash: rails:命令未找到

我认为rails的在新选项卡打开之前正在运行

--order标签只期望bash命令。我不知道

为什么?我该怎么解决这个问题?

我已经尝试了下面的所有答案:
from superuser
stackoverflow-使用命令行
from stackExchange
from ask ubuntu-打开带有多个选项卡的终端并从ask ubuntu执行应用程序
-如何在不同的文件夹(工作目录)中打开多个终端选项卡?


共3个答案

匿名用户

以下技术适用于较新的gnome终端。

(1)这会打开一个新的终端窗口并执行“ls”并使终端窗口保持打开状态

gnome-terminal --title=newWindow \\
               -- bash -c "ls; bash"

(2)这会在当前gnome终端中打开一个新选项卡并在该选项卡中执行“ls”。

gnome-terminal --tab --title=newTab \\
               -- bash -c "ls ;bash"

上述技术适用于使用VTE 0.52.2 GNUTLS-PCRE2的GNOME终端3.28.2。请注意,在未来的版本中,旧的gnome终端选项-e--命令和-x将被弃用。

在gnome-end打开后执行命令的首选方法是在最后一个空--选项之后执行命令。在上面的示例中,我们执行bash命令,该命令又接受一组在该shell中执行的命令。第一个选项中需要尾随bash,否则窗口/选项卡将关闭。

希望这有帮助。

匿名用户

我为此使用tmuxator。您将把它放在导演中,然后运行tmuxator start project,它会为您在tmux中启动会话。

# ~/.tmuxinator/project.yml

name: project
root: ~/projects/some_path

windows:
  - server: bundle && bundle exec rake db:migrate && rails s

匿名用户

我个人在我所有的项目中都使用iTerm2。我运行下面的脚本,它在同一个终端窗口中打开多个选项卡并执行必要的命令。

#!/bin/bash

osascript -e 'tell application "iTerm2"
set newWindow to (create window with default profile)
tell current session of newWindow
    write text "echo Hello Terminal 1"
end tell 

tell current window
create tab with default profile
tell current session 
    write text "echo Hello Terminal 2"
end tell
end tell

tell current window
create tab with default profile
tell current session 
    write text "echo Hello Terminal 3"
end tell
end tell

end tell'

您可以根据需要修改“”中的命令。