如何在Emacs中识别Buffer的所有者/创建者



如何检查在Emacs中创建缓冲区的用户的身份,然后检查是否是同一用户访问该缓冲区?我的意思是Unix命令中的"我是谁?"。。然后检查是否是同一用户在访问该文档?-->我想在我自己的代码

中找到一个函数或方法

注意缓冲区文件之间的区别:文件是位于硬盘上的文件,例如.jpg图像文件、.mp3-aufio文件或.txt文件。其中一些文件——通常是文本文件——您可能想要使用Emacs进行编辑。为此,您可以将文件加载到Emacs中——这在Emacs语言中被称为"访问"文件。文件的内容显示在缓冲区中。但请注意,您也可以有一个根本不与文件关联的缓冲区——例如,如果您在不指定文件的情况下启动Emacs,就会显示*scratch*缓冲区。

因此,文件和缓冲区几乎是正交的概念,尽管通常通过访问文件来创建缓冲区,并通过写入文件来保存缓冲区的内容。(您可以通过键入C-xb缓冲区名称创建一个与文件无关的缓冲区,其中缓冲器名称是任何现有缓冲区都未使用的标识符。)

缓冲区只存在于正在运行的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-hv变量名

AFAIK从系统中可以看出,Emacs是一个单独的进程,由启动它的用户所有

(getenv"USER")

是的各自

echo$USER

最新更新