iT邦幫忙

DAY 15
2

EMACS 新思維系列 第 15

[EMACS新思維 第十八天] 編輯本機需 root 權限文件

編輯需 root 權限文件,以及其他開啓 root 權限文件的方法。
前言:通常初使用 emacs 的人都會發現,拿 emacs 來編輯系統檔案,似乎相對麻煩:使用 sudo 的時候,是以 root 的身份執行 emacs,套用的設定也非自己所撰寫的init.el。不過其實,有很多方法可以讓emacs遙身一變成為最適合編輯系統檔案的文字處理器。

方法一:重開buffer 此法即是透過 tramp 來開

(defun sudo-edit (&optional arg)
  (interactive "P")
  (if (or arg (not buffer-file-name))
      (find-file (concat "/sudo:root@localhost:"
                         (ido-read-file-name "Find file(as root): ")))
    (find-alternate-file (concat "/sudo:root@localhost:"
                                 buffer-file-name))))

這段代碼的目的是:假如你正在看某個檔案,就以 root 的身份連接到這個檔案。若不是在看一個檔案,則問你要以 root 身份開啟什麼檔案。另外,雖然 ido 是一個強大方便的自動提示,不過可能有人討厭他那種自以為是的檔名記憶而沒有使用,只要把 elisp 函數中 ido-這個 prefix 去掉即可。

方法二:讓 emacs 判斷是否擁有編輯權限

(defadvice ido-find-file
  (after find-file-sudo activate)
  "Find file as root if necessary."
  (unless (and buffer-file-name
               (file-writable-p buffer-file-name))
    (find-alternate-file (concat "/sudo:root@localhost:"
                                 buffer-file-name))))

這段代碼的目的是,讓電腦自動判斷是否擁有檔案編輯的權限,若無,則以 root 身份開啟之,若有,則以user的身份打開 (emacs 可以判斷檔案是 read only 還是 writable 的) ido-find-file 的改造!

方法三:alias+emacsclient

在.bashrc/.zshrc添加如下命令
alias sudeemacs="SUDO_EDITOR=\"emacsclient -t -a emacs\" sudoedit"
即可以emacs編輯需要root權限的檔案了


上一篇
[EMACS新思維 第十七天] Tramp-mode:編輯遠端文件
下一篇
[EMACS新思維 第十九天] 檔案管理員 Dired (上:基本使用)
系列文
EMACS 新思維27

尚未有邦友留言

立即登入留言