Lubuntu 16.04-Openboxセッション
ターミナルを使用して、gedit
でタイムスタンプ付きファイルを開くことができます。
gedit ~/$(date +%Y%m%d%H%M%S).txt
このコマンドは、Openboxのキーボードショートカットからも使用できます。
<keybind key="W-4"> # gedit time-stamped file
<action name="Execute"><command>sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'</command></action>
</keybind>
しかし、Exec=
ファイルの.desktop
行を介して同じことを行うことはできません。
Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'
~/.txt
というファイルを作成するだけです
それで、私が望むことをするために.desktopファイルを取得するにはどうすればよいですか?
残念ながら、.desktopファイルは、常にサブシェル$()
コマンドを希望どおりに呼び出すとは限りません。私が見つけたこれを行う1つの方法は、そのようなファイルを開くサブシェルコマンドを含む別のスクリプトを作成することです。
Exec
行は次のようになります。
Exec=/path/to/script
スクリプトファイルには、新しいファイルを開くコマンドが含まれます。
#!/bin/sh
gedit ~/$(date +%Y%m%d%H%M%S).txt
スクリプトも実行可能でなければなりません:
chmod +x /path/to/script
お役に立てれば!
スクリプトは必要ありません。
問題は、.desktop
ファイルがサブシェルでコマンドを実行できないということではありません。
Exec=/bin/bash -c "echo $(date) > ~/out.txt"
.desktop
ファイルで完全に機能します。
コマンドをいじって、%
文字が問題を引き起こしているという結論に達しました。私にはそれについての説明はありませんが、これまでのところ、それを解決または回避する方法に関する情報を見つけることができませんでした。
そのため、疑わしい文字を使用して時間を取得するコマンドを探しましたwithout。
これにより、Ruby
が表示され、コマンドから現在の日付と時刻が生成されます。
$ Ruby -e 'puts Time.now.inspect'
2016-05-29 16:12:36 +0200
awk
を使用して出力を少し編集し、スペースと区切り文字を削除すると、and).desktop
ファイル内の作業コマンド。%
を使用しないためです。
Exec=/bin/bash -c "gedit ~/$(Ruby -e 'puts Time.now.inspect' | awk -F'[: -]' '{print $1$2$3$4$5$6}')"
間違いなく、コマンドは少し「チャーミング」される可能性があります。おそらく今日か明日、少し答えを編集します。