Програмування BASH

Скопіюйте список файлів за допомогою Bash Script

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

Примітка: - $ USER надрукує поточні імена користувачів, що входять в систему.

Якщо вам цікаво, яка версія оболонки bash встановлена ​​в системі, ми можемо перевірити її за допомогою наступної команди.

$ bash --версія

Вихід версії 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.

#!/ bin / bash
dpath = / var / log / nginx / *
для FILE в $ dpath
робити
якщо [[-f $ FILE]]
тоді
cp $ FILE / home / $ USER /
ще
echo “У вказаному шляху немає файлів."
fi
зроблено

Скопіюйте всі файли певних розширень

У цьому прикладі ми скопіюємо всі файли за допомогою .розширення журналу. Нам потрібно додати *.увійдіть до шляху, щоб повторити єдиний файл за допомогою .розширення журналу лише для циклу.

#!/ bin / bash
для ФАЙЛУ в / var / log / nginx / *.журнал
робити
cp $ FILE / home / $ USER /
зроблено

Скопіюйте всі файли, включаючи каталог

У цьому прикладі ми будемо копіювати всі файли, включаючи каталоги, рекурсивно. Для цього нам просто потрібно додати команду -R cp, де -R визначає рекурсивне отримання каталогу.

#!/ bin / bash
для FILE у / var / log / *
робити
cp -R $ FILE / home / $ USER /
зроблено

Скопіюйте файли із вказаного користувачем шляху

У цьому прикладі ми скопіюємо файли із зазначеного користувачем каталогу. Для цього ми будемо використовувати команду read для запиту шляху у користувача, а потім перевірити, чи надає користувач шлях до dir чи ні, що робиться прапором -d в умові. Після перевірки dir, ми будемо використовувати цикл for для ітерації всіх файлів і dir всередині даного шляху, а потім знову відфільтруємо єдині файли, використовуючи умову if. Якщо умова відповідає, буде виконана наступна команда cp.

#!/ bin / bash
echo “Будь ласка, вкажіть шлях до реж."
шлях читання
якщо [[-d $ шлях]]
тоді
для FILE у $ path / *
робити
якщо [[-f $ FILE]]
тоді
cp $ FILE / home / $ USER /
ще
echo “У вказаному шляху немає файлів."
fi
зроблено
ще
ехо “Шлях до папки потрібен”
fi

У моєму домашньому каталозі я маю такі файли та каталог.

Вихідні дані при наданні шляху до файлу.

Вихідні дані при наданні шляху розташування папки.

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

Висновок

У цій статті ми дізнаємося про те, як копіювати файли за допомогою сценаріїв bash. Ми можемо використовувати багато інших операцій, таких як цикл, if-else тощо. Сценарії Bash ефективніші при роботі з декількома командами для виконання конкретних завдань. Сподіваюся, вам сподобалась ця стаття про копіювання файлів за допомогою сценарію bash.

WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...
Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...