В AskUbuntu я видел несколько команд, которые выглядят довольно сложными, с большим количеством символов в них. Чтобы лучше понять, как создаются эти команды, я хотел бы знать, что означают символы.
Например:
найти ~ / -name \ *. C -exec sed -i "s / cybernetnews / cybernet / g" {} \;
или даже более сложный:
echo -e "\ e [$ {i # * =} m $ (x = $ {i% = *}; [" $ {! x} "] && echo" $ {! x} "|| echo" $ x ") \ e [m "
Я очень хорошо понимаю, что добавление параметров в виде -c
, - debug
оказывает определенное влияние на основную команду. Их значения почти во всех случаях можно найти на страницах man
, так что это не совсем то, что я ищу.
Пожалуйста, попробуйте в своем ответе определить, что конкретно делают символы, вместо того, чтобы объяснять приведенные мной примеры. Это может выглядеть так:
" means 'argument': the main command uses anything within these symbols as its source
^ is used for ...
# is used for ...
Заранее спасибо
1-й ищет файлы, оканчивающиеся на .c
, из каталога ~/
и exec
utes sed
(редактор рационализации), где sed s
ищет cybernetnews
, и изменяет его на cybernet
.
Второй ускользает от меня ... показывает пустой результат при выполнении.
Лучший ресурс, который я нашел для изучения команд терминала, - LinuxCommand , он дает подробное описание наиболее часто используемых команд.
К сожалению, вам действительно нужно перейти на страницы руководства, поскольку «символы» могут иметь различное значение в зависимости от того, какая команда их читает.
Например, в вашей первой команде значение {} и \; зависит от команды поиска (человек найти). Значение кавычек в аргументе sed зависит либо от sed, либо от bash (так как это параметр в кавычках, он потенциально может быть оболочкой). ~ / Определенно является расширением паттерна bash.
Для второй сложной команды, это в основном эхо, так что вы найдете больше информации об этом на справочной странице bash.
Чтобы ответить на ваш комментарий к этому, символы перенаправления> < | используются для передачи данных из файлов и в файлы (больше и меньше, чем знаки), а также для соединения вывода команды с входом другого (канал |). См. здесь для хорошего руководства по перенаправлению ввода / вывода, это очень мощная функция проектирования оболочки и инструментария Unix.
Трудно сказать вам полное значение символов, когда вы вставляете сложные команды.
Эхо, в частности.
См. Man echo для -e, это позволяет сбежать, поэтому позднее \ e это побег.
Большинство других символов являются строковыми манипуляциями.
Итак, представьте, что у вас есть переменная i, которая содержит строку «foo»
i=foo;echo $i
foo
Но она становится более сложной, если ваша переменная $ i также является частью строки
[ 111]Теперь вы также можете манипулировать строками, печатая только часть
В вашем случае
$ {i # * =} = print $ i, вырезать кратчайшее совпадение между * и =, но * сам по себе подстановочный знак ..
echo ${i#o}
foo
echo ${i#*o}
o
См. http://tldp.org/LDP/abs/html/string-manipulation.html
Далее мы попадаем в субоболочку (x ...)
Bash будет обрабатывать команды в вложенной оболочке и возвращать вывод команд.
x = (подстрока в i); продолжить
Теперь у нас есть тест, ["$ {! x}"]
См .: http://tldp.org/LDP/abs/html/testconstructs.html
И здесь я больше не могу вам рассказать.
В bash $ {! X} будет пустой строкой. & Amp; & Amp; == логично и || является логическим или
test {empty string} И echo пустая строка или echo x
Вам нужно будет дать больше синтаксиса, но, похоже, этот эхо-сигнал передает куда-то свой вывод.
Опять [] это тест, и мы избежали [в самом начале.
Так что я могу объяснить только многое из того, что делает эхо.
Причиной отсутствия вывода при вводе команды echo в терминале является то, что это фрагмент кода, по умолчанию ни x, ни i не определены, поэтому все выходные данные пусты.
Для вопросов о символах на определенных языках вы можете попробовать SymbolHound. Вы можете искать в Интернете символы, которых не находит Google.
См. Раздел справочного руководства Bash под названием Работа с оболочкой и Расширенное руководство по написанию сценариев Глава 3 (Специальные символы) .
Я обращаюсь к ним в любое время, когда мне нужно узнать что-то новое о сценариях оболочки в ubuntu / linux.
Я думаю, вы найдете главу 3 АБС наиболее удобной для ваших целей. Все символы видны в дальнем левом углу страницы с описанием сразу под ними.