「已放弃」如何启动新的 konsole 窗口并在新窗口中继续执行

RT,来源是这样的:我写了一个具有用户交互的脚本,并把它添加到了快捷键里。但因为快捷键没法(也许加某个参数?)在终端中执行,就无法交互。THX

konsole -e [your command]

这个行不?
不过好像一旦你的程序结束了那个终端也就关闭了

1赞

如何快捷键可以运行脚本的话,也可以试试在脚本里面加

#!/bin/bash
konsole -e python2.5 abc.py 

konsole 的参数你自己看看吧,我也不清楚是那个

实验过了,一闪就没了,没有效果…

两种都不行?我现在试不了

1赞

第二种方法的反馈是:
konsole(2346) Konsole::TerminalDisplay::setVTFont: Using an unsupported variable-width font in the terminal. This may produce display errors.

楼主是想使用命令行写东西,又想给用户一定的图形界面交互?

zenity 或许能帮到您:

《使用 Zenity 为命令行程序制作交互界面》

garfileo.is-programmer.com/2011/10/25/zenity-by-examples.30465.html

《Zenity 手册》

help.gnome.org/users/zenity/stable/

1赞

gtkdialog, 终极 bash-gui tool~

不不不,只要在命令行里交互就好了,但这也是个解决方法…

233… 楼主大人,你得知道:

命令行脚本(shell script)里的 #!/bin/sh 定义的是一个新 shell 啊。好比你在 konsole 里执行一个脚本,为什么不是把你脚本里写的命令一条条都复制到你的命令行提示符后面再执行,而是直接返回结果呢?因为这里 konsole 是一个 bash shell(如果你没换过 zsh 什么的),而执行脚本相当于在这个 shell 里嵌套了一个新的 sh shell。同理你想在脚本里开 konsole 那也相当于去开了新 shell 啊。

shell 之间是独立的。比如你写个脚本定义一个变量,保存。然后新开个 konsole 直接 echo 这个变量肯定不会有啊。那你在新 konsole 里无论干什么你都弄不到你原来脚本里去啊。除非你在新开的 konsole 里干的事是把东西写到临时文件,然后原来的脚本去读文件。但那样你不如直接弄个配置文件,每次改了之后再去执行快捷键呢。

所以:不能开新 shell,你这问题解决的思路就不对。不开新 shell 还能交互(你用 konsole 不就是想提供个能看到的输入东西的东西吗)那就是 zenity。

当然楼主这个提问是肯定无效的了,因为这好比问我在一个 konsole 里输命令,在另一个 konsole 里看结果行不行… 张总的复制粘贴梗…

我是看了
linux.vbird.org/linux_basic/0320bash.php
里‘export: 自訂變數轉成環境變數’章节
既然运行了 bash 是子程序的执行,那么能不能把子程序拉出来,拉到一个新的 konsole 里呢?

楼主大人明鉴:

拉出来是可以的,但你的问题不是单纯的拉出来,还有重新塞回去。

鸟哥总不会没告诉你环境变量是干什么的吧… 也总不会没告诉你环境变量不使用 source 命令刷新只能对新打开的同类 shell 生效的吧。

好吧,然后你再在原来脚本里 source .bash_profile?那您这脚本得有多 dirty 啊(因为一个小事情,终端下最重要的配置无辜中枪)。。。

而且这里面还有一个问题是这样:

您的思路:

在新打开的 konsole 里面读取键盘输入,输入到环境变量,原来脚本刷新环境变量,使用该变量。

但你试试在原来脚本的里面

#!/bin/sh
konsole -e "read my_password"

你就会发现那个 read 根本执行不了…konsole 不是每个命令都能拉得出来的。

sudo zypper in zenity

然后执行一下这个 demo:

#!/bin/sh
MY_PASSWD=$(zenity --entry --title=" 请输入您的 g0agent 密码" --text=" 密码" --entry-text="my password")
echo $MY_PASSWD

然后人生就完整了…

当然,如果你真的要用在 KDE 里,你还需要在最前面加

sleep 30s;

不然,你的 KDE 还没启动到桌面就弹窗了,甚至如果你的 KDM 这个时候都还没出来,那控制台弹不了窗。

1赞

薇姐真美~

lz,14l 的解决方案怎么样,还是选择放弃了?
ps:我不认识 ls,

14 楼的方法的确是个解决方案,发帖时也想到了。但是我总感觉不是那么适当,就好像给残疾人安上了假肢而不是真肢。
突然发现不需要这个脚本了,也就放弃了。THX

楼主的问题解决了吗? 我也一样,提示这个错误:
konsole(7466) Konsole::TerminalDisplay::setVTFont: Using an unsupported variable-width font in the terminal. This may produce display errors.
konsole(7466) Konsole::TerminalDisplay::setVTFont: Using an unsupported variable-width font in the terminal. This may produce display errors.

然后一闪就关了

应该是 lz 标记“已放弃”,故未满足 lz 的要求,ls 可以尝试使用 14l 的方法