Linux запись в несколько файлов
Чтобы быть профессионалом в использовании терминала Linux, нужно научится управлять файлами через терминал. Это чуть ли не основа всего, включая редактирование конфигурационных файлов, сборку программ, администрирование и множество других вещей. Просмотр содержимого папок, переход между папками, создание и удаление файлов - это необходимая база, для удобной работы в терминале.
В этой статье мы рассмотрим самые часто используемые команды Linux для работы с файлами и каталогами, после их освоения терминал больше не будет казаться таким непонятным и объемлемым. Вот какие команды будут нас сегодня интересовать:
- ls - список файлов в директории;
- cd - переход между директориями;
- rm - удалить файл;
- rmdir - удалить папку;
- mv - переместить файл;
- cp - скопировать файл;
- mkdir - создать папку;
- ln - создать ссылку;
- chmod - изменить права файла;
- touch - создать пустой файл.
А теперь перейдем к подробному рассмотрению всех этих команд.
1. ls - просмотр содержимого папки
Команда ls позволяет вывести список файлов заданной папки, по умолчанию, будет выведен список файлов текущей папки:
Вы можете вывести список файлов из всех подкаталогов рекурсивно, для этого используйте опцию -R:
Чтобы вывести список файлов нужной папки, вы можете передать ее адрес утилите, например, /home:
Чтобы получить больше информации и вывести все имена файлов в виде списка используйте опцию -l:
2. cd - изменить папку
Команда cd позволяет изменить текущую папку на другую. По умолчанию, текущей считается домашняя папка, например, cd Desktop меняет папку на рабочий стол, если вы выполните ее из домашнего каталога:
Вы также можете указать полный путь к папке:
Команда cd .. переходит в папку, которая находится выше на одну в файловой системе:
Вы также можете вернуться в предыдущую рабочую папку:
3. rm - удалить файлы
Команда rm позволяет удалить файл. Будьте очень осторожны с ней, она не будет спрашивать подтверждения:
Например, rm file удалит файл с именем file, который находится в текущей папке. Как и в предыдущих вариантах, вы можете указать полный путь к файлу linux. Например:
Если вы хотите удалить папку, то нужно использовать опцию -r. Она включает рекурсивное удаление всех файлов и папок на всех уровнях вложенности:
rm -r /home/user/photo/
Будьте осторожны, потому что эта команда удаляет файлы безвозвратно.
4. rmdir - удалить папку
Команда rmdir позволяет удалить пустую папку. Например, команда rmdir directory удалит папку directory, которая находится в текущей папке:
Если вам нужно удалить папку с файлами, то нужно использовать утилиту rm вместе с опцией -r.
5. mv - перемещение файлов
Команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile:
mv file newfile
Чтобы переместить файл в другую папку нужно указать путь к ней, например, переместим файл file в папку /home/user/tmp/
mv file /home/user/tmp/
6. cp - копирование файлов
Эта cp и mv - это похожие команды linux для работы с файлами. Они работают аналогичным образом, только исходный файл остается на своем месте.
cp file newfile
Вы также можете рекурсивно скопировать всю папку с помощью команды cp -r. Эта команда скопирует всю папку вместе со всеми файлами и вложенными папками в новое место. Например, скопируем папку /etc/:
cp -r /etc /etc_back
7. mkdir - создать папку
Команда mkdir позволяет создать новую папку mkdir test создаст папку в текущем каталоге:
Если нужно создать папку в другом каталоге, укажите полный путь к нему:
8. ln - создание ссылок
Утилита ln позволяет создавать жесткие и символические ссылки на файлы или папки. Для создания символической ссылки используется опция -s. Например, вы создадим ссылку на папку с загрузками:
ln -s /home/user/Downloads/ /home/user/test/
Для создания жесткой ссылки никаких опций задавать не нужно:
ln /home/user/Downloads/ /home/user/test/
9. chmod - изменить права
chmod позволяет изменить права доступа к файлам. Например, chmod +x script.sh добавляет флаг исполняемости к файлу script.sh:
chmod +x script.sh
Чтобы убрать флаг исполняемый используйте опцию -x:
chmod -x script.sh
Подробнее о том, как работают разрешения для файлов смотрите в статье права доступа к файлам в Linux.
10. touch - создать файл
Команда touch создает пустой файл. Например, touch file создаст пустой файл в текущей папке с именем file:
Для создания файлов через терминал существует еще несколько команд, они рассмотрены в статье как создать файл в linux.
11. mc
Работа с файлами Linux через терминал может выполняться не только с помощью обычных консольных команд, каждая из которых выполняет только определенное действие. Вы можете использовать полнофункциональный файловый менеджер с псевдографическим интерфейсом на основе ncurses. Midnight Commander - это файловый менеджер, который можно использовать прямо в терминале. Для установки mc в Ubuntu выполните:
sudo apt install mc
После завершения установки достаточно выполнить команду mc:
Используйте клавиши со стрелками для перемещения по файлах, Tab для перехода на другую панель, Alt+1 для просмотра справки и Alt+2 для вывода меню:
Если терминальное окружение поддерживает мышь, то вы можете ее использовать в Midnight Commander.
Выводы
В этой статье мы рассмотрели как выполняется работа с файлами и каталогами в linux, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!
Команда tee читает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно. tee в основном используется в сочетании с другими командами через трубопровод.
В этой статье мы рассмотрим основы использования команды tee .
Синтаксис команды tee
Синтаксис команды tee следующий:
Как использовать команду tee
В основном команда tee используется для отображения стандартного вывода ( stdout ) программы и записи его в файл.
В следующем примере мы используем команду df для получения информации об объеме доступного дискового пространства в файловой системе. Вывод передается по конвейеру команде tee , которая отображает вывод на терминал и записывает ту же информацию в файл disk_usage.txt .
Вы можете просмотреть содержимое файла disk_usage.txt с помощью команды cat .
Запись в несколько файлов
Команда tee также может записывать в несколько файлов. Для этого укажите в качестве аргументов список файлов, разделенных пробелом:
Добавить в файл
По умолчанию команда tee перезапишет указанный файл. Используйте параметр -a ( --append ), чтобы добавить вывод в файл :
Игнорировать прерывание
Чтобы игнорировать прерывания, используйте параметр -i ( --ignore-interrupts ). Это полезно, когда вы останавливаете команду во время выполнения с помощью CTRL+C и хотите, чтобы tee завершился корректно.
Скрыть вывод
Использование tee в сочетании с sudo
Допустим, вы хотите записать в файл, который принадлежит пользователю root как пользователю sudo. Следующая команда завершится ошибкой, потому что перенаправление вывода не выполняется sudo. Перенаправление выполняется от имени непривилегированного пользователя.
Результат будет выглядеть примерно так:
Просто добавьте sudo перед командой tee как показано ниже:
tee получит вывод команды echo , повысит разрешения до sudo и запишет в файл.
Использование tee в сочетании с sudo позволяет записывать файлы, принадлежащие другим пользователям.
Выводы
Команда tee читает из стандартного ввода и записывает его в стандартный вывод и в один или несколько файлов.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Команда cat представляет собой инструмент Unix, используемый для управления и отображения содержимого файлов. Команда получила свое название от слова «concatenate», потому что, помимо прочего, она может объединять файлы.
В этой статье мы рассмотрим несколько простых способов использования этой команды для записи текста в файл с примерами. Использование cat очень простое, поэтому для продолжения работы не требуется никакого предварительного программирования или опыта работы с Unix.
Основы команд cat
Начнем с того, что мы просто опишем основы команды cat , чтобы помочь вам, если вы никогда не использовали ее раньше или вам нужен краткий обзор.
Синтаксис
Синтаксис выглядит так:
Чтобы быстро найти синтаксис или параметры команды, запустите cat с параметром справки:
Или, вы можете использовать:
Эти команды должны отображать следующий список параметров:
Отображение содержимого файла на стандартном выводе
Чтобы вывести содержимое файла на стандартный вывод, просто назовите файл, который хотите отобразить:
Если файл находится в другом каталоге, вам нужно указать его:
Мы ожидаем увидеть содержимое этого файла, распечатанное на стандартный вывод, в данном случае - терминал:
Это наиболее распространенное использование команды cat, поскольку она позволяет легко просматривать содержимое файла, не открывая текстовый редактор.
Запись текста в файл с помощью cat
Это приведет к замене содержимого filename2 на содержимое filename1 , поэтому убедитесь, что он не содержит ничего, что вы бы не хотели потерять. Теперь filename2 содержит:
Оператор перенаправления вывода перенаправит вывод любой вызываемой нами команды. Например, давайте попробуем это с помощью команды pwd , которая печатает имя текущего рабочего каталога:
Если мы посмотрим сейчас на testfile :
Он содержит путь к текущему рабочему каталогу:
Если файл, на который вы перенаправляете, не существует, будет создан файл с таким именем:
Объединение файлов с помощью cat
Объединить несколько файлов с помощью cat очень просто - просто перечислите файлы в желаемом порядке:
Этот код берет файлы filename1 и filename2 , сцепляет их и выводит на новый outputfile :
Стандартный ввод между файлами
Когда имя входного файла отсутствует в списке, cat начинает чтение со стандартного ввода до тех пор, пока не достигнет EOF (конца файла). Сигнал о конце файла отправляется ctrl+d в командной строке:
Мы даже можем добавить текст из стандартного ввода между файлами, которые мы хотим объединить, используя - , чтобы указать, где мы ожидаем стандартный ввод. Если у нас есть такие файлы, как filename1 , filename2 и filename3 , и нам нужен текст из стандартного ввода между filename1 и filename2 , мы должны написать:
Проверив output , мы увидим что-то вроде:
Добавление файлов с помощью cat
В предыдущих примерах использование оператора перенаправления отбрасывало предыдущее содержимое файла output . Что, если мы хотим добавить новый контент к старому? Для добавления файлов мы используем оператор >> :
И это должно привести к:
Объединение содержимого всего каталога файлов с помощью cat
Чтобы объединить все содержимое всех файлов в каталоге, мы используем подстановочный знак * :
Чтобы объединить все содержимое всех файлов в текущем рабочем каталоге, мы будем использовать:
* также можно использовать для объединения всех файлов с одинаковым расширением:
Перечисление номеров строк
Перечисление всех строк вывода осуществляется с помощью опции -n :
Что бы написать что-то вроде:
Напишите $ в конце каждой строки
В опции -E знаменует конец каждой строки в файле с $ :
Сортировка строк составных файлов по конвейеру
Это немного обман. Команда cat не может сортировать, но для этого мы можем использовать конвейер. Команда канала ( | ) используется для превращения вывода одной команды во ввод другой. Чтобы отсортировать строки файла, мы будем использовать обе cat и еще одну команду sort :
Вывод
Cat - это простой, но мощный инструмент Unix, который предустановлен в большинстве систем. Его можно использовать отдельно или в сочетании с другими командами с помощью каналов. Первоначально созданный Кеном Томпсоном и Деннисом Ритчи в 1971 году, cat простой в использовании и интуитивно понятный функционал выдерживает испытание временем.
В этой статье мы изучили некоторые возможности использования команды cat для записи текста в файлы, проверки содержимого, объединения и добавления файлов, а также для перечисления строк и их сортировки.
мне нужно добавить следующий код в конец ко всем файлам php в каталоге и его подкаталоге:
но терминал показал ошибки:
что мне делать. есть сотни файлов для добавления этого сегмента кода, и было бы очень сложно добавить его в каждый файл. Спасибо заранее.
вы не указываете оболочку, вы можете попробовать . В tcsh (и я уверен, что очень похожая версия доступна для bash) вы можете сказать что-то вроде интерактивного:
$i на имя каждого файла каждый раз через петлю.
как всегда, при выполнении операций с большим количеством файлов, вероятно, неплохо проверить их в небольшом каталоге с образцами файлов, чтобы убедиться, что он работает как ожидаемый.
если вы хотите охватить несколько каталогов ниже того, где вы находитесь, вы можете указать
Я обычно использую тройник, потому что я думаю, что он выглядит немного чище, и он обычно помещается на одной линии.
BashFAQ/056 делает достойную работу, объясняя, почему то, что вы пытались не работает. Взглянуть.
поскольку вы используете bash (в соответствии с вашей ошибкой), for команда-ваш друг.
если вы хотите вытащить "текст" из файла, вы можете вместо этого сделать следующее:
сейчас . вы может имеют файлы в подкаталогах. Если это так, вы можете использовать find команда для поиска и обработки они:
на find команда определяет, какие файлы используют такие условия, как -name и -type , потом -exec команда работает в основном то же самое, что я показал вам в предыдущем цикле "for". Финал \; указывает find что это конец аргументов .
вы можете man find для более подробной информации об этом.
на find команда портативна и вообще порекомендована для этого вида деятельности особенно, если вы хотите, чтобы ваше решение было портативным для других систем. Но так как вы в настоящее время используете bash , вы также можете обрабатывать подкаталоги с помощью bash's :
вы можете man bash и ищите "globstar" для получения более подробной информации об этом. Эта опция требует bash версии 4 или выше.
Примечание: у вас могут быть другие проблемы с тем, что вы делаете. PHP скрипты не нужно в конце ?> , поэтому вы можете добавить HTML, который скрипт попытается интерпретировать как PHP-код.
можно использовать sed в сочетании с find . Предположим, что дерево проекта
Читайте также: