Символ разрыва строки в Linux

Обновлено: 04.07.2024

Как получить новую строку в сценарии оболочки

Перевод строки используется для обозначения конца строки в скрипте, чтобы отметить начало новой строки, что называется разрывом строки или переводом строки. Точно так же, как вы поместите тег br в сценарии HTML, чтобы перевести последующие символы в новую строку, именно это означает новая строка в сценариях оболочки.

Здесь вы узнаете:

  • как перейти с одной строки на другую
  • различные способы использования новой строки
  • когда DiskInternals может вам помочь

Вы готовы? Давайте читать!

Самый простой способ использовать новую строку в сценарии оболочки

Существует несколько способов вставки новой строки в сценарий оболочки. Однако вот некоторые из самых простых способов сделать это:

Пример 1 - новая строка с командой echo

Пример 1 — новая строка с командой echo

Приведенный выше скрипт будет печатать

Пример 2 — новая строка

Пример 2 — новая строка

Когда вы пишете команду «echo» без добавления каких-либо аргументов, она печатает пустую строку.

Еще один способ сделать это:

Пример 3 — новая строка

Пример 3 — новая строка

Это напечатает:

Пример 4 — новая строка

Пример 4 — новая строка

Самый часто используемый символ новой строки

Если вы не хотите повторно использовать эхо для создания новых строк в сценарии оболочки, вы можете использовать символ \n. \n — это символ новой строки для систем на основе Unix; это помогает переносить команды, идущие после него, на новую строку. Пример ниже.

Пример 5 - новая строка шириной n символов

Пример 5 — новая строка с символом n

Использование команды printf в сценарии оболочки

Вместо эха можно использовать printf. Printf — это альтернативный способ вставки новых строк в сценарии оболочки вместо использования echo –e. Это связано с тем, что флаг -e совместим не со всеми системами.

Printf совместим со многими системами и более надежен; однако это не соответствует POSIX. Кроме того, вам нужно будет добавить \n в конце, потому что printf не добавляет новые строки автоматически, как это делает echo.

Пример 6 — новая строка

Пример 6 — новая строка

Что делать, чтобы открыть файлы Linux из Windows?

Обычно вы не можете открывать файлы Linux из Windows, но иногда вам может понадобиться срочно получить доступ к файлам в ваших разделах Ext2/3/4. В таких случаях DiskInternals Linux Reader может очень помочь. Этот программный инструмент поможет вам получить доступ к файлам Linux с ПК с Windows. Это бесплатная программа с интуитивно понятным интерфейсом. Используя DiskInternals Linux Reader, вы можете просматривать и получать доступ к файлам Linux, но не можете редактировать их напрямую.

Этапы чтения файлов Linux в Windows

Во-первых, вам необходимо установить DiskInternals Linux Reader на свой компьютер.

DiskInternals Linux Reader — окно установки

DiskInternals Linux Reader - окно установки

Запустите приложение, чтобы просмотреть все файлы разделов Linux.

Выберите раздел, в котором вы сохранили файлы Linux.

DiskInternals Linux Reader - выберите диск Linux

DiskInternals Linux Reader — выберите диск Linux

Просмотреть все файлы Linux; Linux Reader может читать мультимедийные файлы, документы и любые другие файлы в файловых системах (Ext2/3/4, ReiserFS, Reiser4, HFS, HFS+, FAT, exFAT, NTFS, ReFS). Чтобы просмотреть файл, щелкните файл правой кнопкой мыши и выберите «Просмотр в новом окне».

DiskInternals Linux Reader — откройте диск для просмотра файлов Linux Reader — просмотр любых файлов Linux в Windows

Теперь скопируйте файлы из раздела Linux в разделы Windows и начните редактирование.

Узнайте, что такое ASCII-символы EOL (конец строки), LF (перевод строки) или NL (новая строка) (\n\r) и почему существует два (\n\r) символа новой строки.

Govind Malviya

Бесплатный, безопасный и надежный способ аутентификации посетителей

Добавьте логин на свой сайт за 5 минут совершенно бесплатно!

Бесплатная регистрация Никаких скрытых платежей. Кредитная карта не требуется.

Какой символ вы считаете концом строки или новой строкой? Большинство разработчиков ответят \n (кроме фронтенд-разработчиков, они сказали бы: «пометить» 😊). Но это неправда, давайте разбираться почему.

Что такое символ конца строки:

Это символ в строке, представляющий собой разрыв строки, что означает, что после этого символа начнется новая строка. Есть два основных символа новой строки:

LF (символ: \n, Unicode: U+000A, ASCII: 10, шестнадцатеричный: 0x0a): это просто символ '\n', который мы все знаем с первых дней программирования. Этот символ широко известен как «перевод строки» или «символ новой строки».

CR (символ: \r, Unicode: U+000D, ASCII: 13, шестнадцатеричный: 0x0d): это просто символ 'r'. Этот символ широко известен как «возврат каретки».

На самом деле \r имеет и другое значение. В старых принтерах \r означало перемещение печатающей головки назад к началу строки, а \n означало начало новой строки.

Поддержка ОС

Unix: системы Unix рассматривают '\n' как признак конца строки. Unix считает, что \r возвращается к началу той же строки.

Mac (до 9): в более старых версиях Mac OS символ "\r" считается символом новой строки, но более новые версии ОС были сделаны более совместимыми с системами Unix для использования "\n" в качестве новой строки.

Windows: Windows использует другой стиль новой строки, Windows поддерживает сочетание CR и LF в качестве символа новой строки — '\r\n'.

Как проверить
Есть много способов проверить это. Я использую Notepad++ в качестве текстового редактора для этого, потому что он прост в использовании и широко используется разработчиками.
АЭС показать все символы

