BASH Программирование

Копировать список файлов с помощью сценария Bash

Копировать список файлов с помощью сценария Bash
Bash (Bourne Again Shell) - это оболочка, предназначенная для выполнения команд и скриптов. Bash был развитой версией оболочки sh. Bash Script - это файл, в котором несколько команд оболочки написаны для выполнения определенной задачи. В этой статье мы увидим, как мы можем скопировать несколько файлов с помощью сценария bash. В этой статье я использую Ubuntu 20.04 для демонстрации примера.

Примечание: - $ USER распечатает имена пользователей текущего входа в систему.

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

$ bash --version

Вывод версии Bash.

Создание и выполнение сценария Bash

Начнем с создания простого файла с помощью любого редактора по вашему выбору. Для меня редактор vi удобнее. Чтобы сделать файл исполняемым, нам нужно добавить shebang (!#) и расположение интерпретатора bash в начале скрипта. Я создал текст.txt и добавьте его в каталог bash_demo в моем домашнем каталоге, который содержит текст для демонстрационных целей.

$ touch bash_demo.ш
$ vi bash_demo.ш

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

#!/ bin / bash
cp текст.txt / tmp /
echo «Файл скопирован.”

Мы можем выполнить скрипт, используя ./ перед файлом сценария, который определяет текущий файл каталога.

$ ./ bash_demo.ш

Когда мы выполняем скрипт, в нашем терминале будет выдана следующая ошибка.

Первоначальное выполнение файла bash.

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

$ chmod + x bash_demo.ш

Вывод после предоставления разрешения.

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

Чтобы получить все файлы и каталог по определенному пути, мы будем использовать цикл for в скрипте, а затем отфильтровать единственный файл, используя условие if. В приведенном ниже примере мы выполняем команду cp, только если итератором был файл, который определен -f flag.

#!/ bin / bash
dpath = / var / log / nginx / *
для ФАЙЛА в $ dpath
делать
если [[-f $ FILE]]
тогда
cp $ FILE / home / $ USER /
еще
echo «По указанному пути нет файлов.”
фи
Выполнено

Скопируйте все файлы с определенными расширениями

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

#!/ bin / bash
для ФАЙЛА в / var / log / nginx / *.бревно
делать
cp $ FILE / home / $ USER /
Выполнено

Скопируйте все файлы, включая каталог

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

#!/ bin / bash
для ФАЙЛА в / var / log / *
делать
cp -R $ FILE / home / $ USER /
Выполнено

Копировать файлы по указанному пользователем пути

В этом примере мы скопируем файлы из каталога, указанного пользователем. Для этого мы воспользуемся командой чтения, чтобы запросить путь у пользователя, а затем проверим, предоставляет ли пользователь путь к каталогу или нет, что делается с помощью флага -d в условии. После проверки dir мы будем использовать цикл for, чтобы перебрать все файлы и каталог внутри заданного пути, а затем снова отфильтровать единственные файлы, используя условие if. Если условие совпадает, будет выполнена следующая команда cp.

#!/ bin / bash
echo «Укажите путь к каталогу.”
читать путь
если [[-d $ путь]]
тогда
для ФАЙЛА в $ path / *
делать
если [[-f $ FILE]]
тогда
cp $ FILE / home / $ USER /
еще
echo «По указанному пути нет файлов.”
фи
Выполнено
еще
echo «Требуется путь к каталогу»
фи

В моем домашнем каталоге есть следующие файлы и каталог.

Вывод при указании пути к файлу.

Вывод при указании пути к каталогу.

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

Заключение

В этой статье мы узнаем, как копировать файлы с помощью скриптов bash. Мы можем использовать множество других операций, таких как цикл, if-else и т. Д. Сценарии Bash более эффективны при работе с несколькими командами для выполнения определенных задач. Надеюсь, вам понравилась эта статья о копировании файлов с помощью сценария bash.

OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...
SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...