将 schemer 的输出插入到 Terminator 配置中

Insert output of schemer to Terminator config

我的问题主要是对不同的 linux 命令一无所知。我已经 运行 撞墙了,因为我无法正确查找我需要的命令。

但是,我想获取 schemer (github.com/thefryscorer/schemer" 输出的字符串并将其插入我的 Terminator 配置中以 "palette=" 开头的行,替换现有信息。

目的是每隔一段时间将其设置为 运行,以使用我的 bash 颜色更新我的自行车壁纸列表。

如果你能给我指出一个地方来学习这种自动化和命令的使用,我将不胜感激。

您需要的两件事是 sedcron

sed 是流编辑器。特别是,它使用正则表达式允许您搜索文本文件并替换部分文本。

特别是,如果您有

#conf.config
palette=REPLACE_ME
other.var=numbers

你可以说sed s/REPLACE_ME/replaced_text/g conf.config

并且 sed 将用第二个参数 ("replace text") 替换 conf.config 中的文本。

所以这将在您编写的 bash 脚本中。

然后您需要定期执行您的脚本,您可以通过设置 cron 作业来执行此操作。这将定期执行一个文件。

您可以将 shell 脚本放入 /etc/cron 文件夹中的任何一个 etc/cron.hourlyetc/cron.daily

在终端输入 crontab -e 以打开您的个人 cron 配置文件,以便更精细地控制命令何时执行。

cron命令格式如下:

minute hour day-of-month month day-of-week command

因此,您可以在星期一下午每周执行一次命令(如以下来源中所述)

30 17 * * 1 /path/to/command(30=分钟,17=下午 5 点,1 是星期一,因为星期日是 0 索引)。

或每 15 分钟一次

*/15 * * * * /path/to/command

你的命令是 ~/scripts/myscript.sh 或任何 bash 脚本有你的 sed 命令。

所以你可以让你的 cron 作业 运行 计划者,然后在同一个脚本中,将该字符串放入你的配置文件中。您可能需要重新加载您的配置文件,为此(坚持在脚本末尾)的命令是 source [path_to_config]

好了。 运行 schemer 定期获取字符串,将其粘贴到配置文件中,然后重新加载文件。 cron,一些基本的 bash(因为我不熟悉 schemer,或者它的输出性质超出 "it's a string"),sed,和 source

cron 作业的来源,因为我对它们的熟悉不如对 sed 的熟悉:

https://help.ubuntu.com/community/CronHowto

https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job

运行 Arch 上的 Cinnamon 2.6.13 Linux,我编写了这段代码,从定义的目录中获取一个随机文件并将其用作墙纸。之后它运行 schemer 并将新生成的配置复制到 Terminators 配置目录中。

#!/bin/bash
#Todo; 
currentmonth=August2015 
#directory of wallpaper
currentfilename="$(ls ~/Pictures/wallpapers/"$currentmonth" | shuf -n 1)"
#set $currentfilename to random filename from $currentmonth
gsettings set org.cinnamon.desktop.background picture-uri file:///home/cogitantium/Pictures/wallpapers/"$currentmonth"/"$currentfilename" 
#set wallpaper as current filename from default directory.
~/Go/bin/schemer -term="terminator" ~/Pictures/wallpapers/"$currentmonth"/"$currentfilename" > ~/Scripts/temp/currentpalette 
#generate palette and redirect output to temporary palette file
echo "$currentmonth - $currentfilename - $currentpalette"
currentpalette="$(cat temp/currentpalette)"
#set $currentpalette to currentpalette
touch "temp/config"
sed -i "s/^.*\bpalette\b.*$/$currentpalette/g" "temp/config"
#insert generated palette into terminator config
cp "temp/config" "~/.config/terminator/config"

它确实包含一些错误并且有时表现不正常。此外,即使在 killall 之后,终结者似乎也不会对这些变化做出反应。如果我找到解决方案,我会更新我的答案。