Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
igor:practicum_po_napisaniju_shell_scripts [2018/02/13 19:23] – [Эксперимент N1: цикл for, или цикл с параметром] igor | igor:practicum_po_napisaniju_shell_scripts [2019/08/11 17:16] (текущий) – [Для чего нужно овладевать технологией написания сценариев?] igor |
---|
Если вы ничего не знаете о сценариях оболочки, то для начала рекомендую заглянуть вот сюда: \\ | Если вы ничего не знаете о сценариях оболочки, то для начала рекомендую заглянуть вот сюда: \\ |
https://losst.ru/napisanie-skriptov-na-bash \\ | https://losst.ru/napisanie-skriptov-na-bash \\ |
Статья полезная, но минус в том, что не каждый читатель в состоянии понять, для чего по жизни нужны эти "Hello world". Поэтому у меня возникла идея дополнить ее, приблизить читателя "к земле". В результате получился | https://vk.com/@nuancesprog-funkcionalnye-i-gibkie-shell-skripty \\ |
| Статьи полезные, но их минус в том, что не каждый читатель в состоянии понять, для чего по жизни нужны эти "Hello world". Поэтому у меня возникла идея дополнить ее, приблизить читателя "к земле". В результате получился |
небольшой практикум, который я и предлагаю вашему вниманию сегодня. \\ \\ | небольшой практикум, который я и предлагаю вашему вниманию сегодня. \\ \\ |
| |
У меня есть целая система, которая постороннему человеку покажется совершенно невменяемой. Однако человек не посторонний, а хоть немного меня знающий скажет, что у Романыча ничего с бухты-барахты не возникает: если система есть, значит она чем-то мотивирована. Если говорить о моих аудиозаписях, то для их воспроизведения я использую (или использовал раньше) различные устройства, которые далеко не единообразно воспринимают (не воспринимают) как имена файлов, так и id3-теги, находящиеся внутри файлов. Значит, нужно давать файлам имена не какие попало, а такие, которые позволят избежать путаницы. | У меня есть целая система, которая постороннему человеку покажется совершенно невменяемой. Однако человек не посторонний, а хоть немного меня знающий скажет, что у Романыча ничего с бухты-барахты не возникает: если система есть, значит она чем-то мотивирована. Если говорить о моих аудиозаписях, то для их воспроизведения я использую (или использовал раньше) различные устройства, которые далеко не единообразно воспринимают (не воспринимают) как имена файлов, так и id3-теги, находящиеся внутри файлов. Значит, нужно давать файлам имена не какие попало, а такие, которые позволят избежать путаницы. |
И вот теперь у меня появилось несколько каталогов, в каждом из которых несколько файлов с именами типа TrackNo01, TrackNo02, TrackNo03 и т. д. В нынешних ОС ситуация вполне легальная, но в своем доме я такого не допускаю: во-первых, неизбежна путаница, во-вторых, одно случайное нажатие F5 в полуночном командере - и файлы из некоторого каталога "затрут" одноименные файлы в другом каталоге (без малейшего шанса на восстановление!). Стало быть, надо все файлы переименовать в соответствии с моей системой: в начало имени каждого файла вставить две буквы, кодирующие исполнителя (или инструмент, если исполнитель неизвестен или разный в пределах каталога). Для всех файлов в том или ином каталоге эти две буквы будут одинаковы, например оркестр Г. фон Караяна - KA, испанская гитара - IG и т. д. Отсюда идея: не переименовывать файлы вручную, а написать скрипт. Используем цикл с параметром - цикл for: \\ \\ | И вот теперь у меня появилось несколько каталогов, в каждом из которых несколько файлов с именами типа TrackNo01, TrackNo02, TrackNo03 и т. д. В нынешних ОС ситуация вполне легальная, но в своем доме я такого не допускаю: во-первых, неизбежна путаница, во-вторых, одно случайное нажатие F5 в полуночном командере - и файлы из некоторого каталога "затрут" одноименные файлы в другом каталоге (без малейшего шанса на восстановление!). Стало быть, надо все файлы переименовать в соответствии с моей системой: в начало имени каждого файла вставить две буквы, кодирующие исполнителя (или инструмент, если исполнитель неизвестен или разный в пределах каталога). Для всех файлов в том или ином каталоге эти две буквы будут одинаковы, например оркестр Г. фон Караяна - KA, испанская гитара - IG и т. д. Отсюда идея: не переименовывать файлы вручную, а написать скрипт. Используем цикл с параметром - цикл for: \\ \\ |
**//<code>#!/bin/bash \\ | **//#!/bin/bash \\ |
for fname in `ls *.mp3` \\ | for fname in `ls *.mp3` \\ |
do \\ | do \\ |
echo cp $fname IG-$fname \\ | echo cp $fname IG-$fname \\ |
done</code>//** \\ \\ | done//** \\ \\ |
Вот такой простенький скрипт, который даже можно не записывать в файл. \\ | Вот такой простенький скрипт, который даже можно не записывать в файл. \\ |
=== Рассмотрим подробно, что здесь написано. === | === Рассмотрим подробно, что здесь написано. === |