БастыАудиоКомикстерБалаларға арналған
ВЯЧЕСЛАВ
ВЯЧЕСЛАВдәйексөз келтірді3 күн бұрын
Давайте проверим ваше понимание шаблонов и вычисления переменных. Предположим, вы находитесь в каталоге с двумя подкаталогами, mammals и reptiles11. И, как ни странно, в подкаталоге mammals находятся файлы lizard.txt и snake.txt12: $ ls mammals reptiles $ ls mammals lizard.txt snake.txt Поскольку ящерицы и змеи не являются млекопитающими, эти два файла следует переместить в подкаталог reptiles. Вот два способа сделать это, но один работает, а другой нет: mv mammals/*.txt reptiles Метод 1 FILES="lizard.txt snake.txt" mv mammals/$FILES reptiles Метод 2 Метод 1 работает, потому что шаблон соответствует всему пути к файлу — имя каталога mammals является частью обоих совпадений для mammals/*.txt: $ echo mammals/*.txt mammals/lizard.txt mammals/snake.txt Таким образом, метод 1 работает так, как если бы вы набрали следующую корректную команду: $ mv mammals/lizard.txt mammals/snake.txt reptiles В методе 2 используются переменные, имеющие только свои буквальные значения, и нет специального инструмента для вычисления путей к файлам: $ echo mammals/$FILES mammals/lizard.txt snake.txt Следовательно, метод 2 работает так, как если бы вы набрали следующую не совсем корректную команду: $ mv mammals/lizard.txt snake.txt reptiles Эта команда ищет файл snake.txt в текущем каталоге, а не в каталоге mammals, и выдает ошибку: $ mv mammals/$FILES reptiles /bin/mv: cannot stat 'snake.txt': No such file or directory Чтобы сделать метод 2 рабочим, используйте цикл for, который добавляет имя каталога mammals к каждому имени файла: FILES="lizard.txt snake.txt" for f in $FILES; do mv mammals/$f reptiles done
Linux. Командная строка. Лучшие практики
Linux. Командная строка. Лучшие практики
·
Дэниел Джей Барретт
Linux. Командная строка. Лучшие практики
Дэниел Джей Барреттжәне т.б.
10.5K

Кіру не тіркелу пікір қалдыру үшін