Emacs でバッファを作成した人の身元を確認し、後で同じユーザーがそのバッファにアクセスしているかどうかを確認するにはどうすればよいですか? 「私は誰?」のような意味です。Unixコマンドで..次に、同じユーザーがそのドキュメントにアクセスしているかどうかを確認しますか? --> 自分のコードでこれを行う関数または方法が必要です
2 に答える
バッファとファイルの違いに注意してください。ファイルとは、.jpg 画像ファイル、.mp3 aufio ファイル、.txt ファイルなど、ハードディスク上にあるものです。これらのファイル (通常はテキスト ファイル) の一部は、Emacs で編集する必要がある場合があります。そのために、ファイルを Emacs にロードできます。これは、Emacs 用語でファイルを「訪問する」と呼ばれます。ファイルの内容がバッファに表示されます。ただし、ファイルにまったく関連付けられていないバッファーもあることに注意してください。たとえば、*scratch*
ファイルを指定せずに Emacs を起動した場合に表示されるバッファーです。
このように、ファイルとバッファーはほぼ直交する概念ですが、多くの場合、ファイルを訪問してバッファーを作成し、ファイルに書き込むことでバッファーの内容を保存します。( buffer-nameは、既存のバッファーのいずれにも使用されていない識別子であると入力することで、ファイルに関連付けられていないバッファーを作成できます。)C-x b buffer-name
バッファーは、実行中の Emacs 内にのみ存在します。これが、これまでに得たコメントと回答が、探しているものではない可能性がある理由です: バッファの作成者/所有者の概念は紛らわしいです。なぜなら、それは明らかにその特定の場所でキーボードに座っている人だからです.一瞬。
ファイルの所有者/作成者について話すことは、はるかに理にかなっています。マルチアカウント設定では、複数のユーザーが同じディスクに書き込むことができるため、同じファイルにアクセスできる可能性があります。誰がアクセス権を持っているか、特に誰がファイルを所有しているか、最後にいつ変更されたかを知ることは興味深いことです。Elispでは、関数を使用できます
(file-attributes FILENAME &optional ID-FORMAT)
ファイルに関連付けられた属性のリストを取得します。現在のバッファがファイルを訪問している場合は、その関数を関数と組み合わせることができます
(buffer-file-name &optional BUFFER)
バッファがアクセスしているファイルを返します。ファイルを訪問していないバッファの場合、この関数は を返しますnil
。
ただし、(file-attributes ...)
ファイルに最後にアクセスしたのは誰か、ファイルを最後に変更したのは誰かなど、関心のある一部の情報は では入手できないことに注意してください。これは Emacs のせいではありませんが、オペレーティング システムがそのような情報を保存しないという事実から来ています。
また、ファイルの現在の所有者は、必要な権限を持つユーザーが作成後にファイルを作成できるため、ファイルを作成した人であるとは限らないことに注意してくださいchown
。
の意味で現在のユーザーに関する情報を受け取るにはwhoami
、変数をチェックアウトできます。
user-login-name
user-real-login-name
user-full-name
と入力します。C-h v variable-name
システムから見たAFAIK、Emacsはそれを開始したユーザーが所有する単一のプロセスです
(getenv "ユーザー")
はそれぞれ
$USER をエコー