Как заставить псевдоним bash работать с включением команды, т.е. $()(знак доллара и скобки)

Проблема в том, что \wозначает «символы слова» ([a-zA-Z0-9_]), а .никогда не является частью слова:

 $ echo. | grep '\w'
 $ 

Вы можете просто искать не -пробел:

$ echo ABC.xyz | grep '\S*ABC\S*'
ABC.xyz

Обратите внимание, что \Sне может быть понято всеми. Если это не работает в вашей реализации, используйте вместо этого grep -E.

1
02.10.2020, 13:16
2 ответа

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

alias mount-open='sudo mount $(sudo blkid | gawk '\''/2tb-open/ { print substr($1, 0, 9) }'\'') 2tb-open'
2
18.03.2021, 23:01

С помощью функции или скрипта было бы намного проще:

mount-open() {
  sudo mount "$(
      sudo blkid |
        gawk '/2tb-open/ { print substr($1, 0, 9) }'
    )" 2tb-open
}

Хотя если вы хотите установить устройство с меткой 2tb-open,

mount-open() { sudo mount LABEL=2tb-open 2tb-open; }

должно быть достаточно.

3
18.03.2021, 23:01

Теги

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