Что означают эти символы в некоторых командах терминала Linux? [закрыто]

В 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 ...

Заранее спасибо

12
задан 7 December 2011 в 01:01

6 ответов

1-й ищет файлы, оканчивающиеся на .c, из каталога ~/ и exec utes sed (редактор рационализации), где sed s ищет cybernetnews, и изменяет его на cybernet.

Второй ускользает от меня ... показывает пустой результат при выполнении.

0
ответ дан 7 December 2011 в 01:01

Лучший ресурс, который я нашел для изучения команд терминала, - LinuxCommand , он дает подробное описание наиболее часто используемых команд.

0
ответ дан 7 December 2011 в 01:01

К сожалению, вам действительно нужно перейти на страницы руководства, поскольку «символы» могут иметь различное значение в зависимости от того, какая команда их читает.

Например, в вашей первой команде значение {} и \; зависит от команды поиска (человек найти). Значение кавычек в аргументе sed зависит либо от sed, либо от bash (так как это параметр в кавычках, он потенциально может быть оболочкой). ~ / Определенно является расширением паттерна bash.

Для второй сложной команды, это в основном эхо, так что вы найдете больше информации об этом на справочной странице bash.

Чтобы ответить на ваш комментарий к этому, символы перенаправления> < | используются для передачи данных из файлов и в файлы (больше и меньше, чем знаки), а также для соединения вывода команды с входом другого (канал |). См. здесь для хорошего руководства по перенаправлению ввода / вывода, это очень мощная функция проектирования оболочки и инструментария Unix.

0
ответ дан 7 December 2011 в 01:01

Трудно сказать вам полное значение символов, когда вы вставляете сложные команды.

Эхо, в частности.

См. 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 не определены, поэтому все выходные данные пусты.

0
ответ дан 7 December 2011 в 01:01

Для вопросов о символах на определенных языках вы можете попробовать SymbolHound. Вы можете искать в Интернете символы, которых не находит Google.

0
ответ дан 7 December 2011 в 01:01

См. Раздел справочного руководства Bash под названием Работа с оболочкой и Расширенное руководство по написанию сценариев Глава 3 (Специальные символы) .

Я обращаюсь к ним в любое время, когда мне нужно узнать что-то новое о сценариях оболочки в ubuntu / linux.

Я думаю, вы найдете главу 3 АБС наиболее удобной для ваших целей. Все символы видны в дальнем левом углу страницы с описанием сразу под ними.

0
ответ дан 7 December 2011 в 01:01

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

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