2016-09-29 9 views
0

仕事中に必要なテキストファイル(ジャーナルなど)を開くスクリプトを作成しました。スクリプトは次のようになります。bashスクリプトでemacsを開いて閉じるtxtファイル

#! /bin/bash 

DOCPATH=$HOME/Documents 
NUMDOCPATH=$DOCPATH/Numerics 

emacs $DOCPATH/UTA_WorkProtocol.txt & 

emacs $NUMDOCPATH/NumProtocol.txt & 

emacs $NUMDOCPATH/CITCOM/Protocol.txt & 

正常に動作し、ファイルが正常に動作しています。しかし、最後にこれらのファイルを保存して閉じるための別のスクリプトを作成したいと思います。しかし、私はbashスクリプトを使用してバックグラウンドで実行中のemacsファイルを保存したり閉じるためのコマンドを見つけることができませんでした。私は "開く"スクリプトにも新しいファイルを追加しているので、各txtファイルでC-X C-sを実行する代わりに、このようなスクリプトを実行する方が便利です。

これ以上経験豊富な人が私に手伝ってもらえますか?ありがとう!

+0

なぜですか?バックグラウンドで実行中のemacsウィンドウで何をやっていますか? –

+0

私は基本的にプロトコルファイルを使って、私がやったことを書き留めました。したがって、最初はファイルを開始し、すべてを書き留めておき、重要なのは1つのコマンドで完了したらすべてを自動的に閉じることです。 –

答えて

2

これはちょっとしたハックですが、bashスクリプトはこのタイプのUIスクリプトにはあまり適していません。

バックグラウンドのあるすべてのインスタンスを閉じる準備ができたら、フォアグラウンドにあるインスタンスを閉じます。これにより、最後のemacsが終了し、スクリプトはkillコマンドに続行され、残りのバックグラウンドジョブは強制終了されます。

最後のemacsは、スクリプトが完了しないようにブロックするコマンドであれば、簡単に殺すことができます。

+0

さて、これは大丈夫です。しかし、開いているものを保存していないと、変更はすべて失われます。 –

+0

実際に 'emacs'(私ではない)を知っている人は、適切なコマンドを' emacs'の実行中のインスタンスに送信する 'kill'コマンドを置き換えて、適切に保存してシャットダウンする方法を説明してください。 – chepner

2

bashを使用する必要がありますか?これは、EmacsのLispで簡単です。

(defun open-files() 
    (interactive) 
    (find-file "UTA_WorkProtocol.txt") 
    (find-file "NumProtocol.txt") 
    (find-file "CITCOM/Protocol.txt")) 

(defun close-files() 
    (interactive) 
    (save-buffers-kill-emacs) 

その後のEmacsの単一のインスタンスを開き、M-xでそれらのコマンドを実行します。

関連する問題