- Linux bash прочитать файл
- Как обрабатывать файл построчно в сценарии Linux Bash
- Файлы, текст и идиомы
- Чтение строк из файла: однострочный
- Чтение строк из файла с помощью скрипта
- Передача строки функции
- Строительные блоки полезны
- Работа с файлами и каталогами в командной оболочке Bash
- Работа с файлами и каталогами
- Команды для каталогов
- Список основных команд
- Команды для файлов
- Список основных команд
- Перенаправление данных
- Генерация имён файлов в Bash
Linux bash прочитать файл
Есть файл с путём /papka1/file в котором записано 123, как считать ето 123 в переменную Data123 в Shell.
Оглавление |
|
Сообщения по теме | [Сортировка по времени, UBB] |
1 . «Как в Shell прочитать содержимое файла в переменную» | |
Сообщение от phpcoder | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
2 . «Как в Shell прочитать содержимое файла в переменную» | |
Сообщение от vic | |
имхо, двойные кавычки лишние 🙂 Data123=`cat /papka1/file` | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
3 . «Как в Shell прочитать содержимое файла в переменную» | |
Сообщение от AMDmi3 | |
Можно еще не подождая лишний процесс: | |
Сообщение от Voblin | |
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору |
5 . «Как в Shell прочитать содержимое файла в переменную» | |||||||||||||||||||
Сообщение от vic | |||||||||||||||||||
Неверно, это зачитывание первой строки в переменную. Источник Как обрабатывать файл построчно в сценарии Linux BashДовольно легко прочитать содержимое текстового файла Linux построчно в сценарии оболочки — если вы имеете дело с некоторыми тонкими ошибками. Вот как это сделать безопасным способом. Файлы, текст и идиомыУ каждого языка программирования есть набор идиом. Это стандартные простые способы решения ряда общих задач. Это элементарный способ или способ по умолчанию использовать одну из функций языка, с которым работает программист. Они становятся частью набора ментальных планов программиста. Хорошими примерами являются такие действия, как чтение данных из файлов, работа с циклами и замена значений двух переменных. Программист будет знать по крайней мере один способ достичь своих целей обычным или ванильным способом. Возможно, этого будет достаточно для удовлетворения текущих требований. Или, может быть, они украсят код, чтобы сделать его более эффективным или применимым к конкретному решению, которое они разрабатывают. Но иметь под рукой идиому из строительных блоков — отличная отправная точка. Знание и понимание идиом одного языка также упрощает освоение нового языка программирования. Знание того, как вещи построены на одном языке, и поиск эквивалента — или наиболее близкого — на другом языке — хороший способ оценить сходства и различия между языками программирования, которые вы уже знаете, и тем, который вы изучаете. Чтение строк из файла: однострочныйВ Bash вы можете использовать while цикл в командной строке, чтобы прочитать каждую строку текста из файла и что-то с ней сделать. Наш текстовый файл называется «data.txt». Он содержит список месяцев в году. Наш простой однострочный текст: В while Цикл читает строку из файла, и поток выполнения маленькой программы переходит к телу цикла. В echo команда записывает строку текста в окно терминала. Попытка чтения завершается неудачей, когда больше нет строк для чтения, и цикл завершен. Один из приемов — это возможность перенаправить файл в цикл. В других языках программирования вам нужно будет открыть файл, прочитать из него и снова закрыть, когда вы закончите. С Bash вы можете просто использовать перенаправление файлов и позволить оболочке обрабатывать все эти низкоуровневые вещи за вас. Конечно, этот однострочник не очень полезен. Linux уже предоставляет cat команда, которая делает именно это за нас. Мы создали сложный способ заменить трехбуквенную команду. Но он наглядно демонстрирует принципы чтения из файла. В определенной степени это работает достаточно хорошо. Предположим, у нас есть еще один текстовый файл, содержащий названия месяцев. В этом файле escape-последовательность для символа новой строки добавлена к каждой строке. Назовем его «data2.txt». Давайте воспользуемся однострочником в нашем новом файле. Экранирующий символ обратной косой черты » »Был отброшен. В результате к каждой строке добавляется буква «n». Bash интерпретирует обратную косую черту как начало escape-последовательность. Часто мы не хотим, чтобы Bash интерпретировал то, что он читает. Может быть удобнее прочитать строку целиком — escape-последовательности с обратной косой чертой и все такое — и выбрать в собственном коде, что анализировать или заменять самостоятельно. Если мы хотим произвести значимую обработку или синтаксический анализ строк текста, нам понадобится сценарий. Чтение строк из файла с помощью скриптаВот наш сценарий. Он называется «script1.sh». Мы устанавливаем переменную с именем Counter к нулю, то определяем нашу while петля. Первый оператор в строке while: IFS=» . IFS обозначает внутренний разделитель полей. Он содержит значения, которые Bash использует для определения границ слов. По умолчанию команда чтения удаляет начальные и конечные пробелы. Если мы хотим читать строки из файла в точности такими, какие они есть, нам нужно установить IFS быть пустой строкой. Мы могли бы установить это один раз вне цикла, так же, как мы устанавливаем значение Counter . Но с более сложными сценариями, особенно со многими определяемыми пользователем функциями в них, возможно, что IFS могут быть установлены в другие значения в другом месте сценария. Обеспечение того, чтобы IFS устанавливается в пустую строку каждый раз, когда while loop iterates гарантирует, что мы знаем, каким будет его поведение. Мы собираемся прочитать строку текста в переменной с именем LinefromFile . Мы используем -r (считайте обратную косую черту как обычный символ), чтобы игнорировать обратную косую черту. С ними будут обращаться так же, как с любым другим персонажем, и они не получат никакого специального обращения. Есть два условия, которые удовлетворяют while цикл и разрешить обработку текста телу цикла:
Эти два предложения разделяются логическим оператором ИЛИ » || Так что если либо Предложение возвращает успех, полученный текст обрабатывается телом цикла, независимо от того, есть ли символ новой строки или нет. В теле нашего цикла мы увеличиваем Counter переменная на единицу и используя echo для отправки вывода в окно терминала. Отображаются номер строки и текст каждой строки. Мы все еще можем использовать наш трюк с перенаправлением, чтобы перенаправить файл в цикл. В этом случае мы перенаправляем $ 1, переменную, которая содержит имя первого параметра командной строки, переданного сценарию. Используя этот трюк, мы можем легко передать имя файла данных, над которым мы хотим, чтобы сценарий работал. Скопируйте и вставьте сценарий в редактор и сохраните его под именем «script1.sh». Использовать chmod команда сделать его исполняемым. Давайте посмотрим, что делает наш скрипт с текстовым файлом data2.txt и содержащимися в нем обратными косыми чертами. Каждый символ в строке отображается дословно. Обратные косые черты не интерпретируются как escape-символы. Они печатаются как обычные символы. Передача строки функцииМы все еще просто выводим текст на экран. В реальном сценарии программирования мы, вероятно, собираемся сделать что-то более интересное со строкой текста. В большинстве случаев хорошей практикой программирования является обработка дальнейшей обработки строки в другой функции. Вот как мы могли это сделать. Это «script2.sh». Мы определяем наши Counter как и раньше, а затем мы определяем функцию с именем process_line() . Должно появиться определение функции перед функция сначала вызывается в скрипте. Наша функция будет передавать только что прочитанную строку текста на каждой итерации while петля. Мы можем получить доступ к этому значению в функции, используя $1 переменная. Если бы функции были переданы две переменные, мы могли бы получить доступ к этим значениям, используя $1 и $2 и так далее, чтобы узнать о других переменных. Ш hile петля в основном такая же. В теле цикла есть только одно изменение. В echo линия заменена вызовом process_line() функция. Обратите внимание, что вам не нужно использовать скобки «()» в имени функции, когда вы ее вызываете. Имя переменной, содержащей строку текста, LinefromFile , заключен в кавычки при передаче в функцию. Это касается строк, в которых есть пробелы. Без кавычек первое слово рассматривается как $1 по функции второе слово считается $2 , и так далее. Использование кавычек гарантирует, что вся строка текста будет обрабатываться как $1 . Обратите внимание, что это не тоже самое $1 который содержит тот же файл данных, переданный в сценарий. Потому что Counter был объявлен в основной части скрипта, а не внутри функции, на него можно ссылаться внутри process_line() функция. Скопируйте или введите приведенный выше сценарий в редактор и сохраните его под именем «script2.sh». Сделайте его исполняемым с помощью chmod : Теперь мы можем запустить его и передать новый файл данных «data3.txt». В нем есть список месяцев и одна строка со многими словами. Строки считываются из файла и передаются одна за другой в process_line() функция. Все строки отображаются правильно, в том числе нечетная с обратным пробелом, кавычками и несколькими словами. Строительные блоки полезныХодят мысли, что идиома должна содержать что-то уникальное для этого языка. Я не разделяю этого убеждения. Важно то, что он хорошо использует язык, легко запоминается и обеспечивает надежный и надежный способ реализации некоторых функций в вашем коде. Источник Работа с файлами и каталогами в командной оболочке BashСодержание: Bash (Bourne Again Shell) — это командная оболочка, использующаяся в таких UNIX-системах, как Linux или MacOS. Она позволяет управлять компонентами ОС с помощью определённых запросов, которые вводятся в консоль или берутся из скрипта. Как новичкам, так и опытным пользователям будет полезно узнать или вспомнить основные команды Bash для управления такими важными аспектами системы, как файлы и каталоги. Этот вопрос будет разобран на примере ОС Linux. Работа с файлами и каталогамиРабота с файлами и каталогами в Linux через Bash осуществляется с учетом иерархического принципа их классификации. Иерархическая структура файловой системы Linux напоминает «дерево». Существует корневой каталог, который является начальным для всей ОС, а в нём, соответственно, масса других подкаталогов. Такой же принцип используется для командной строки. Файлы и каталоги берут начало из корневого узла « / », который является начальной точкой для всех элементов. Ниже представлен стандартный перечень подкаталогов, встречающийся в большинстве UNIX-систем.
Команды для каталоговСуществуют конкретные команды, предназначенные для работы с каталогами. Далее будут приведены самые важные из них. Список основных команд
Помимо этого, существуют полезные сокращения. Например, текущая директория обозначается с помощью « . ». Знак « .. » позволяет задействовать родительский каталог. Для представления домашней директории используется « Пример использования сокращений: Команды для файловДалее приведены основные команды для осуществления взаимодействия с файлами. Начинающим полезно опробовать каждую из них, чтобы лучше понять принцип работы утилит. Список основных команд
Подробную информацию об утилитах можно получить, воспользовавшись справочной службой: « man ».
Перенаправление данныхПеренаправление ввода-вывода в файл осуществляется с помощью специальных знаков. Для вывода используются « > » и « >> », а для ввода — « ». Пример вывода « ls » в файл, а не на экран: Новый файл создаётся автоматически. В случае существования элемента с таким же наименованием, произойдёт перезапись. Чтобы этого избежать, необходимо использовать « >> ». Тогда данные будут дописываться в документ. Пример ввода, при котором информация выносится из файла с помощью команды « sort »: Генерация имён файлов в BashИногда пользователю приходится работать с несколькими файлами одновременно, например, при выполнении переноса документов в другой каталог. Это станет проблемой, если элементов десятки или сотни и среди них нужно отобрать определённые. Для решения поставленной задачи можно попробовать использование шаблонного выражения, позволяющего Bash определить необходимые элементы, ориентируясь по наименованию. Этот способ упрощает управление группой файлов путём применения короткой формулировки в команде. Итак, теперь остаётся разобраться с вопросом составления шаблонов. Сейчас будут приведены основные конструкции для осуществления генерации имён. Чаще всего для отбора файлов применяется символ: « * ». В случае использования этого знака в чистом виде, Bash выберет все элементы в каталоге без исключений. Для примера, чтобы из этого каталога отобрать файлы: file1, file2, file3, следует воспользоваться шаблоном: Символ звёздочки позволяет командному интерпретатору выделить все файлы, начинающиеся с «file». При этом последующая часть наименования будет проигнорирована.
Кроме того, сгенерировать имена можно, взяв за основу расширение файла. Например: Начни экономить на хостинге сейчас — 14 дней бесплатно! Источник |