Ubuntu

Linux可以做條件判斷在Linux的某行插入內容嗎

  • November 29, 2021

Linux可以做條件判斷在Linux中的某一行插入內容嗎?

例如,我想將使用者“test”添加到 /etc/sudoers 讓它可以切換到 root:

 1 #
 2 # This file MUST be edited with the 'visudo' command as root.
 3 #
 4 # Please consider adding local content in /etc/sudoers.d/ instead of
 5 # directly modifying this file.
 6 #
 7 # See the man page for details on how to write a sudoers file.
 8 #
 9 Defaults        env_reset
10 Defaults        mail_badpass
11 Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
12 
13 # Host alias specification
14 
15 # User alias specification
16 
17 # Cmnd alias specification
18 
19 # User privilege specification
20 root    ALL=(ALL:ALL) ALL
21 
22 # Members of the admin group may gain root privileges
23 %admin ALL=(ALL) ALL
24 
25 # Allow members of group sudo to execute any command
26 %sudo   ALL=(ALL:ALL) ALL
27 
28 # See sudoers(5) for more information on "#include" directives:
29 
30 #includedir /etc/sudoers.d

我希望我的命令找到第 20 行(如果 root ALL=(ALL:ALL) ALL )然後在第 21 行添加以下內容

test    ALL=(ALL:ALL) ALL

Linux 命令可以做到這一點,還是我只能通過 Perl 或 Python 等編碼來做到這一點?

我對 Linux 很陌生,感謝任何幫助!

添加行的位置無關緊要, sudo 不關心順序。

只需將其附加到末尾:

echo 'test    ALL=(ALL:ALL) ALL' | sudo tee -a /etc/sudoers

或者,更好的是,使用包含目錄:

echo 'test    ALL=(ALL:ALL) ALL' | sudo tee /etc/sudoers.d/test

這樣,當軟體包更新期間發生更改時,您不必手動更新 sudoers 文件。

引用自:https://serverfault.com/questions/1084818