題 如何在bash中為“sudo vim(filename)”設置別名為sim(filename)


我通常輸入的用於編輯文件的是:

sudo vim Example.php

我想打字

sim Example.php

作為捷徑。我知道我可以在bash配置文件中設置別名,但是如何在別名中指定參數呢?在這種情況下,參數是文件名。


4
2018-02-09 17:46


起源




答案:


讓我在幾個部分回答你的問題。

在Bash中設置別名

在你的 .bashrc,寫一行如下:

alias sim="sudo vim"

在某些系統(例如Ubuntu)上,這條線應該放入你的系統中 .bash_aliases 文件,默認情況下將自動加載 .bashrc

注意,沒有必要處理命令參數;這些將被添加到最後 sudo vim 命令自動。

以超級用戶身份編輯

把我剛說過的所有內容拿出去扔掉。

使用它通常是一個更好的主意 sudoedit 代替。 sudoedit 將自動生成您可以在沒有超級用戶權限的情況下編輯的文件的臨時副本。這意味著vim將以您的身份運行(而不是以root身份運行),並且在您完成編輯文件後只需要短暫的超級用戶時刻。

確保 sudoedit 運行vim

在Debianish系統上,使用 sudo update-alternatives --config editor 選擇你喜歡的編輯器。否則,請確保 $EDITOR 在你的設置為vim .bashrc


8
2018-02-09 17:57



export EDITOR=vim 就行了 ~/.bashrc 為Arch。 - Ben


你用 sudoedit Example.php 要么 sudo -e Example.php 代替。如果那是調用Vim以外的編輯器,那麼只需添加一個 export EDITOR=vim 到您的bash啟動文件。

就別名而言, jschmier 是正確的。簡單地擴展別名,然後正常處理任何參數。如果您確實需要處理參數(而不是在擴展別名後將它們保留在原位),那麼您將需要使用一個函數。請參閱bash文檔 別名 和 功能


7
2018-02-09 17:49



你應該解釋為什麼這更好...它不會以root身份運行vi並讓用戶做很多其他的壞事。我知道這不是用戶問的問題,但對於明顯的問題,這是一個更好的答案。
export EDITOR=vim 就行了 ~/.bashrc 為Arch。 - Ben


alias sim='sudo vim $1'


1
2018-02-09 17:48



別名中不處理參數。如果你需要特別處理參數(即,不僅僅是在給別名的時候使用它們),就應該使用一個函數。 - jamessan
alias test ='cat $ 1 | grep config'對我來說很好。
@bhups: $1 為null,文件名作為命令行參數傳遞給 grep (而不是通過管道)。那麼 cat 正在等待來自終端的輸入,你必須按Ctrl-D或Ctrl-C。嘗試在第一步中對文件執行某些操作的內容,例如: grep config $1 | tr c C - Dennis Williamson


alias sim='sudo vim' 並打電話給 sim Example.php

在執行該行上的任何命令之前,Bash始終會讀取至少一個完整的輸入行。讀取命令時會擴展別名,而不是在執行時擴展別名。

別名 進入 Bash參考手冊 更多細節。


1
2018-02-09 17:50





請改用bash函數。我有一個函數用於顯示文件/文件夾的最後修改日期:

function lm()
{
    ls -l "$*" | awk '{print $6, $7, $8}'
}

試試這個:

function sim()
{
    sudo vim "$*"
}

$* in bash表示所有命令行參數,即函數名稱後面的所有內容。

然後像這樣使用它: $ sim -p Example.php Example2.php


1
2018-02-09 20:49





並沒有完全回答這個問題,但是當你開始編輯文件並且只記得忘記了sudo時,有一個很好的技巧可以使用。您可以使用 :w !sudo tee % 使用所有編輯保存文件。


0
2018-02-16 20:26