Как я могу запустить несколько команд unix последовательно, используя одну команду быстрого доступа?

Я столкнулся с этой проблемой вчера и нашел два метода:

1. Sudoers

Добавить правило, разрешающее доступ к команде без пароля.

# visudo

Замена имени пользователя:

...
username ALL=(ALL) NOPASSWD: /bin/cat /proc/net/wireless
...

Некоторые недостатки включают загрязнение журнала auth, особенно если проверять сигнал каждые несколько секунд, а также необходимость добавить sudo к этим скриптам.

2. Возможности

Дайте бинарные CAP_NET_ADMIN

# setcap cap_net_admin+ep /bin/cat

+ для добавления и - для удаления

  • д: Effective - Это означает, что возможность "активирована".
  • p: Разрешено - Это означает, что способность может быть использована/разрешена.
  • i: Inherited - Возможность сохраняется дочерними/подпроцессами, например, при выполнении execve().

Больше информации на man cap_from_text

Отказ от ответственности: CAP_NET_ADMIN - это форма повышенных привилегий. Позволяет наносить вред таким вещам, как конфигурация сети и брандмауэры. В моем случае он нужен только для grep, используемого в блокчейне i3. Я сам не уверен, каков риск в этом случае, и был бы признателен за комментарии.

0
18.03.2019, 13:47
1 ответ

Редактировать:Я только что понял, что first, second— это просто заполнители для ваших настоящих имен каталогов, верно? В этом случае вместо псевдонима вы можете создать функцию в своем~/.bashrc:

function pipe(){
    first=$1
    second=$2

    cd -- "$first"; pwd; ls; cd -- "$second"; ls
}

Источник вашего ~/.bashrc, а затем вы можете вызвать канал с 2 входными аргументами (имена ваших firstи secondкаталогов:

pipe first_dir_name second_dir_name   

=====

Вы можете создать псевдоним для этой серии команд.

Добавьте в ~/.bashrcследующую строку:

# 'pipe' is the name of your alias, you can choose any name you want

alias pipe="cd first; pwd; ls; cd second; ls" 

Источник вашего ~/.bashrcфайла:

. ~/.bashrc

Теперь вы можете начать выполнять pipeв своем терминале, который будет выполнять вашу серию команд. Конечно, вы должны убедиться, что вы вызываете pipeиз правильного каталога, который позволяет вам cdв каталоги firstи second.

1
28.01.2020, 03:54

Теги

Похожие вопросы