Какой цели служит косая черта?

Вы можете использовать forс подстановкой напрямую, удалить расширение .zipс помощью конструкций оболочки и извлечь архив непосредственно в место назначения:

#!/bin/bash

cd "/path/to/source/location"
for file in *.zip; do
  unzip "${file}" -d "/destination/for/unzip/${file%%.zip}" && rm "${file}"
done
mv LOCK* /destination/for/flat/files

Это также гарантирует, что архивы удаляются только в том случае, если они были успешно извлечены.

0
03.11.2020, 15:00
2 ответа

Конструкция с косой чертой точка -не «выполняет filenameкак сценарий» -, это директива для оболочки (или какой-либо другой программы, интерпретирующей ввод )как «заглянуть в текущий каталог». Чаще всего он добавляется к двоичному файлу команды (или сценарию ), когда эта команда находится в текущем рабочем каталоге и когда текущий рабочий каталог не находится в пути поиска. Использование его в команде (, как в вашем примере qpdf), — это способ получить исходные файлы из другого каталога, когда вы ожидаете, что выходные файлы попадут в каталог, в котором вы находитесь, когда вы вызываете команду.

0
18.03.2021, 22:52

Префикс./(или любой путь )предотвращает использование в качестве параметров имен файлов, начинающихся с дефиса.

$ touch./-l foo bar
$ ls
bar  foo  -l
$ ls *
-rw-r--r-- 1 ilkkachu ilkkachu 0 Nov  3 15:10 bar
-rw-r--r-- 1 ilkkachu ilkkachu 0 Nov  3 15:10 foo

Основная проблема заключается в том, что это оболочка , которая расширяет подстановочный знак, и когда, например. lsвидит аргумент -l, он не может знать, был ли он получен из подстановочного знака имени файла или пользователь написал его вручную.

Вышеупомянутый файл с именем -lзаставил lsпереключиться на длинный список. Другое такое имя файла могло закончиться ошибкой invalid option. Или, что еще хуже, если команда была rm, а у вас был файл с именем -rf.

Это лишь одна из проблем, которая, возможно, является «неправильной» из-за непринужденного отношения Unix-систем к именам файлов. Для большего, чем вы хотите знать, см., например. эти эссе Дэвида Уилера:

1
18.03.2021, 22:52

Теги

Похожие вопросы