完成Terminal后,我想退出它。现在,我有三个选择:
Killall码头。它将终止该过程,但会突然结束。我认为这不是最好的主意。
呼叫退出。我更改了设置,因此退出关闭了终端。该应用程序仍然在Dock中显示为打开状态,并且没有执行我想要的操作。
右键单击>退出。但是,这不是退出它的终端命令。
那么,现在我应该如何退出并关闭Terminal?我听说过有关osascript的一些信息,但我不太确定。我想退出并关闭,以使终端不再作为窗口和进程打开。
完成Terminal后,我想退出它。现在,我有三个选择:
Killall码头。它将终止该过程,但会突然结束。我认为这不是最好的主意。
呼叫退出。我更改了设置,因此退出关闭了终端。该应用程序仍然在Dock中显示为打开状态,并且没有执行我想要的操作。
右键单击>退出。但是,这不是退出它的终端命令。
那么,现在我应该如何退出并关闭Terminal?我听说过有关osascript的一些信息,但我不太确定。我想退出并关闭,以使终端不再作为窗口和进程打开。
Answers:
在Terminal.app中
首选项>配置文件>(选择配置文件)>外壳。
在“外壳退出时”上选择“关闭窗口”
好的老式Command-Q怎么样?
您可以通过以下osascript
命令使用AppleScript :
osascript -e 'tell application "Terminal" to quit'
.bashrc
(如果使用其他外壳,则添加别名)。我仍在思考2的答案
exit
的守护进程,然后启动该守护进程。守护进程等待一秒钟后,它可以osascript
按照描述进行调用。
osascript
:tell application "System Events" to keystroke "a" using command down
。但是,这可能也会有问题。
您还可以使用此复杂的命令,该命令不会触发有关终止其自身进程的警告:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
该命令很长,因此您可以quit
在bash配置文件中定义一个别名(例如):
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
这将使您可以简单地quit
在终端中键入内容,而无需进行任何其他设置。
osascript
如icktoofay所述,在代码中使用命令:osascript -e 'tell application "Terminal" to quit'
然后,打开“终端”首选项,转到“设置”>“命令行管理程序”,然后将“关闭前提示:”设置为“从不”。终端现在应该完全退出(不要在扩展坞中保持打开状态),并在退出前忽略提示。如果只有一个“终端”窗口打开,并且该osascript
命令是最后一行代码,则它应等待您运行的任何命令完成。
如果您在同一窗口或后台其他窗口中运行脚本,那么这将不是理想的选择(例如,您可以在后台运行命令,并在第一个命令后跟“&”号的情况下继续在当前窗口中使用其他命令) ); 小心!
如果将osascript
代码包装在Shell脚本文件中,则可以使用您提供的任意文件名来调用它-只要它在Terminal的搜索路径中即可(运行echo $PATH
以查看Terminal在哪里查找脚本)。
cat ~/exit.scpt
command + w
以关闭选项卡)tell application "Terminal"
set WindowNum to get window count
if WindowNum = 1 then
quit
else
tell application "System Events" to keystroke "w" using command down
end if
end tell
就像vi ~/.bashrc
还是zshrc
(还有其他什么?)
添加:
alias exit="osascript ~/exit.scpt"
我在这里尝试了几种不同的答案。无论我尝试什么,我总能找到一个提示用户关闭终端的用例。
由于我的脚本很简单(drutil -drive 2 tray open
-可以打开特定的DVD驱动器),因此用户不会需要的时候看到脚本运行的终端窗口。
我的解决方案是将脚本转换为应用程序,该应用程序在不显示终端窗口的情况下运行脚本。额外的好处是,任何已打开的终端窗口都保持打开状态,如果没有打开,则脚本结束后终端不会保持驻留状态。似乎根本没有启动Terminal运行bash脚本。
我按照以下说明将脚本转换为应用程序:https : //superuser.com/a/1354541/162011
kill
,killall
默认为sendSIGTERM
,可以捕获。有些程序会捕获它,然后自行清理并正常退出。不知道是否Terminal.app
在他们中间。但是,我怀疑这一点在“ 询问其他用户”或“超级用户” 上会更好,因为它似乎没有任何编程内容。