Если вы понимаете, что вам нужно, используя прочтите
, вы должны достигнуть своей цели. Однако, вы не хотите, чтобы прочитанная
сидела там и блокировала на неопределенное время, поэтому вы пропустите тайм-аут.
Например:
#!/bin/bash
sleep 5
echo done sleeping
read -N 10000000 -t 0.01
Вы можете набирать все, что захотите, пока работает спящий
. Как только он закончит, bash вызовет чтение read
, которое будет сутулиться во всем, что находится в буфере STDIN.
.
Сигнал -N
заставляет читать
переводить клемму в символьный режим, а не в строчный. Это связано с тем, что эмулятор терминала, как правило, посылает символы только при нажатии Enter. Таким образом, если символы введены без нажатия Enter, они появятся на подсказке. Число - это сколько символов нужно прочитать. По моим подсчетам, пользователь не сможет набрать 10 миллионов символов к моменту завершения работы скрипта.
.
-t
делает так, что считывание будет происходить по таймауну через 0,01 секунды. Таким образом, если пользователь не может завершить 10 миллионов символов за 0,01 секунды, -t
сдается и хватается за то, что было набрано до сих пор.
Команда find
имеет для этого переключатель. Он называется -exec
.
$ find . -name '*.dcm' -exec dcmdjpeg {} {} \;
Имена файлов будут заменены найти
в местах {}
. Так что в вышеперечисленном мы будем делать это для каждого имени файла.
dcmdjpeg file1.dcm file1.dcm
dcmdjpeg file2.dcm file2.dcm
...
Если в именах файлов имеются места, можно использовать следующий метод:
$ find . -name '*.dcm' -exec dcmdjpeg "{}" "{}" \;
Можно заменить команду dcmdjpeg
командой echo
и выполнить приведенное выше для просмотра имен файлов, которые будут выполнены.
Скажем, что у меня были эти данные образца.
$ tree
.
|-- 1
| |-- 1.dcm
| |-- 1\ space.dcm
| |-- 2.dcm
| `-- 3.dcm
|-- 1.dcm
|-- 2
| |-- 1.dcm
| |-- 1\ space.dcm
| |-- 2.dcm
| `-- 3.dcm
|-- 2.dcm
|-- 3
| |-- 1.dcm
| |-- 1\ space.dcm
| |-- 2.dcm
| `-- 3.dcm
`-- 3.dcm
И теперь, когда мы запускаем 2-й пример, который обрабатывает места в именах файлов:
$ find . -name '*.dcm' -exec echo "{}" "{}" \;
./2.dcm ./2.dcm
./1/2.dcm ./1/2.dcm
./1/3.dcm ./1/3.dcm
./1/1 space.dcm ./1/1 space.dcm
./1/1.dcm ./1/1.dcm
./3.dcm ./3.dcm
./1.dcm ./1.dcm
./2/2.dcm ./2/2.dcm
./2/3.dcm ./2/3.dcm
./2/1 space.dcm ./2/1 space.dcm
./2/1.dcm ./2/1.dcm
./3/2.dcm ./3/2.dcm
./3/3.dcm ./3/3.dcm
./3/1 space.dcm ./3/1 space.dcm
./3/1.dcm ./3/1.dcm
В приведенном выше можно увидеть, как имена файлов повторяются дважды на каждый найденный файл.
-121--139945- Предположим, что в текущем каталоге имеется файлов1
. Затем:
$ find . -maxdepth 0 -name "file1"
$ find . file1 -maxdepth 0 -name "file1"
file1
Теперь рассмотрим, что говорится в документации:
-maxdepth 0 означает только применение тестов и действий к аргументам командной строки.
В моем первом примере выше только каталог .
отображается в командной строке. С .
не имеет имени file1
, в выходных данных ничего не указано. В моем втором примере выше оба .
и file1
перечислены в командной строке, и, поскольку file1
соответствует -имя «file1»
, он был возвращен в выходных данных
Другими словами, -maxdepth 0
означает не поиск каталогов или подкаталогов. Вместо этого следует искать только соответствующий файл среди файлов, явно перечисленных в командной строке.
В примерах в командной строке были перечислены только каталоги, ни один из которых не был назван file1
. Следовательно, никаких выходных данных.
Как правило, в командной строке можно присвоить имена многим файлам и каталогам. Например, здесь мы попробуем команду find
с 11 файлами и каталогами в командной строке:
$ ls
d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
$ find d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 -maxdepth 0 -name "file1"
file1
Рассмотрим:
$ find . file1 -maxdepth 0 -iname file1
file1
$ find . file1 file1 -maxdepth 0 -iname file1
file1
file1
$ find . file1 file1 -maxdepth 1 -iname file1
./file1
file1
file1
Видимо, как указывает Рамеш, find
будет следовать по каждому пути, указанному в командной строке, и искать совпадения, даже если пути ведут к тому же файлу, как в . файл
или даже если пути являются точными дубликатами, как в file1 file1
.
- Правильно ли я понимаю вышеуказанные команды?
Да
- Что означает местное репо? Каталог, содержащий все пакеты
Если вы настраиваете собственный репозиторий yum (или системный администратор в вашей лаборатории), он может называться локальным репозиторием yum. Он может находиться в локальной системе или в частной сети. Ссылка: Настройка репозитория yum .
- Как найти каталог репо по умолчанию yum на моем компьютере?
Этот параметр настраивается в каталоге /etc/yum.repos.d/
. Здесь нет такого понятия, как по умолчанию
. Если репозиторий включен, это означает, что он активен. Включенные репо можно найти по:
# yum repolist enabled
- Как перечислить все пакеты, доступные только в моем местном репо?
Для этого я выполняю запрос с помощью следующей команды:
# yum --disablerepo="*" --enablerepo="myrepo" list available
где замените myrepo
на имя репозитория.