/etc/xdg/lxsession/LXDE/autostart
実行する前にいくつかのパラメータを変更したいと思います。 grepコマンドからパラメータを取得しています。ファイルに追加したいのですが、autostart
方法がわかりません。
現在私が持っているのはgrep "stuff" /file/one
1234出力です。
autostart
1234を次のファイルに入れたいです。
....
@program 1234
....
答え1
いつものように、これを行う方法はおそらく100万ものものです。あなたの質問を私が読む方法は、あなたが問題に間違った方法でアプローチしているということです。しかし、最初にすべきことがあります。
ユーザー名とパスワードを正しく入力すると、すべてのスクリプトが/etc/X11/Xsession.d
アルファベット順に取得されます(実行されていない、これは非常に重要な違いです!)。したがって、ログイン後にデスクトップ環境が起動する前にいくつかのロジックが発生するようにするには、ここにスクリプトを入力できます。
このようなスクリプトには次のものを含めることができます。
for item in $(grep "stuff" /file/one)
do
echo "@program ${item}" >> /etc/xdg/lxsession/LXDE/autostart
done
これにより、ファイルに追加したい行が追加されます。 '>>' を使用すると、シェルはファイルを置き換えるのではなく、ファイルの末尾に行を追加します。これがあなたの質問に対する答えです。
grep
今問題は次のとおりです。このスクリプトを使用すると、コンピュータにログインするたびに結果が自動起動ファイルに追加されます。したがって、初めてプログラムが一度実行されます。次は2回ログインし、次は3回ログインしてください。自動起動プログラムのリストは、grep が自動起動ファイルに追加される結果を生成する限り、増え続けます。そのため、最初に問題にアプローチする方法が間違っていると言いました。
さらに、それは単なるグローバルなものではありません/etc/xdg/lxsession/LXDE/autostart
。~/.config/lxsession/LXDE/autostart
個々のユーザーごとにファイルを作成できます。コンピュータで作業している唯一のユーザーであっても、グローバルファイルでは~
なくホームディレクトリ(ホームディレクトリに展開)のファイルを編集する必要があります。
最後の提案として、プログラムを実行するには、~/.config/lxsession/LXDE/autostart
上記のforループを実行するforシェルスクリプトにエントリを追加し、一部のファイルに行を追加するのではなく、実際にコマンドを実行します。&
行末に . を使用してコマンドを実行すると、これらのプログラムはバックグラウンドで実行され、スクリプトはブロックされません。