Списки управления доступом и разрешения для каталога

Вы можете изменить бит цитирования, чтобы не разрешать использование обратных кавычек до тех пор, пока не будет использован псевдоним.

alias ncstop 'nc stop `nc list | awk '\''/Running/{print $1}'\''`'

Это работает, потому что при использовании символа ' для цитирования используются специальные символы, такие как | , $ и обратная кавычка не интерпретируются оболочкой. Это позволяет этим специальным символам попасть в определение псевдонима. Но в процессе определения псевдонима оболочка удаляет этот внешний слой '. Что на самом деле заканчивается в определении псевдонима, должно быть:

nc stop `nc list | awk '/Running/{print $1}'`

Конструкция '\' ' часто требует небольшого пояснения. Но вкратце это три апострофа. Первая завершает предыдущую строку в кавычках, следующая (которая экранирована, чтобы оболочка не интерпретировала ее) проходит, а третья начинает другую строку в кавычках. Таким образом, конструкция '\' ' позволяет использовать апостроф (например: ' или одинарные кавычки ) внутри строки, заключенной в одинарные кавычки.

Получение всех кавычек и экранирований прямо в строке, которая должна пройти через несколько уровней интерпретации, очень быстро становится беспорядочным и сложным. Был комментарий к вопросу, который рекомендовал (для bash ) вместо этого изучить реализацию псевдонимов как функций.Я почти уверен, что то же самое можно посоветовать для tcsh .

1
16.09.2016, 10:17
0 ответов

Теги

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