Linux восклицательный знак перед именем файла
BIOS - это разные вещи для установки более старой системы, такой как Win7.
тетрадь? Более новые ноутбуки, а также материнские платы настольных ПК имеют UEFI Bios, поэтому установку необходимо прервать в пункте «Запуск Windows». И из всего вашего описания я стал Aptio Setup Utility 2016.
При установке, но доступно для Win7? Учетная запись пользователя, но я знаю, при выборе учетных записей. Это не становится видимым. Мне срочно нужна помощь, так как я с Bzw.
Ноутбук - это Medion (он не принадлежит учетной записи администратора, также в Linux.) Я попробовал его с BIOS и с оригинальным Win7 Prof DVD, но это тоже не сработало. Minux-Mint будет удален. Компакт-диск Win7 - это OEM Версия, но у меня уже есть ее производитель?
Белый тип? Это частично сработало, но установка Win7 просто застряла. любой совет? Для меня, должен установить для кого-то только Win7 на нем).
Это или расставлено или разделено, потому что у меня не было прав администратора. Это всегда будет где я могу найти учетную запись администратора. Я считаю, что настройки BIOS
На ноутбуке Linux Mint Win7 Prof. нет учетной записи администратора и пользователя.
Будьте установлены и / или все еще не совсем правы. Все водители говорят, что вы не знаете, что делаете. В Монетном дворе Linux я могу . Подробнее .
Производитель ПК CompuLab представляет MintBox Mini Pro и Airtop Zur News: Linux: два новых безвоздушных компьютера CompuLab с Linux Mint
Это всего лишь реселлер безмолвного проститутки, для которого тогда необходимо заплатить высокую надбавку. Если MintBox Mini Pro является обновлением Mint Mini с лучшим оборудованием, Airtop - это новая разработка от 2016, которая обещает работу рабочей станции в небольшом доме. два новых мини-ПК, которые поставляются с Linux Mint.
Активна только система, из которой вы загружаетесь. Мой вопрос:
Если я запустил Linux из палки и запустил Linux на виртуальной машине под Linux. Что еще было бы, если вы запустите win7 лодки, каким образом он все еще подключен к Windows? то квази с Linux и windows отключено за этот период?
Когда я устанавливаю программы на Linux или сохраняю файлы, окна работают в фоновом режиме или
Части его или запустите ПК, тогда win7 не будет работать в фоновом режиме. Как computerleie, я надеюсь, что вы уйдете, это не имеет ничего общего с операционной системой
Поэтому, если вы запустите Linux, можете дать мне ответ!
Чтобы увидеть данные или их часть
если я запустил компьютер с окнами? Где вы храните свои данные, остается под Linux или Windows, вы
Все дальнейшие базовые знания истории Linux и фактическая цель операционной системы объясняют. Это должно обеспечить информацию и инструкции для начала и которые будут запущены во время запуска. Это вполне разумно в том смысле, что соответствующие дистрибутивы в основном представляют собой интерфейс пользователя, а не оболочку, чем оконную систему. Графическая система Linux основана на так называемом Xserver или X11 и предназначена для упрощения программирования и разработки приложений.
Glibc: библиотека GNU C должна сделать ядро Linux полной операционной системой. Shell: оболочка в системах * nix. Наиболее распространенное использование, особенно в области сервера, находит Windows как печально известный bluescreen, известный как паника ядра в Linux.
Самые известные программы GNU пахнут этим более или менее единственным эссе для базовой Linux-системы с Shell. Наконец, он также должен быть интересен тем людям, которые * nix должны представлять только местозаполнитель для Unix и Linux вместе. Поскольку эти две фразы на самом деле идентичны, термин во время работы становится связью между программным и аппаратным обеспечением. Все другие известные операционные системы обычно не являются рабочим столом, а оболочкой.
довольно хорошо с компьютером Interna знают и хотели бы расширить свои знания. Вы можете утверждать, что все современные операционные системы, я думаю, все имеют . Подробнее .
Добрый день! Вопрос про ссылки, которые можно создавать в Linux (символические, жесткие и другие). Насколько я понял, при создании симв.ссылки создается файл вида @1.txt (пример). Необходимо определить откуда и на что (места или файлы) в системе созданы ссылки. При просмотре директорий, откуда и куда были созданы ссылки никаких файлов такого типа @file_name.txt нет. При просмотре через Midnight Commander заходим в директорию и видим там папку /u01 и
data (скриншот). Это ссылка или нет и если да, то какая она? Как определить?
Необходимо определить откуда и на что (места или файлы) в системе созданы ссылки
Это ссылка или нет и если да, то какая она?
) перед именем директории означает, что это ссылка. Внизу панели показывается, куда она указывает.
В терминале узнать, куда указывает ссылка, можно с помощью readlink (man 1 readlink). В C-программе тоже readlink (man 2 readlink и man 2 readlinkat).
Найти все ссылки можно так: find /usr -type l
Это ссылка или нет и если да, то какая она? Как определить?
Второй столбец вывода в листинге 6 содержит счетчик ссылок, показывающий количество жестких ссылок на файл. Таким образом, мы видим, что файлы file1, file3 и file3sub имеют по нескольку жестких ссылок, указывающих на представляемые ими объекты; тем не менее, этой информации еще недостаточно, чтобы понять, что все они представляют собой один и тот же объект. Если удалить файл, счетчик ссылок которого имеет значение больше 1, то счетчик ссылок в индексном дескрипторе понизится на 1, но файл не будет удален, пока счетчик не достигнет 0. Значения счетчиков всех других жестких ссылок на этот файл понизятся на 1.
при создании симв.ссылки создается файл вида @1.txt
symlink - по факту - текстовый файл в котором путь и имя файла/каталога на которые она ссылается. Чтобы не поутать с текстовым файлом, на уровне файловой системы говорится что это ссылка. Так что никаких норм/требований к имени файла нет.
hardlink - это два файла, которые указывают на одну область на диске.
Необходимо определить откуда и на что (места или файлы) в системе созданы ссылки
Только однострочником с помощью find: для симлинков искать на что они ссылаются, за хардлинки - номер inode .
P. S. А зачем?
При просмотре через Midnight Commander
Если симлинк - перед именем тильда (или восклицательный знак, если симлинк битый). Если хардлинк - никак; только ls -l может показать сколько еще есть хардлинков на этот файл, но где они - только find (by design невозможно).
Перевод статьи «10 Amazing and Mysterious Uses of (!) Symbol or Operator in Linux Commands».
Восклицательный знак в Linux можно использовать разными способами. Я расскажу вам о некоторых из них.
Примечание: все команды в этой статье проверялись только в оболочке bash.
1. Запуск команды из истории по номеру
Возможно, вы не знаете, что можете запускать команды из истории (т. е., из списка ранее запускавшихся команд). Для начала давайте найдем номер нужной нам команды, выполнив команду history.
Допустим, нужная нам команда имеет в этом списке номер 1551. Чтобы ее повторить без всяких модификаций, предваряем номер восклицательным знаком и запускаем.
Это особенно полезно для длинных команд.
2. Запуск предпоследней команды или какой угодно с конца
Запускать команды, которые вы уже выполняли ранее, можно и по их порядковому номеру с конца списка. Последняя выполненная вами команда это -1, предпоследняя – -2, седьмая с конца – -7 и т. д.
Сначала запустите команду history, чтобы просмотреть список последних команд и убедиться, что там нет ничего опасного (например, команд удаления файлов). Затем обратите внимание, какие команды идут под номерами 6, 8, 10 с конца (для примера). Запустите эти команды, предварив их номер восклицательным знаком.
3. Передача аргументов последней запущенной команды новой команде — без необходимости перепечатывать
Например, мне нужен список содержимого директории /home/$USER/Binary/firefox, так что я быстренько выполнил команду ls.
Но после этого я понял, что мне нужно было выполнить ls -l, чтобы увидеть, какие файлы являются исполняемыми. Что ж теперь, всю строчку перепечатывать? Нет нужды. Следует просто перенести последний аргумент выполненной команды в новую команду.
Здесь !$ переносит в новую команду аргументы, которые вы передавали в последнюю выполненную.
4. Управление двумя и более аргументами
Скажем, я создал на рабочем столе текстовый файл 1.txt
и затем скопировал его в /home/avi/Downloads, используя полный путь как исходного файла, так и папки назначения.
Таким образом, я передал команде cp два аргумента. Первый – /home/avi/Desktop/1.txt, а второй – /home/avi/Downloads. Давайте обратимся к ним по отдельности, просто выполнив echo [arguments], чтобы вывести каждый отдельно.
Обратите внимание, что к первому аргументу мы обращаемся сочетанием «!^», а к последующим — выполняя «![Имя_Команды]:[Номер_аргумента]».
В нашем примере с командой «cp» нам нужно было вывести второй аргумент, отсюда «!cp:2». Если какая-то ваша команда «xyz» была запущена, скажем, с пятью аргументами, а вам нужен 4-й, вы можете вызвать его при помощи «!xyz:4» и использовать, где вам нужно. Чтобы получить все аргументы, нужно ввести «!*».
5. Выполнение последней команды на основе ключевых слов
Мы можем выполнять последние команды, обращаясь к ним не только по номеру, но и по имени. Т.е., выполнив «!ls», можно повторить последнюю команду ls. А если вы вводили несколько команд ls, но, например, с разными флагами, можно вызвать нужную команду более точно. Опции в этом случае работают в качестве ключевых слов.
Здесь мы использовали одну и ту же команду (ls) с разными опциями и аргументами. Вывод всех команд мы перенаправили в /dev/null просто потому, что он нам в данном примере не нужен, а без этого просто загромождал бы окно терминала.
Теперь попробуйте вызвать эти команды повторно, используя ключевые слова.
6. Мощь оператора !!
При помощи двух восклицательных знаков можно просто запустить последнюю выполненную команду, а можно запустить и с дополнениями. Давайте рассмотрим пример.
Вчера я запускал однострочный скрипт для вывода моего приватного IP. Выглядел он так:
Но это простое решение не всегда срабатывает. Вот представьте, что я запустил другой скрипт:
Чтобы повторить команду, мне придется сначала залогиниться в root, а затем набрать команду заново! И клавиша «стрелка вверх» здесь меня не спасет. Что делать? Нужно вызвать последнюю команду пользователя при помощи двух восклицательных знаков.
Здесь su меняет пользователя на root, -с служит для передачи команды, а !! вызывает последнюю команду пользователя. Нужно только пароль рута ввести.
Два восклицательных знака я использую, главным образом, в следующих сценариях:
Хм, не вышло. А вот так выйдет:
В. Когда, например, запускаю сервер
Упс! Приходится исправлять дело:
7. Запуск команды, затрагивающей все файлы, кроме ![Имя_Файла]
Восклицательный знак может применяться как логический оператор отрицания для запуска команд, затрагивающих все файлы, кроме тех, имена которых предваряются этим знаком. Примеры:
А. Удалить все файлы из директории, кроме файла 2.txt.
В. Удалить все файлы из директории, кроме файлов определенного типа.
8. Проверка существования директории
А. С выводом результатов проверки
Здесь мы будем использовать «! -d» для проверки существования директории, а затем логический оператор AND (&&) для вывода информации о том, что такой директории нет, и логический оператор OR (||) для вывода информации о том, что такая директория есть. Проверять будем директорию /home/avi/Tecmint.
Суть этой логики в том, что если вывод [ ! -d /home/avi/Tecmint ] это 0, будет выполнено то, что идет после оператора AND, в противном случае команда перейдет к оператору OR.
В. С последующим запуском команды
То же, что в предыдущем пункте, только с выполнением команды.
В качестве следующей команды может быть, например, создание такой директории.
консоль отвечает с bash: . event not found .
Что здесь происходит? и какой будет правильный синтаксис, чтобы избежать восклицательного знака?
Восклицательный знак является частью истории расширения в bash. Чтобы использовать его, он должен быть заключен в одинарные кавычки (например:) 'http://example.org/!132' или непосредственно экранирован с помощью обратной косой черты ( \ ) перед символом (например:) "http://example.org/\!132" .
Обратите внимание, что в двойных кавычках, обратная косая черта перед восклицанием предотвращает расширение истории, НО обратная косая черта в этом случае не удаляется. Так что лучше использовать одинарные кавычки, чтобы вы не передавали буквальную обратную косую черту curl как часть URL.
"http://example.org/\!132" фактически расширяется без интерпретации обратной косой черты (я полагаю, что это связано с требованиями соблюдения POSIX). @ChrisDown, я попытался уточнить, что это был мой второй вариант в тексте. Спасибо за указание на возможность путаницы. Для справки: это не портативно, чтобы попытаться избежать "!". Рекомендация по передовому опыту всегда заключать в кавычки (!). Связанный: «^» (каретка), это неметасимвол, который требует цитирования для переносимости. В заключение, "!" не должен использоваться в операторе if; используйте его в качестве аргумента для проверки вместо этого, если это возможно (опять же из-за Solaris / bin / sh). У меня работали только одинарные кавычки. Zsh по-прежнему интерпретирует \! и двойные кавычки. В Solaris (старомодная оболочка до XPG4) '^' является псевдонимом для | и используется для создания канала. Если вы отправляете сценарии клиентам и не можете быть уверены, в какой оболочке они будут работать, вам нужно протестировать их все!Помимо ответа Даниэля, вы также можете просто полностью отключить расширение истории, если не используете его set +H .
Отключить расширение истории - лучший совет, который я слышал весь день! Расширение истории является опасным и византийским, когда есть намного лучшие альтернативы (инкрементальный поиск в истории Ctrl-R ), которые позволяют вам предварительно просматривать и редактировать свою команду, чтобы не слепо отмахиваться от команды, !-14 которой вы, хотя и были !-12 , к сожалению, оказались rm -rf * . Быть в безопасности. Отключить расширение истории! Eschew ! ! Самый большой ответ: расширение истории - огромный риск для безопасности! Он может быть использован для атаки на ваш Unix через специально созданный URL. @aculich, или просто используйте вместо этого указанную POSIX команду fc -14 . Но это правда, что вы можете сделать это без включения расширения истории. Лично я использую !$ и, !vi и sudo !! даже git add !vi:$ достаточно часто, чтобы оставить расширение истории включенным. Я думаю, что я добавлю это к моим файлам оболочки RC. Я только когда-либо использовал это как аккуратный "трюк"Это также может сделать
curl -v "http://example.org/"'!'"287s87asdjh2/somepath/someresource"
или же
curl -v "http://example.org/"\!"287s87asdjh2/somepath/someresource"
Что работает, потому что bash объединяет смежные строки. Этот подход особенно полезен, когда у вас есть другие вещи, которые требуют расширения оболочки, поэтому вы не можете использовать одинарные кавычки для всей строки:
curl -v 'http://example.org/!'"287s87asdjh2/$/someresource"
! символ используется для раскрытия истории в командной строке.
так что это может быть проблемой в приглашении, но не в файлах сценариев оболочки.
как вы можете видеть, расширения истории работают даже в двойных кавычках.
Я столкнулся с той же проблемой, и мое простое решение было использовать переменную:
Здесь простота заключается в том, что (1) он переносим между оболочками и командами (2) не требует знания escape-синтаксиса и кодов ASCII.
Комментарии могут располагаться и в конце строки с исполняемым кодом.
Комментариям могут предшествовать пробелы (пробел, табуляция).
Исполняемые команды не могут следовать за комментарием в той же самой строке. Пока что еще не существует способа отделения комментария от "исполняемого кода" , следующего за комментарием в той же строке.
Разделитель команд. [Точка-с-запятой] Позволяет записывать две и более команд в одной строке.
Ограничитель в операторе выбора case . [Двойная-точка-с-запятой]
команда "точка" . Эквивалент команды source (см. Пример 11-18). Это встроенная команда bash.
"точка" может являться частью имени файла . Если имя файла начинается с точки, то это "скрытый" файл, т.е. команда ls при обычных условиях его не отображает.
Если подразумевается имя каталога, то одна точка означает текущий каталог и две точки -- каталог уровнем выше, или родительский каталог.
Символ точка довольно часто используется для обозначения каталога назначения в операциях копирования/перемещения файлов.
Символ "точка" в операциях поиска. При выполнении поиска по шаблону , в регулярных выражениях, символ "точка" обозначает одиночный символ.
Двойные кавычки . В строке "STRING" , ограниченной двойными кавычками не выполняется интерпретация большинства служебных символов, которые могут находиться в строке. см. Глава 5.
Запятая . Оператор запятая используется для вычисления серии арифметических выражений. Вычисляются все выражения, но возвращается результат последнего выражения.
Более детальному рассмотрению темы экранирования посвящена Глава 5.
Разделитель, используемый в указании пути к каталогам и файлам. [слэш] Отделяет элементы пути к каталогам и файлам (например /home/bozo/projects/Makefile).
Подстановка команд. [обратные кавычки] Обратные кавычки могут использоваться для записи в переменную команды `command` .
пустая команда. [двоеточие] Это эквивалент операции "NOP" ( no op, нет операции). Может рассматриваться как синоним встроенной команды true. Команда " : " так же является встроенной командой Bash, которая всегда возвращает "true" ( 0 ).
Символ-заполнитель в условном операторе if/then:
Как символ-заполнитель для оператора вложенного документа. См. Пример 17-9.
В комбинации с оператором > (оператор перенаправления вывода), усекает длину файла до нуля. Если указан несуществующий файл -- то он создается.
В комбинации с оператором >> -- оператор перенаправления с добавлением в конец файла и обновлением времени последнего доступа ( : >> new_file). Если задано имя несуществующего файла, то он создается. Эквивалентно команде touch.
Вышеизложенное применимо только к обычным файлам и неприменимо к конвейерам, символическим ссылкам и другим специальным файлам.
Символ " : " может использоваться как разделитель полей в /etc/passwd и переменной $PATH.
инверсия (или логическое отрицание) используемое в условных операторах. Оператор ! инвертирует код завершения команды, к которой он применен. (см. Пример 6-2). Так же используется для логического отрицания в операциях сравнения, например, операция сравнения "равно" ( = ), при использовании оператора отрицания, преобразуется в операцию сравнения -- "не равно" ( != ). Символ ! является зарезервированным ключевым словом BASH.
В некоторых случаях символ ! используется для косвенного обращения к переменным.
Кроме того, из командной строки оператор ! запускает механизм историй Bash (см. Приложение F). Примечательно, что этот механизм недоступен из сценариев (т.е. исключительно из командной строки).
символ-шаблон. [звездочка] Символ * служит "шаблоном" для подстановки в имена файлов. Одиночный символ * означает любое имя файла в заданном каталоге.
В регулярных выражениях токен * представляет любое количество (в том числе и 0) символов.
арифметический оператор. В арифметических выражениях символ * обозначает операцию умножения.
Двойная звездочка (два символа звездочки, следующих подряд друг за другом -- ** ), обозначает операцию возведения в степень.
Оператор проверки условия. В некоторых выражениях символ ? служит для проверки выполнения условия.
В конструкциях с двойными скобками, символ ? подобен трехместному оператору языка C. См. Пример 9-28.
сивол-шаблон. Символ ? обозначает одиночный символ при подстановке в имена файлов. В регулярных выражениях служит для обозначения одиночного символа.
Символ $ , предшествующий имени переменной, указывает на то, что будет получено значение переменной.
end-of-line (конец строки). В регулярных выражениях, символ "$" обозначает конец строки.
код завершения. Переменная $? хранит код завершения последней выполненной команды, функции или сценария.
id процесса. Переменная $$ хранит id процесса сценария.
группа команд.
Команды, заключенные в круглые скобки исполняются в дочернем процессе -- subshell-е.
Переменные, создаваемые в дочернем процессе не видны в "родительском" сценарии. Родительский процесс-сценарий, не может обращаться к переменным, создаваемым в дочернем процессе.
инициализация массивов.
Фигурные скобки.
Команда интерпретируется как список команд, разделенных точкой с запятой, с вариациями, представленными в фигурных скобках. [1] При интерпретации имен файлов (подстановка) используются параметры, заключенные в фигурные скобки.
Использование неэкранированных или неокавыченных пробелов внутри фигурных скобок недопустимо.
file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C
Блок кода. [фигурные скобки] Известен так же как "вложенный блок" , эта конструкция, фактически, создает анонимную функцию. Однако, в отличии от обычных функций, переменные, создаваемые во вложенных блоках кода, доступны объемлющему сценарию.
Код, заключенный в фигурные скобки, может выполнять перенаправление ввода-вывода.
Пример 3-1. Вложенные блоки и перенаправление ввода-вывода
Пример 3-2. Сохранение результата исполнения вложенного блока в файл
В отличие от групп команд в (круглых скобках), описаных выше, вложенные блоки кода, заключенные в исполняются в пределах того же процесса, что и сам скрипт (т.е. не вызывают запуск дочернего процесса -- subshell). [2]
pathname -- полное имя файла (т.е. путь к файлу и его имя). Чаще всего используется совместно с командой find.
Обратите внимание на то, что символ " ; " , которым завершается ключ -exec команды find, экранируется обратным слэшем. Это необходимо, чтобы предотвратить его интерпретацию.
test.
Проверка истинности выражения, заключенного в квадратные скобки [ ]. Примечательно, что [ является частью встроенной команды test (и ее синонимом), И не имеет никакого отношения к "внешней" утилите /usr/bin/test.
test.
Проверка истинности выражения, заключенного между [[ ]] (зарезервированное слово интерпретатора).
См. описание конструкции [[ . ]] ниже.
элемент массива.
При работе с массивами в квадратных скобках указывается порядковый номер того элемента массива, к которому производится обращение.
диапазон символов.
двойные круглые скобки.
Вычисляется целочисленное выражение, заключенное между двойными круглыми скобками (( )) .
См. обсуждение, посвященное конструкции (( . )) .
Конструкция scriptname >filename перенаправляет вывод scriptname в файл filename. Если файл filename уже существовал, то его прежнее содержимое будет утеряно.
Конструкция command &>filename перенаправляет вывод команды command, как со stdout, так и с stderr, в файл filename.
Конструкция command >&2 перенаправляет вывод со stdout на stderr.
Конструкция scriptname >>filename добавляет вывод scriptname к файлу filename. Если задано имя несуществующего файла, то он создается.
(command)>
<(command)
перенаправление ввода на встроенный документ.
конвейер. Передает вывод предыдущей команды на ввод следующей или на вход командного интерпретатора shell. Этот метод часто используется для связывания последовательности команд в единую цепочку.
Конвейеры (еще их называют каналами) -- это классический способ взаимодействия процессов, с помощью которого stdout одного процесса перенаправляется на stdin другого. Обычно используется совместно с командами вывода, такими как cat или echo, от которых поток данных поступает в "фильтр" (команда, которая на входе получает данные, преобразует их и обрабатывает).
cat $filename | grep $search_word
В конвейер могут объединяться и сценарии на языке командной оболочки.
А теперь попробуем объединить в конвейер команду ls -l с этим сценарием.
Выход stdout каждого процесса в конвейере должен читаться на входе stdin последующим, в конвейере, процессом. Если этого не делается, то поток данных блокируется , в результате конвейер будет работать не так как ожидается.
Конвейер исполняется в дочернем процессе, а посему -- не имеет доступа к переменным сценария.
Если одна из команд в конвейере завершается аварийно, то это приводит к аварийному завершению работы всего конвейера.
принудительное перенаправление, даже если установлен ключ noclobber option.
логическая операция OR (логическое ИЛИ). В опрециях проверки условий, оператор || возвращает 0 (success), если один из операндов имеет значение true (ИСТИНА).
Выполнение задачи в фоне. Команда, за которой стоит & , будет исполняться в фоновом режиме.
В сценариях команды, и даже циклы могут запускаться в фоновом режиме.
Пример 3-3. Запуск цикла в фоновом режиме
Команда, исполняемая в пределах сценария в фоне, может подвесить сценарий, ожидая нажатия клавиши. К счастью, это легко "лечится".
Логическая операция AND (логическое И). В операциях проверки условий, оператор && возвращает 0 (success) тогда, и только тогда, когда оба операнда имеют значение true (ИСТИНА).
префикс ключа. С этого символа начинаются опциональные ключи команд.
COMMAND -[Option1][Option2][. ]
ls -al
sort -dfu $filename
set -- $variable
перенаправление из/в stdin или stdout. [дефис]
Обратите внимание, что в этом контексте "-" - не самостоятельный оператор Bash, а скорее опция, распознаваемая некоторыми утилитами UNIX (такими как tar, cat и т.п.), которые выводят результаты своей работы в stdout.
В случае, когда ожидается имя файла, тогда "-" перенаправляет вывод на stdout (вспомните пример с tar cf) или принимает ввод с stdin.
Добавим символ "-" и получим более полезный результат. Это заставит командный интерпретатор ожидать ввода от пользователя.
Теперь команда принимает ввод пользователя со stdin и анализирует его.
Используя передачу stdout по конвейеру другим командам, можно выполнять довольно эффектные трюки, например вставка строк в начало файла.
С помощью команды diff -- находить различия между одним файлом и частью другого:
grep Linux file1 | diff file2 -
И наконец пример использования служебного символа "-" с командой tar.
Пример 3-4. Резервное архивирование всех файлов, которые были изменены в течение последних суток
Могут возникнуть конфликтные ситуации между опреатором перенаправления "-" и именами файлов, начинающимися с символа "-" . Поэтому сценарий должен проверять имена файлов и предаварять их префиксом пути, например, ./-FILENAME, $PWD/-FILENAME или $PATHNAME/-FILENAME.
Если значение переменной начинается с символа "-" , то это тоже может быть причиной появления ошибок.
предыдущий рабочий каталог. [дефис] Команда cd - выполнит переход в предыдущий рабочий каталог, путь к которому хранится в переменной окружения $OLDPWD .
Не путайте оператор "-" (предыдущего рабочего каталога) с оператором "-" (переназначения). Еще раз напомню, что интерпретация символа "-" зависит от контекста, в котором он употребляется.
Минус. Знак минус в арифметических операциях.
В зависимости от контекста применения, символ " = " может выступать в качестве оператора сравнения.
Плюс. Оператор сложения в арифметических операциях.
В зависимости от контекста применения, символ + может выступать как оператор регулярного выражения.
Ключ (опция). Дополнительный флаг для ключей (опций) команд.
Отдельные внешние и встроенные команды используют символ " + " для разрешения некоторой опции, а символ " - " -- для запрещения.
модуль. Модуль (остаток от деления) -- арифметическая операция.
В зависимости от контекста применения, символ % может выступать в качестве шаблона.
домашний каталог. [тильда] Соответствует содержимому внутренней переменной $HOME.
bozo -- домашний каталог пользователя bozo, а команда ls
bozo выведет содержимое его домашнего каталога.
/ -- это домашний каталог текущего пользователя, а команда ls
/ выведет содержимое домашнего каталога текущего пользователя.
текущий рабочий каталог. Соответствует содержимому внутренней переменной $PWD.
предыдущий рабочий каталог. Соответствует содержимому внутренней переменной $OLDPWD.
начало-строки. В регулярных выражениях символ "^" задает начало строки текста.
изменяет поведение терминала или управляет выводом текста. Управляющий символ набирается с клавиатуры как комбинация CONTROL + <клавиша>.
Ctl-C
Завершение выполнения процесса.
Ctl-D
Выход из командного интерпретатора (log out) (аналог команды exit).
"EOF" (признак конца файла). Этот символ может выступать в качестве завершающего при вводе с stdin.
Ctl-G
Ctl-H
Backspace -- удаление предыдущего символа.
Ctl-J
Ctl-L
Перевод формата (очистка экрана (окна) терминала). Аналогична команде clear.
Ctl-M
Ctl-U
Стирание строки ввода.
Ctl-Z
используется как разделитель команд или переменных. В качестве пробельного символа могут выступать -- собственно пробел (space), символ табуляции, символ перевода строки, символ возврата каретки или комбинация из вышеперечисленных символов. В некоторых случаях, таких как присваивание значений переменным, использование пробельных символов недопустимо.
Пустые строки никак не обрабатываются командным интерпретатором и могут свободно использоваться для визуального выделения отдельных блоков сценария.
$IFS -- переменная специального назначения. Содержит символы-разделители полей, используемые некоторыми командами. По-умолчанию -- пробельные символы.
Примечания
Интерпретатор, встретив фигурные скобки, раскрывает их и возвращает полученный список команд, которые затем и исполняет.
Исключение: блок кода, являющийся частью конвейера, может быть запущен в дочернем процессе (subshell-е).
Читайте также: