Добавить содержимое файла в другой файл linux

Обновлено: 04.07.2024

У меня есть два файла: file1 и file2. Как добавить содержимое файла file2 в файл1, не перезаписывая текущий файл1. Как это сделать на Ubuntu Linux?

спросил(а) 2011-02-11T16:39:00+03:00 10 лет, 9 месяцев назад

Примечание: если вам нужно использовать sudo, сделайте следующее:

sudo bash -c 'cat file2 >> file1'

Обычный способ простого добавления команды sudo к команде не удастся, так как эскалация привилегий не переносится в перенаправление вывода.

ответил(а) 2014-06-24T14:37:00+04:00 7 лет, 5 месяцев назад

Ты имеешь в виду вот это?

ответил(а) 2011-02-11T16:40:00+03:00 10 лет, 9 месяцев назад

cat file2 >> file1

Оператор >> добавляет результат в указанный файл или создает именованный файл, если он не существует.

cat file1 file2 > file3

Это объединяет два или более файлов в один. У вас может быть столько исходных файлов, сколько вам нужно. Например,

cat *.txt >> newfile.txt

Обновление 20130902

В комментариях eumiro предлагает "не пытайтесь cat file1 file2 > file1 ". Причина, по которой это может не привести к ожидаемому результату, заключается в том, что файл, получающий перенаправление, подготовлен до выполнения команды слева от > . В этом случае первая file1 усекается до нулевой длины и открывается для вывода, тогда команда cat пытается объединить файл нулевой длины и содержимое file2 в file1 . В результате теряется исходное содержимое file1 и на его месте находится копия file2 , которая, вероятно, не соответствует ожидаемому.

Обновление 20160919

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


В то время как это говорит читателю, что им нужно знать, легко пропустить, если вы не ищете его и не разглашаете выражение слово за словом. Самое важное слово здесь - "прежде". Перенаправление завершено (или не выполняется) до выполнения команды.

В примере примера cat file1 file2 > file1 оболочка сначала выполняет перенаправление, так что дескрипторы ввода/вывода находятся в месте в среде, в которой команда будет выполнена до ее выполнения.

Более дружественная версия, в которой приоритет перенаправления покрывается по длине, можно найти на веб-сайте Ian Allen в виде учебных курсов Linux. Его страница может многое сказать по этой теме, включая наблюдение, что перенаправление работает даже без команды. Передача этого в оболочку:

. создает пустой файл с именем. Сначала оболочка устанавливает перенаправление ввода-вывода, затем ищет команду, не находит и завершает операцию.

У меня есть два файла: file1 и file2 . Как добавить содержимое file2 в file1 чтобы содержимое file1 сохранялось в процессе?

cat file2 >> file1

Оператор >> добавляет вывод в именованный файл или создает именованный файл, если он не существует.

cat file1 file2 > file3

Это объединяет два или более файлов в один. Вы можете иметь столько исходных файлов, сколько вам нужно. Например,

cat *.txt >> newfile.txt

Обновление 20130902
В комментариях eumiro предлагает "не пытайтесь cat file1 file2 > file1 ." Причина, по которой это может не привести к ожидаемому результату, заключается в том, что файл, получающий перенаправление, готовится до выполнения команды слева от > . В этом случае первый file1 обрезается до нулевой длины и открывается для вывода, затем команда cat пытается объединить теперь файл нулевой длины плюс содержимое file2 в file1 . В результате исходное содержимое file1 теряется и на его месте находится копия file2 что, вероятно, не соответствует ожиданиям.

Перед выполнением команды ее ввод и вывод могут быть перенаправлены с использованием специальных обозначений, интерпретируемых оболочкой.

Хотя это говорит читателю, что им нужно знать, его легко пропустить, если вы не ищете его и анализируете утверждение слово за словом. Самое важное здесь слово "до". Перенаправление завершено (или не выполнено) до выполнения команды.

В примере с cat file1 file2 > file1 оболочка сначала выполняет перенаправление, чтобы в среде, в которой будет выполняться команда до ее выполнения, были установлены дескрипторы ввода-вывода.

Более дружелюбную версию, в которой приоритет перенаправления подробно описан, можно найти на веб-сайте Яна Аллена в форме учебного курса по Linux. Его страница " Примечания о перенаправлении ввода/вывода" может многое сказать по этой теме, включая наблюдение, что перенаправление работает даже без команды. Передав это в оболочку:

