是否有命令可用于更改 Mac OS X 终端的配色方案?我喜欢能够根据我运行的脚本更改颜色的想法。到目前为止,我只是使用 PS1 更改我的 bash 提示符的颜色,这没问题,但不像我希望的那样引人注目。
答案1
取决于什么确切地您想要实现什么,这里有一些使用终端样式的 AppleScript 想法。这些比更强大tput
,因为这会被彩色提示重置。等等(至少对我来说)。
这将把所有运行 Python 的选项卡(现在没有可用于测试的 SSH 服务器)设置为 Homebrew,其他选项卡设置为 Ocean:
tell application "Terminal"
repeat with w from 1 to count windows
repeat with t from 1 to count tabs of window w
if processes of tab t of window w contains "Python" then
set current settings of tab t of window w to (first settings set whose name is "Homebrew")
else
set current settings of tab t of window w to (first settings set whose name is "Ocean")
end if
end repeat
end repeat
end tell
保存为脚本并在osascript Name.scpt
您想要重新着色外壳时随时运行(当然您可以将其包装为外壳脚本或类似的东西)。
如果要以不同的方式显示所有长时间运行的进程,请使用以下条件:
if busy of tab t of window w is true then
或者,您可以设置单个选项卡的样式,手动选择:
on run argv
tell application "Terminal" to set current settings of tab (item 1 of argv as number) of front window to first settings set whose name is (item 2 of argv)
end run
像这样运行:
osascript StyleTerm.scpt 3 Homebrew
-> 最前面的终端窗口的第三个选项卡具有 Homebrew 风格!
如果要修改背景窗口,请将“前台窗口”替换为括号表达式,例如“tab”后面的表达式。如果始终要修改选定的“当前选项卡”,请使用selected tab
而不是tab (item 1 of argv as number)
。
.bash_profile
如果第一个解决方案对您来说太过费力,请添加以下内容:
PROMPT_COMMAND='osascript "/path/to/Name.scpt"'
现在它会在每个提示之前执行(唯一的问题是:在开始某件事之后不会执行,即ssh
。但这个主题与花哨的 bash 技巧无关。这只是一个指针。)
答案2
您的脚本可以使用该tput
命令以可移植的方式设置颜色。尝试以下脚本,您将看到终端清晰地显示深青色背景和一些亮青色文本。
#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World
您可以在以下位置查看有关此内容的更多信息man 5 terminfo
在“颜色处理”部分中。
您可以通过直接回显终端识别的转义序列来执行相同的操作。这样会更快,但使用其他终端程序可能无法工作。其中许多程序可以识别 xterm 序列,上面的脚本使用它们时会显示如下内容。
#!/bin/bash
printf "\033[48;5;6m" # or "\033[46m"
printf "\033[H\033[2J" # your system's clear command does something similar
printf "\033[38;5;14m" # or "\033[96m"
echo Hello World
有关 xterm 控制序列的更多信息这里。
答案3
您可以使用 applescript 为每个新终端赋予一个随机主题。
编辑您的.bash_profile
并添加此命令
osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"
如果您获得相同的随机主题终端,您可以随时点击⌘I
并手动设置它。
如果你有很多不同的终端主题,这会更有用。如果你四处寻找,有很多网站可以做到这一点。
答案4
这个 AppleScript 在我 OS X 14.3 上可用(而其他答案则不行)。
tell application "Terminal"
repeat with i in windows
try
set current settings of tabs in i to settings set "Solarized Dark"
end try
end repeat
end tell
在 OS X 14.3 中,终端应用程序似乎改变了其选项卡和窗口的显示方式,因此在迭代某些窗口的选项卡时,您肯定会收到错误。但这些似乎不是真正的窗口,所以您可以忽略它们(我使用块来做到这一点try ... end try
)。
我倾向于在我的 shell 脚本中内联类似这样的小脚本,就像这样:
osascript -e "tell application \"Terminal\"
repeat with i in windows
try
set current settings of tabs in i to settings set \"Solarized Dark\"
end try
end repeat
end tell"
我个人使用它来自动在终端中切换明暗主题(我只需要打开一个新的终端选项卡或运行我的color_mode
函数)。您可以查看我执行此操作的完整代码在我的 dotfiles 仓库中。