我的 13.10 PC 上有一个“沙盒”文件夹,我用它来做任何“测试”之类的事情,或者当我更新一段代码并希望它与其他所有内容完全分开时。为了使这个过程有一定顺序,我把它分成了子文件夹,结构如下:
/数据/工作/沙箱/mmyy/ddmmyy
(即今天的文件夹是/data/Work/sandbox/0214/260214
。)
为了能够快速切换到该目录,我设置了我的.bashrc
以便分配一个环境变量,$TODAYSAND
该变量每天更改并指向正确的文件夹,使用以下date
命令:
TODAYSAND="/data/Work/sandbox/`date +%m%y/%d%m%y`"
这在 shell 中运行良好,所以我从中删除了此行.bashrc
并将其添加到我的profile.d
新脚本中/etc/profile.d/sandbox.sh
。它仍然可以正确获取信息,并且在终端中我仍然可以cd $TODAYSAND
毫无问题地获取信息。
我现在想在 Nautilus 中设置一个指向此文件夹并以相同的方式动态更改的书签,这样我就不必每次都找到最新的书签。但是,我甚至无法让它接受$TODAYSAND
文件夹名称。如果我在顶部栏中输入它(通过输入 a/
让我输入路径而不是搜索),它会尝试转到一个不存在的文件/$TODAYSAND
,并给出一个错误,说它不存在。同样,如果我创建一个指向的书签$TODAYSAND
,它 a) 使用与我告诉它为网络位置添加书签相同的图标创建它,并且 b) 当我单击它时,Nautilus 立即崩溃。
我怎样才能让 Nautilus 接受这个变量作为有效的文件路径?
答案1
我没有找到将环境变量传递给 Nautilus 的方法。
这是“如何动态更新书签?”的答案
在 Ubuntu 12.04 中,Nautilus 按~/.gtk-bookmarks
以下格式存储书签
file:///home/username/Documents
....
file:///path/to/0214/260214
您可以使用一个小的 bash 函数将最后一行更改为
file:///path/to/0214/270214
它将动态更改书签。以下是脚本
updt_sand_box(){
if [ -d /path/to/"$(date +%m%y)"/"$(date +%d%m%y)" ]; then
sed -i "s#$(date --date yesterday "+%d%m%y")#$(date +%d%m%y)#" ~/.gtk-bookmarks
else
zenity --info --text="/path/to/$(date +%m%y)/$(date +%d%m%y) does not exist"
fi
}
将上述函数放入~/.bashrc
并获取它,
. ~/.bashrc
要更新沙盒书签,请在终端中输入
updt_sand_box
上述脚本的使用方法多种多样。您可以创建一个 cronjob(使用适当的DISPLY
变量)或将其放入~/.bashrc
任何地方以便运行。
较新的 Ubuntu 很可能将书签存储在中~/.config/gtk-3.0/bookmarks
,您需要相应地修改脚本。
将上述脚本中的替换~/.gtk-bookmarks
为。~/.config/gtk-3.0/bookmarks