. создает пустой файл с именем out. Оболочка сначала устанавливает перенаправление ввода/вывода, затем ищет команду, не находит ни одной и завершает операцию.

Чтобы быть профессионалом в использовании терминала 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, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!

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

В этом руководстве мы покажем вам, как использовать команду cat на практических примерах.

Синтаксис команды Cat

Прежде чем перейти к использованию команды cat, давайте начнем с обзора основного синтаксиса.

Выражения утилиты cat принимают следующую форму:

Отображение содержимого файла

Например, следующая команда отобразит содержимое файла /etc/issue в терминале:

Следующая команда скопирует содержимое file1.txt в file2.txt с помощью оператора ( > ):

Обычно вы используете команду cp для копирования файла.

Если файл file2.txt не существует, команда создаст его. В противном случае он перезапишет файл.

Используйте оператор ( >> ), чтобы добавить содержимое file1.txt в file2.txt :

Как и раньше, если файла нет, он будет создан.

Печатать номера строк

Чтобы отобразить содержимое файла с номерами строк, используйте параметр -n :

Подавить повторяющиеся пустые строки

Используйте параметр -s чтобы пропустить повторяющиеся пустые выходные строки:

Отображение символов TAB

Параметр -T позволяет визуально различать табуляции и пробелы.

Символы TAB будут отображаться как ^I

Показать конец строк

Чтобы отобразить невидимый символ окончания строки, используйте аргумент -e :

Окончание строки будет отображаться как $ .

Объединение файлов

При передаче двух или более имен файлов в качестве аргументов команде cat содержимое файлов будет объединено. cat читает файлы в последовательности, указанной в его аргументах, и отображает содержимое файла в той же последовательности.

Например, следующая команда прочитает содержимое file1.txt и file2.txt и отобразит результат в терминале:

Вы можете объединить два или более текстовых файла и записать их в файл.

Следующая команда file1.txt содержимое file1.txt и file2.txt и запишет их в новый combinedfile.txt file2.txt с помощью оператора ( > ):

Если combinedfile.txt файл не существует, то команда будет создавать. В противном случае он перезапишет файл.

Чтобы file1.txt содержимое file1.txt и file2.txt и добавить результат в file3.txt с помощью оператора ( >> ):

Если файла нет, он будет создан.

При объединении файлов с помощью cat вы можете использовать те же аргументы, что и в предыдущем разделе.

Создание файлов

Создавать небольшие файлы с помощью cat часто проще, чем открывать текстовый редактор, такой как nano , Vim, Sublime Text или Visual Studio Code .

Чтобы создать новый файл, используйте команду cat за которой следует оператор перенаправления ( > ) и имя файла, который вы хотите создать. Нажмите Enter , введите текст и, когда закончите, нажмите CRTL+D чтобы сохранить файл.

В следующем примере мы создаем новый файл с именем file1.txt :

Если присутствует файл с именем file1.txt , он будет перезаписан. Используйте оператор « >> », чтобы добавить вывод в существующий файл.

Выводы

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

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


В Linux у вас есть несколько вариантов выполнения этой работы.

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

Скопировать один файл


Каждый раз, когда вы хотите скопировать файл или папку в командной строке Linux, вы будете использовать команду cp.

cp является сокращением copy.

Синтаксис тоже прост.

Используйте cp, затем файл, который вы хотите скопировать, и место назначения, куда вы хотите его переместить.

Это, конечно, предполагает, что ваш файл находится в том же каталоге, из которого вы работаете. У вас также есть возможность переименовать ваш файл при копировании.

Скопируйте папку и ее содержимое


Чтобы скопировать папку и ее содержимое, вам нужно указать команде cp рекурсивное копирование.

Это достаточно просто => с флагом -r.

Весь остальной ваш синтаксис точно такой же.

Флаг -r служит для указания cp, что он работает с каталогом и должен копировать его содержимое.

Копировать несколько файлов


Вы также можете скопировать несколько файлов. Командная строка Linux позволяет указывать сразу несколько элементов в квадратных скобках <>.

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

Все три файла разных типов будут скопированы в каталог Documents.

Копировать все файлы одного типа


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

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

Таким образом, если вы скажете Linux, чтобы он копировал * .jpg, он скопирует все файлы JPG, независимо от имени или того, что находится перед частью названия файла .jpg.

Если вы хотите использовать несколько типов файлов, например JPG и PNG, вы можете использовать скобки

Переместить файл или папку

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

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