- Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
- Глава 7. Работа с файлами
- Все имена файлов регистрозависимы
- Все является файлом
- Утилита file
- Утилита touch
- Утилита cp
- Утилита mv
- Утилита rename
- Практическое задание: работа с файлами
- Корректная процедура выполнения практического задания: работа с файлами
- Запись файлов в Bash
- Запись в файл с использованием операторов перенаправления
- Запись в файл с помощью команды tee
- Выводы
- Bash: запись в файл
- Bash: Write to File
- В этом руководстве объясняется, как записать текст в файл в Bash, используя операторы перенаправления и tee команду.
- Запись в файл с использованием операторов перенаправления
- Запись в файл с помощью tee команды
- Заключение
- 🎯 Как копировать (и вставлять) файлы и каталоги из командной строки Linux
- Скопировать один файл
- Скопируйте папку и ее содержимое
- Копировать несколько файлов
- Копировать все файлы одного типа
- Переместить файл или папку
Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
Глава 7. Работа с файлами
Из данной главы вы узнаете о том, как определять тип файлов, создавать, удалять, копировать и перемещать файлы с помощью таких утилит, как file , touch , rm , cp , mv и rename .
Все имена файлов регистрозависимы
Имена файлов в Linux (или в любой системе Unix) являются регистрозависимыми. Это означает, что имена FILE1 и file1 не являются равноценными, а путь к файлу /etc/hosts отличен от пути к файлу /etc/Hosts (последнего файла не должно существовать в файловой системе типичного компьютера, работающего под управлением Linux).
Все является файлом
Любая директория на самом деле является файлом (с регистрозависмым именем!), хотя этот файл и имеет специальный тип. Каждый терминал (например, /dev/pts/4 ), любой жесткий диск или раздел на нем (например, /dev/sdb1 ) и любой процесс представлены где-либо в рамках файловой системы с помощью файла . После изучения данной главы у вас не останется сомнений в том, что в Linux все является файлом .
Утилита file
Утилита file использует файл со списком «магических последовательностей байт», содержащий шаблоны для распознавания типов данных. Файл со списком «магических последовательностей байт» расположен по пути /usr/share/file/magic . Используйте команду man 5 magic в случае необходимости получения дополнительной информации о нем.
Утилита touch
Создание пустого файла
Один из простых способов создания пустого фала заключается в использовании утилиты touch . (Позднее в данной книге мы рассмотрим множество других способов создания файлов.)
Команда touch -t
Удаление файлов навсегда
Утилита cp
Копирование отдельных файлов
Копирование файлов в другую директорию
Копирование множества файлов в директорию
Утилита mv
Переименование файлов с помощью утилиты mv
В том случае, если вам необходимо переименовать один файл, утилита mv является предпочтительным инструментом.
Переименование директорий с помощью утилиты mv
Утилита mv поддерживает параметр -i по аналогии с утилитами cp и rm .
Утилита rename
Об утилите rename
Утилита rename является одним из редких случаев, когда в рамках книги «Фундаментальные основы Linux» приходится делать разделение между дистрибутивами Linux. Практически каждая из описанных в данной книге утилит работает практически на каждом компьютере под управлением Linux. Но реализации утилиты rename в различных дистрибутивах отличаются.
Следует пытаться использовать утилиту mv всегда, когда вам необходимо переименовать несколько файлов.
Утилита rename в дистрибутиве Debian/Ubuntu
Утилита rename в дистрибутиве Debian имеет сложный синтаксис (используются регулярные выражения) для единовременного переименования множества файлов.
Утилита rename в дистрибутиве CentOS/RHEL/Fedora
Практическое задание: работа с файлами
1. Выведите список файлов директории /bin.
2. Выведите информацию о типах файлов /bin/cat, /etc/passwd и /usr/bin/passwd.
3a. Загрузите файлы wolf.jpg и LinuxFun.pdf с ресурса http://linux-training.be (с помощью команд wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files/books/LinuxFun.pdf)
3b. Выведите информацию о типах файлов wolf.jpg и LinuxFun.pdf.
3c. Переименуйте файл wolf.jpg в wolf.pdf (с помощью команды mv).
3d. Выведите информацию о типах файлов wolf.pdf и LinuxFun.pdf.
4. Создайте директорию
/touched и перейдите в нее.
5. Создайте файлы today.txt и yesterday.txt в директории touched.
6. Измените дату создания файла yesterday.txt таким образом, чтобы она совпадала с датой прошлого дня.
7. Создайте копию файла yesterday.txt с именем copy.yesterday.txt.
8. Переименуйте файл copy.yesterday.txt в kim.
9. Создайте директорию с именем
/testbackup и скопируйте все файлы из директории
10. Используйте одну команду для удаления директории
/testbackup и всех файлов из нее.
11. Создайте директорию
/etcbackup и скопируйте файлы с расширением .conf (*.conf) из директории /etc в нее. Проверьте, был ли осуществлен обход всех поддиректорий директории /etc?
12. Используйте утилиту rename для переименования всех файлов с расширением .conf (*.conf) таким образом, чтобы расширения всех этих файлов изменились на .backup. (Если у вас есть возможность работы более чем со одним дистрибутивом, попробуйте выполнить эту операцию во всех этих дистрибутивах!).
Корректная процедура выполнения практического задания: работа с файлами
1. Выведите список файлов директории /bin.
2. Выведите информацию о типах файлов /bin/cat, /etc/passwd и /usr/bin/passwd.
3a. Загрузите файлы wolf.jpg и LinuxFun.pdf с ресурса http://linux-training.be (с помощью команд wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files/books/LinuxFun.pdf)
3b. Выведите информацию о типах файлов wolf.jpg и LinuxFun.pdf.
3c. Переименуйте файл wolf.jpg в wolf.pdf (с помощью команды mv).
3d. Выведите информацию о типах файлов wolf.pdf и LinuxFun.pdf.
4. Создайте директорию
/touched и перейдите в нее.
5. Создайте файлы today.txt и yesterday.txt в директории touched.
6. Измените дату создания файла yesterday.txt таким образом, чтобы она совпадала с датой прошлого дня.
7. Создайте копию файла yesterday.txt с именем copy.yesterday.txt.
8. Переименуйте файл copy.yesterday.txt в kim.
9. Создайте директорию с именем
/testbackup и скопируйте все файлы из директории
10. Используйте одну команду для удаления директории
/testbackup и всех файлов из нее.
11. Создайте директорию
/etcbackup и скопируйте файлы с расширением .conf (*.conf) из директории /etc в нее. Проверьте, был ли осуществлен обход всех поддиректорий директории /etc?
Будут скопированы исключительно файлы с расширением .conf (*.conf), находящиеся непосредственно в директории /etc/.
12. Используйте утилиту rename для переименования всех файлов с расширением .conf (*.conf) таким образом, чтобы расширения всех этих файлов изменились на .backup. (Если у вас есть возможность работы более чем со одним дистрибутивом, попробуйте выполнить эту операцию во всех этих дистрибутивах!).
Источник
Запись файлов в Bash
Одна из наиболее распространенных задач при написании сценариев Bash или работе в командной строке Linux — это чтение и запись файлов.
В этой статье объясняется, как записать текст в файл в Bash с помощью операторов перенаправления и команды tee .
Запись в файл с использованием операторов перенаправления
В Bash перенаправление вывода позволяет вам захватить вывод команды и записать его в файл.
Общий формат перенаправления и записи вывода в файл следующий:
- Оператор перенаправления > записывает вывод в указанный файл. Если файл существует, он обрезается до нулевой длины. В противном случае файл создается. Будьте особенно осторожны при использовании этого оператора, так как вы можете перезаписать важный файл.
- Оператор перенаправления >> добавляет вывод в указанный файл. Если файл не существует, он создается.
У вас должны быть права на запись в файл. В противном случае вы получите сообщение об ошибке в разрешении отказано.
Вот простой пример, показывающий, как перенаправить вывод команды echo в файл:
Чтобы предотвратить перезапись существующих файлов, включите опцию «noclobber» с помощью встроенной команды set :
>| оператор позволяет вам переопределить параметр Bash «noclobber»
Оператор >> добавляет вывод в конец файла, а не перезаписывает файл:
Используйте команду printf если вы хотите создать сложный вывод:
Если вы хотите записать несколько строк в файл, используйте перенаправление документа Here (Heredoc).
Например, вы можете передать содержимое команде cat и записать его в файл:
Чтобы добавить строки, замените > на >> перед именем файла:
Вы можете записать вывод любой команды в файл:
Вывод команды date будет записан в файл.
Запись в файл с помощью команды tee
Команда tee читает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно.
По умолчанию команда tee перезаписывает указанный файл, как и оператор > . Чтобы добавить вывод в файл, вызовите команду с параметром -a ( —append ):
Если вы не хотите, чтобы tee выводил данные на стандартный вывод, вы можете перенаправить его на /dev/null :
Чтобы записать текст в несколько файлов, укажите файлы в качестве аргументов команды tee :
Еще одно преимущество команды tee заключается в том, что вы можете использовать ее вместе с sudo и записывать в файлы, принадлежащие другим пользователям. Чтобы добавить текст в файл, в который у вас нет прав на запись, добавьте sudo перед tee :
Выходные данные команды echo передаются как входные в tee , который повышает разрешения sudo и записывает текст в файл.
Выводы
В Linux для записи текста в файл используйте операторы перенаправления > и >> или команду tee .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Bash: запись в файл
Bash: Write to File
В этом руководстве объясняется, как записать текст в файл в Bash, используя операторы перенаправления и tee команду.
Одна из наиболее распространенных задач при написании сценариев Bash или работе в командной строке Linux — это чтение и запись файлов.
Запись в файл с использованием операторов перенаправления
В Bash перенаправление вывода позволяет вам захватить вывод команды и записать его в файл.
Общий формат перенаправления и записи вывода в файл следующий:
- Оператор > перенаправления записывает вывод в указанный файл. Если файл существует, он обрезается до нулевой длины. В противном случае файл создается. Будьте особенно осторожны при использовании этого оператора, так как вы можете перезаписать важный файл.
- Оператор >> перенаправления добавляет вывод в указанный файл. Если файл не существует, он создается.
У вас должны быть права на запись в файл. В противном случае вы получите сообщение об ошибке в разрешении отказано.
Вот простой пример, показывающий, как перенаправить вывод echo команды в файл:
Чтобы предотвратить перезапись существующих файлов, включите опцию «noclobber» с помощью set встроенной команды:
>| Оператор позволяет переопределить Bash «NoClobber» вариант:
>> Оператор добавить вывод в конец файла, а не перезаписывать файл:
Используйте printf команду для создания сложного вывода:
Если вы хотите записать несколько строк в файл, используйте перенаправление документа Here (Heredoc).
Например, вы можете передать содержимое cat команде и записать его в файл:
Для добавления строк, изменения > с >> перед именем файла:
Вы можете записать вывод любой команды в файл:
Вывод date команды будет записан в файл.
Запись в файл с помощью tee команды
Команда tee читает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно.
По tee умолчанию команда перезаписывает указанный файл, как и > оператор. Чтобы добавить вывод в файл, вызовите команду с параметром -a ( —append ):
Если вы не хотите, tee чтобы он писал на стандартный вывод, вы можете перенаправить его на /dev/null :
Чтобы записать текст в несколько файлов, укажите файлы в качестве аргументов tee команды:
Еще одно преимущество tee команды состоит в том, что вы можете использовать ее вместе с sudo файлами, принадлежащими другим пользователям, и записывать в них. Чтобы добавить текст в файл, для которого у вас нет прав на запись, добавьте sudo перед tee :
echo Вывод команды передаются в качестве входных данных к tee , который возводит разрешения SUDO и записывает текст в файл.
Заключение
В Linux для записи текста в файл используйте операторы перенаправления > и >> или tee команду.
Источник
🎯 Как копировать (и вставлять) файлы и каталоги из командной строки Linux
Копирование и вставка файлов – это одна из самых простых вещей, которые вы можете делать на компьютере.
В Linux у вас есть несколько вариантов выполнения этой работы.
В командной строке все более просто, что дает вам больше контроля, а в некоторых случаях значительно упрощает.
Скопировать один файл
Каждый раз, когда вы хотите скопировать файл или папку в командной строке Linux, вы будете использовать команду cp.
cp является сокращением copy.
Синтаксис тоже прост.
Используйте cp, затем файл, который вы хотите скопировать, и место назначения, куда вы хотите его переместить.
Скопируйте папку и ее содержимое
Чтобы скопировать папку и ее содержимое, вам нужно указать команде cp рекурсивное копирование.
Это достаточно просто => с флагом -r.
Весь остальной ваш синтаксис точно такой же.
Флаг -r служит для указания cp, что он работает с каталогом и должен копировать его содержимое.
Копировать несколько файлов
Вы также можете скопировать несколько файлов. Командная строка Linux позволяет указывать сразу несколько элементов в квадратных скобках <>.
Вы можете использовать их, чтобы перечислить имена каждого копируемого файла через запятую.
Все три файла разных типов будут скопированы в каталог Documents.
Копировать все файлы одного типа
Если у вас есть тонна файлов одного типа для копирования, вы можете использовать подстановочный знак *.
Звездочка / подстановочный знак указывает командной строке Linux принимать абсолютно все файлы в этом месте.
Таким образом, если вы скажете Linux, чтобы он копировал * .jpg, он скопирует все файлы JPG, независимо от имени или того, что находится перед частью названия файла .jpg.
Если вы хотите использовать несколько типов файлов, например JPG и PNG, вы можете использовать скобки
Переместить файл или папку
Если вы пришли сюда, чтобы переместить файл из одного места в другое, не создавая дубликаты, это тоже можно сделать легко, но для перемещения файла требуется команда mv.
Источник