如何在不指向其位置的情况下以 root 身份执行脚本?

Exe*_*n-G 0 permissions bash root

我倾向于使用sudo arp-scan --localnet --interface wlan0很多,但我发现每次都输入它很麻烦。为了加快速度,我创建了一个名为 的脚本arp-lw-scan,它应该为我执行此操作。

内容~/Scripts/arp-lw-scan

#!/bin/bash
arp-scan --localnet --interface wlan0
Run Code Online (Sandbox Code Playgroud)

我已添加~/Scripts到我的$PATHin 中~/.profile,因此该文件夹中的每个脚本都可以从任何位置执行,只需在终端中输入其名称即可。

但是,我无法arp-lw-scan以简单的方式执行,因为它需要 root 访问权限。只是arp-lw-scan在我的主目录中输入时会出现关于没有 root 权限的错误。我可以打字sudo ~/Scripts/arp-lw-scan,这很有效,但仍然需要打字。我希望能够只输入sudo arp-lw-scan来执行给定的脚本。

我怎样才能做到这一点?

ger*_*ijk 6

Bash 别名

别名是命令行中的快捷方式。常规外壳 Bash 允许您创建自己的别名。

要尝试一下(不永久保存它们),请尝试以下操作:

alias myalias='gksudo gparted'
myalias
Run Code Online (Sandbox Code Playgroud)

要永久保存它们,请创建如下文件~/.bash_aliases

alias myalias='gksudo gparted'
alias edsources='gksudo gedit /etc/apt/sources.list'
Run Code Online (Sandbox Code Playgroud)

~/.bashrc在 Ubuntu 中为用户安装的默认文件将~/.bash_aliases默认为该文件的来源。

别名允许您附加更多参数并“否决”当前命令。一个常见的用例是

alias rm='rm -i'
Run Code Online (Sandbox Code Playgroud)

要获取您尝试删除的所有内容的确认消息rm

如果您想通过运行原始命令来“转义”别名,请在其前面加上反斜杠。所以,rm举个例子,就做

\rm myfile
Run Code Online (Sandbox Code Playgroud)

在没有-i别名强制选项的情况下删除文件。

当前脚本

关于您当前的方法,您应该能够在单行脚本中使用sudo(或gksudo)预先添加命令。