Откройте любой текстовый файл и нажмите кнопку со стрелкой (¶). Notepad++ покажет все символы с символами новой строки в формате CR и LF. Если это файл с кодировкой Windows EOL, появятся символы новой строки CR LF (\r\n). Если файл имеет кодировку UNIX или Mac EOL, он будет отображать только LF (\n).

Расширенный поиск АЭС

Нажмите комбинацию клавиш Ctrl + Shift + F и выберите «Расширенный» в режиме поиска. Теперь выполните поиск '\r\n' - если вы найдете это в конце каждой строки, это означает, что это закодированный файл Windows EOL. Однако, если в конце каждой строки стоит '\n', это файл в кодировке Unix или Mac EOL.

Как конвертировать

Давайте и здесь остановимся на Notepad++. Откройте любой файл, который вы хотите преобразовать, щелкните меню «Правка», прокрутите вниз до параметра преобразования EOL и выберите формат, в который вы хотите преобразовать файл.

Насколько мне известно, каждая операционная система по-разному отмечает символ конца строки (EOL). Коммерческие операционные системы используют возврат каретки для EOL (возврат каретки и перевод строки в Windows, возврат каретки только в Mac). Linux, с другой стороны, просто использует перевод строки для EOL.

Почему в Linux не используется возврат каретки для EOL (а вместо этого используется только перевод строки)?


Пояснение в Википедии. По сути, Multics в последние 60-е годы (который вдохновил Unix, который вдохновил Linux) добавил некоторый уровень абстракции, чтобы избежать обременения кодирования текста ограничениями устройств телетайпа, поэтому ему не приходилось кодировать новую строку двумя символами (что делает еще меньше). смысл 50 лет спустя, конечно).

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

Что? Linux — это свободная аппроксимация коммерческого стандарта ОС под названием UNIX. Системы, совместимые с UNIX, стоили тогда больших денег, и стоят они по сей день.

4 ответа 4

Windows использует CR LF, поскольку она унаследовала его от MS-DOS.

MS-DOS использует CR LF, потому что она была вдохновлена ​​CP/M, которая уже использовала CR LF.

CP/M и многие операционные системы восьмидесятых годов и ранее использовали CR LF, потому что это был способ закончить строку, напечатанную на телетайпе (возврат к началу строки и переход к следующей строке, как в обычных пишущих машинках). ). Это упростило печать файла, поскольку требовалось меньше или вообще не требовалось предварительной обработки.Были также механические требования, которые не позволяли использовать одного персонажа. Может потребоваться некоторое время, чтобы каретка вернулась и стол повернулся.

Gnu/Linux использует LF, потому что это клон Unix. 1

В Unix с самого начала использовался один символ LF для экономии места и стандартизации до канонического конца строки, использование двух символов было неэффективным и неоднозначным. Этот выбор был унаследован от Multics, которая использовала его еще в 1964 году. Память, хранилище, мощность процессора и пропускная способность были очень скудными, поэтому стоило сэкономить один байт на строку. Когда файл печатался, драйвер преобразовывал перевод строки (новую строку) в управляющие символы, требуемые целевым устройством.

LF был предпочтительнее CR, потому что у последнего все еще было определенное использование. Перемещая напечатанный символ в начало той же строки, он позволял перечеркивать уже введенные символы.

Изначально Apple решила использовать один символ, но по какой-то причине выбрала другой: CR . Когда он переключился на интерфейс BSD, он перешел на LF .

Эти варианты не зависят от того, является ОС коммерческой или нет.

Я хочу создать файл с помощью команды echo и оператора перенаправления, файл должен состоять из нескольких строк.

Я попытался включить новую строку с помощью "\n" внутри строки:

но таким образом создается не файл с тремя строками, а файл только с одной строкой и дословным содержанием строки.

Как с помощью одной только этой команды создать файл из нескольких строк?


5 ответов 5

Вы просили использовать некоторый синтаксис с командой echo:

(Но учтите и другой ответ, который вы получили.)

Символ $'. ' расширяет встроенные управляющие последовательности ANSI.

@ChrisDown, это еще не POSIX, но его планируется включить в выпуск 8. Его поддерживают ksh93, bash, zsh, mksh, FreeBSD sh.

То, что делает echo с escape-символами, определяется реализацией. Во многих реализациях echo (включая самые современные) передаваемая строка по умолчанию вообще не проверяется на наличие escape-последовательности.

С эхом, предоставляемым GNU bash (как встроенный), и некоторыми другими вариантами эха, вы можете сделать что-то вроде следующего:

Однако, похоже, вам нужен printf , который, на мой взгляд, более разборчив и более переносим (эта функция определена в POSIX):

Вы также можете использовать здесь документ:


Я попробовал вашу подсказку в виде файла cat > с каждой строкой, но не смог выйти из нее, даже нажав ctrl+x или ctrl+z

интересно, хотя я не знаю, как работает эта структура, когда я впервые встретил ее, я попробовал «ficken» вместо «EOF», и она тоже работает, но я должен использовать другое слово чем. кошка > мой файл

Это сработало для моего Mac OSX (в частности, echo -en 'text..' , тогда как принятый ответ не распознал мой символ новой строки ( \n ), а echo -en распознал.

Вот несколько других способов создания многострочного файла с помощью команды echo:

где вторая и третья команды используют оператор перенаправления >>, который приводит к добавлению (добавлению) вывода команды к файлу (который к этому моменту уже должен существовать).

где скобки группируют эхо-команды в один подпроцесс, который выглядит и действует как любая отдельная программа, выводящая несколько строк (например, ls ).

Небольшая вариация вышеизложенного

Это немного эффективнее, чем второй ответ, поскольку он не создает подпроцесс. Однако синтаксис немного сложнее: обратите внимание, что вы должны поставить пробел после < и точку с запятой перед >.

Читайте также: