Как добавить двойные кавычки к аргументам функции zsh?

Todo lo que necesita para crear una clave hash y guardarla en su PC

Simplemente escriba

ssh-keygen -t rsa -b 4096 # just press Enter till the end

luego ingrese

ssh-copy-id <user>@<server>

luego inicie sesión normalmente usando

ssh <user>@<server>

Ahora no necesitas contraseña

Note: Saving your password in a plain text is dangerous

This method is creating a hashed value of your password using RSA with public key of length 4096 which is very secure.

2
22.07.2019, 04:26
1 ответ

Думаю, здесь у вас две проблемы.

Во-первых, вы хотите, чтобы оболочка не подставляла подстановочный знак при запуске функции. Вы не можете сделать это, добавив кавычки внутри функции, так как имена файлов раскрываются как аргументы для функции до ее запуска. Чтобы предотвратить расширение имени файла, запустите функцию как noglob fdtnxg, которую можно автоматизировать с помощью псевдонима (alias fdtnxg="noglob fdtnxg").

Во-вторых, аргумент команды grep. Я предполагаю, что вы хотите, чтобы аргументы функции, начиная с четвертого, были объединены в одну строку для grep. "${@:4}", расширяет их как отдельные слова (, как "$@"для всех позиционных параметров ). "$*"вместо этого объединяет параметры в одну строку. В Zsh "${*[4,-1]}", по-видимому, работает для объединения четвертого и последующих аргументов.("${*:4}"объединит их все и начнет с четвертого символа , это отличается от того, что делает Bash. )Если это не сработает,вы всегда можете убрать первые три, а затем использовать "$*".

Так что либо

fdtnxg () {
    find "$1" -type "$2" -name "$3" -exec \
      grep -- "${*[4,-1]}" /dev/null {} +
}

или

fdtnxg () {
    local dir=$1
    local type=$2
    local name=$3
    shift 3
    find "$dir" -type "$type" -name "$name" -exec \
      grep -- "$*" /dev/null {} +
}

с

alias fdtnxg="noglob fdtnxg"

В любом случае вы не можете передавать вывод findв xargsтаким образом. Вам понадобятся расширения -print0/ -0GNU, или лучше здесь, мы используем стандартный -exec cmd {} +синтаксис поиска (, добавляя аргумент /dev/null, чтобы убедиться, что grepвсегда печатает имя файла, даже если findнаходит только один файл; с GNU grepвы также можете использовать опцию -Hдля этого ).

4
27.01.2020, 21:58

Теги

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