Создание нескольких псевдонимов оболочки сразу

Следующая команда может распечатывать, когда файл соответствует критериям поиска:

grep -Zril 'String1' | xargs -0 grep -il 'String2'

Вот пример:

~/tmp$ ls
Dir1  Dir2  File1  File2

cat File1
AccessToken is not here
Registrationrequest it is here

cat File2
iAccess
ByteMe Registrationrequest

Я скопировал как File1, так и [ f7] в Dir1 и Dir2 для тестирования:

~/tmp$ grep -Zril 'AccessToken' | xargs -0 grep -il 'Registrationrequest'
File1
Dir2/File1
Dir1/File1

Затем, если вы хотите увидеть, что находится в файлах, добавьте следующее в конец поиска:

[ f4]

Пример:

~/tmp$ grep -Zril 'AccessToken' | xargs -0 grep -il 'Registrationrequest' | xargs grep -E "AccessToken|Registrationrequest"
File1:AccessToken is not here
File1:Registrationrequest it is here
Dir2/File1:AccessToken is not here
Dir2/File1:Registrationrequest it is here
Dir1/File1:AccessToken is not here
Dir1/File1:Registrationrequest it is here

Надеюсь, это поможет!

8
задан 16 May 2018 в 10:57

6 ответов

Справка для alias указывает, что он может сразу назначить несколько псевдонимов:

alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

Таким образом, вы можете использовать расширение скобки для генерации пар name=value:

alias {at,cart,cst}='/bin/cat'

Итак:

$ alias {at,cart,cst}='/bin/cat'
$ type at cart cst
at is aliased to `/bin/cat'
cart is aliased to `/bin/cat'
cst is aliased to `/bin/cat'

Итак, посмотрите на zsh, у которого есть встроенная коррекция опечатки (что не помогло бы для at, но это помогло бы другим):

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd
Если вы нажмете y, когда оболочка спросит вас, хотите ли вы исправить слово, оно будет исправлено. Если вы нажмете n, он останется в покое. Нажатие a отменяет команду, и при нажатии e снова выводится строка для редактирования, если вы согласитесь, что слово написано неправильно, но вам не нравится исправление.
15
ответ дан 22 May 2018 в 10:40

Справка для alias указывает, что он может сразу назначить несколько псевдонимов:

alias: alias [-p] [name[=value] ... ] Define or display aliases. Without arguments, `alias' prints the list of aliases in the reusable form `alias NAME=VALUE' on standard output. Otherwise, an alias is defined for each NAME whose VALUE is given. A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded.

Таким образом, вы можете использовать расширение скобки для генерации пар name=value:

alias {at,cart,cst}='/bin/cat'

Итак:

$ alias {at,cart,cst}='/bin/cat' $ type at cart cst at is aliased to `/bin/cat' cart is aliased to `/bin/cat' cst is aliased to `/bin/cat'

Итак, посмотрите на zsh, у которого есть встроенная коррекция опечатки (что не помогло бы для at, но это помогло бы другим):

% setopt correct % sl zsh: correct `sl' to `ls' [nyae]? y % setopt correctall % ls x.v11r4 zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n /usr/princton/src/x.v11r4 not found % ls /etc/paswd zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y /etc/passwd Если вы нажмете y, когда оболочка спросит вас, хотите ли вы исправить слово, оно будет исправлено. Если вы нажмете n, он останется в покое. Нажатие a отменяет команду, и при нажатии e снова выводится строка для редактирования, если вы согласитесь, что слово написано неправильно, но вам не нравится исправление.
17
ответ дан 17 July 2018 в 14:10

Справка для alias указывает, что он может сразу назначить несколько псевдонимов:

alias: alias [-p] [name[=value] ... ] Define or display aliases. Without arguments, `alias' prints the list of aliases in the reusable form `alias NAME=VALUE' on standard output. Otherwise, an alias is defined for each NAME whose VALUE is given. A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded.

Таким образом, вы можете использовать расширение скобки для генерации пар name=value:

alias {at,cart,cst}='/bin/cat'

Итак:

$ alias {at,cart,cst}='/bin/cat' $ type at cart cst at is aliased to `/bin/cat' cart is aliased to `/bin/cat' cst is aliased to `/bin/cat'

Итак, посмотрите на zsh, у которого есть встроенная коррекция опечатки (что не помогло бы для at, но это помогло бы другим):

% setopt correct % sl zsh: correct `sl' to `ls' [nyae]? y % setopt correctall % ls x.v11r4 zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n /usr/princton/src/x.v11r4 not found % ls /etc/paswd zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y /etc/passwd Если вы нажмете y, когда оболочка спросит вас, хотите ли вы исправить слово, оно будет исправлено. Если вы нажмете n, он останется в покое. Нажатие a отменяет команду, и при нажатии e снова выводится строка для редактирования, если вы согласитесь, что слово написано неправильно, но вам не нравится исправление.
17
ответ дан 20 July 2018 в 14:14

Я не думаю, что вы можете назначить сразу несколько псевдонимов. Но вы можете прокрутить список следующим образом:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

Убедитесь, что псевдонимы еще не используются другими программами (например, at в вашем примере).

7
ответ дан 22 May 2018 в 10:40
  • 1
    Спасибо за ответ, он работает хорошо. У меня есть одна из моих Linux-машин с tsch по умолчанию. Я пробовал это: foreach x (cst cart); псевдоним $ x = '/ bin / cat'; end. – Josef Klimuk 16 May 2018 в 12:49
  • 2
    @JosefKlimuk: Похоже, что это стоило бы собственного ответа. :-) – David Foerster 16 May 2018 в 13:22
  • 3
    @David Foerster, Должен ли я задавать это как самостоятельный вопрос? – Josef Klimuk 16 May 2018 в 13:37
  • 4
    @JosefKlimuk: Нет. Я имею в виду, что вы должны написать правильный ответ на этот вопрос на основе вашего предыдущего комментария. – David Foerster 16 May 2018 в 19:09

Я не думаю, что вы можете назначить сразу несколько псевдонимов. Но вы можете прокрутить список следующим образом:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

Убедитесь, что псевдонимы еще не используются другими программами (например, at в вашем примере).

7
ответ дан 17 July 2018 в 14:10

Я не думаю, что вы можете назначить сразу несколько псевдонимов. Но вы можете прокрутить список следующим образом:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

Убедитесь, что псевдонимы еще не используются другими программами (например, at в вашем примере).

7
ответ дан 20 July 2018 в 14:14
  • 1
    Спасибо за ответ, он работает хорошо. У меня есть одна из моих Linux-машин с tsch по умолчанию. Я пробовал это: foreach x (cst cart); псевдоним $ x = '/ bin / cat'; end. – Josef Klimuk 16 May 2018 в 12:49
  • 2
    @JosefKlimuk: Похоже, что это стоило бы собственного ответа. :-) – David Foerster 16 May 2018 в 13:22
  • 3
    @David Foerster, Должен ли я задавать это как самостоятельный вопрос? – Josef Klimuk 16 May 2018 в 13:37
  • 4
    @JosefKlimuk: Нет. Я имею в виду, что вы должны написать правильный ответ на этот вопрос на основе вашего предыдущего комментария. – David Foerster 16 May 2018 в 19:09

Другие вопросы по тегам:

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