当我完成终端的操作后,我想要退出。目前,我有三个选项:
使用killall Terminal。这会结束进程,但相对突然。我认为这不是最好的选择。
调用exit命令。我已更改设置,使得exit关闭终端。但该应用程序仍会在Dock中显示,并不能达到我的要求。
右键点击>退出。但这不是一个退出终端的终端命令。
那么,现在,我应该如何退出和关闭终端呢?我听说过osascript,但我不太确定。我想退出并关闭终端,以便终端不再作为窗口和进程打开。
这是我为刚编写的命令所做的事情。我想要能够在不同的计算机上创建指向苹果配置器备份目录的“快捷方式”,但由于它相对于用户的主目录,我需要将其制作成.command
文件。以下是内容:
#!/usr/bin/env bash
open "${HOME}/Library/Application Support/MobileSync/Backup"
(sleep 0.1 ; osascript -e 'tell application "Terminal" to quit') &
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 驱动器),用户在脚本运行时不需要看到终端窗口。
我的解决方案是将脚本转换为应用程序,以在不显示终端窗口的情况下运行脚本。额外的好处是,任何已经打开的终端窗口都会保持打开状态,如果没有打开,则脚本结束后终端不会保留。似乎根本不启动终端来运行 bash 脚本。
我按照这些说明将我的脚本转换为应用程序:https://superuser.com/a/1354541/162011
kill
命令一样,默认情况下,killall
也会发送SIGTERM
信号,这个信号可以被捕获。一些程序会捕获该信号,清理自己并正常退出,但我不确定Terminal.app
是否是其中之一。然而,考虑到它似乎没有任何编程内容,若有需要,建议在 Ask Different 或 Super User 上寻求帮助。 - dmckee --- ex-moderator kitten