В AskUbuntu я видел несколько команд, которые выглядят довольно сложными, с множеством символов. Чтобы лучше понять, как создаются эти команды, я хотел бы знать, что обозначают символы.
Например:
find ~/ -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 ...
заранее спасибо
command-line
Exeleration-G
источник
источник
-c -D
может что-то значить в команде 1 и совершенно другая вещь в команде 2.Ответы:
См. Раздел Справочного руководства по Bash под названием Shell-Operation и Расширенное руководство по написанию сценариев Bash, Глава 3 (Специальные символы) .
Я обращаюсь к ним в любое время, когда мне нужно узнать что-то новое о сценариях оболочки в ubuntu / linux.
Я думаю, вы найдете главу АБС 3 самой легкой для навигации в ваших целях. Все символы видны в дальнем левом углу страницы с описанием сразу под ними.
источник
К сожалению, вам нужно перейти на страницы справочника, так как «символы» могут иметь разные значения в зависимости от того, какая команда их читает.
Например, в вашей первой команде значение {} и \; зависит от команды поиска (человек найти). Значение кавычек в аргументе sed зависит либо от sed, либо от bash (так как это параметр в кавычках, он потенциально может быть оболочкой). ~ / - определенно вещь расширения bash.
Для второй сложной команды, это в основном эхо, так что вы найдете большинство информации об этом на справочной странице bash.
Чтобы ответить на ваш комментарий к этому, символы перенаправления> <| используются для передачи данных из файлов и в файлы (больше и меньше, чем знаки), а также для соединения вывода команды с входом другого (труба |). Смотрите здесь для хорошего руководства по перенаправлению ввода / вывода, это очень мощная конструктивная особенность оболочки и набора инструментов Unix.
источник
>
? Это признак, который я часто вижу, я думал, что это означает «копировать» или что-то в этом роде. Это тоже зависит от команды?1-й из них ищет файлы, заканчивающиеся
.c
в директории~/
иexec
utessed
(s
потоковом редакторе), где sed находитcybernetnews
и изменяет ихcybernet
.Второй ускользает от меня ... показывает пустой результат при выполнении.
источник
Лучший ресурс, который я нашел для изучения команд терминала, - это LinuxCommand , он дает подробное описание наиболее часто используемых команд.
источник
Трудно сказать вам полное значение символов, когда вы вставляете сложные команды.
Эхо в частности.
Посмотрите man echo для -e, это позволяет убежать, поэтому позднее \ e это побег.
Большинство других символов являются строковыми манипуляциями.
Итак, представьте, что у вас есть переменная, которая содержит строку "foo"
Но это становится более сложным, если ваша переменная, $ i, также является частью строки
Теперь вы также можете манипулировать строками, печатать только часть
В твоем случае
$ {i # * =} = print $ i, вырезать кратчайшее совпадение между * и =, но * само по себе является подстановочным знаком ..
См. Http://tldp.org/LDP/abs/html/string-manipulation.html.
Далее мы попадаем в субоболочку (х ...)
Bash будет обрабатывать команды в вложенной оболочке и возвращать вывод команд.
x = (подстрока в i); Продолжить
Теперь у нас есть тест, ["$ {! X}"]
Смотрите: http://tldp.org/LDP/abs/html/testconstructs.html
И здесь я больше не могу вам этого сказать.
В bash $ {! X} будет пустой строкой. && == логично и || логично или
test {empty string} И отображать пустую строку или отображать x
Вам нужно было бы дать больше синтаксиса, но кажется, что это эхо передает куда-то свой вывод.
Снова [] это тест, и мы избежали [в самом начале.
Так что я могу объяснить только многое из того, что делает эхо.
Причина отсутствия вывода при вводе команды echo в терминале - это фрагмент кода, по умолчанию ни x, ни i не определены, поэтому все выходные данные пусты.
источник
Для вопросов о символах на определенных языках, вы можете попробовать SymbolHound. Вы можете искать в Интернете символы, которых не находит Google.
источник