Explorer ключевой штрих можно найти на некоторых ноутбуках, если вы хотите открыть домашнюю папку с помощью nautilus, этот ярлык вам не поможет, потому что он откроется с помощью диспетчера файлов thunder, так что нажмите пользовательский ярлык и нажмите +, затем в поле ввода имя, которое вы хотите, и в команде напишите это nautilus /home/<your username> или любой каталог вместо
, затем выберите ярлык для него, щелкнув Disable, затем погладьте ключ, который вы хотите использовать для быстрого доступа с клавиатуры
будет работать
*.pdf будет расшифровываться оболочкой перед выполнением скрипта, поэтому скрипт не увидит *.pdf, он сразу увидит соответствующие имена файлов:
$ cat foo.sh
#! /bin/sh
printf "|%s|\n" "$@"
$ touch {1..10}.pdf
$ ./foo.sh 1.pdf
|1.pdf|
$ ./foo.sh *.pdf
|1.pdf|
|10.pdf|
|2.pdf|
|3.pdf|
|4.pdf|
|5.pdf|
|6.pdf|
|7.pdf|
|8.pdf|
|9.pdf|
Внутри bash скрипт, вы можете использовать "$@", чтобы получить все переданные ему аргументы, или использовать $1, $2 и т. д. для доступа к первому, второму и т. д. аргументу напрямую.
Вы можете просто зациклируйте все аргументы с помощью простой for:
for i # Or, for i in "$@"
do
echo "Processing argument $i"
done
Будет выводиться:
Processing argument 1.pdf
Processing argument 10.pdf
Processing argument 2.pdf
Processing argument 3.pdf
Processing argument 4.pdf
Processing argument 5.pdf
Processing argument 6.pdf
Processing argument 7.pdf
Processing argument 8.pdf
Processing argument 9.pdf
Вот одно чтение в вашем файле (ов) в виде массива, позволяющее вам работать с ним, как вам угодно:
#!/bin/bash
filearray=( "$@" )
if [ ${#filearray[@]} -gt "1" ] || [ ${#filearray[@]} == "0" ]; then
isare=are
ent=entries
else
isare=is
ent=entry
fi
echo "There $isare ${#filearray[@]} $ent."
echo ""
if [ ${#filearray[@]} == "0" ]; then
echo "Nothing entered."
exit
else
echo "This is what you entered or what was found: "
echo ""
printf '%s\n' "${filearray[@]}"
fi
Использование «" для массива делает его таким, чтобы оно читалось файлы, даже если они имеют пробелы и не будут отделять их при печати. Я также добавил изменения в соответствии с количеством найденных файлов. Ни одна запись не покажет 0. ${#filearray[@]} подсчитывает количество элементов, где ${filearray[@]} отображает все элементы.
Примеры:
Одна запись:
$ ./myscript myfile.txt
There is 1 entry.
This is what you entered or what was found:
myfile.txt
Одна запись:
$ ./myscript *.sh
There are 5 entries.
This is what you entered or what was found:
blue-ray_encode.sh
lightsOn.sh
removeoffender.sh
test1.sh
test.sh
Нет записей:
$ ./myscript
There are 0 entries.
Nothing entered.
*.pdf будет расшифровываться оболочкой перед выполнением скрипта, поэтому скрипт не увидит *.pdf, он сразу увидит соответствующие имена файлов:
$ cat foo.sh
#! /bin/sh
printf "|%s|\n" "$@"
$ touch {1..10}.pdf
$ ./foo.sh 1.pdf
|1.pdf|
$ ./foo.sh *.pdf
|1.pdf|
|10.pdf|
|2.pdf|
|3.pdf|
|4.pdf|
|5.pdf|
|6.pdf|
|7.pdf|
|8.pdf|
|9.pdf|
Внутри bash скрипт, вы можете использовать "$@", чтобы получить все переданные ему аргументы, или использовать $1, $2 и т. д. для доступа к первому, второму и т. д. аргументу напрямую.
Вы можете просто зациклируйте все аргументы с помощью простой for:
for i # Or, for i in "$@"
do
echo "Processing argument $i"
done
Будет выводиться:
Processing argument 1.pdf
Processing argument 10.pdf
Processing argument 2.pdf
Processing argument 3.pdf
Processing argument 4.pdf
Processing argument 5.pdf
Processing argument 6.pdf
Processing argument 7.pdf
Processing argument 8.pdf
Processing argument 9.pdf
Вот одно чтение в вашем файле (ов) в виде массива, позволяющее вам работать с ним, как вам угодно:
#!/bin/bash
filearray=( "$@" )
if [ ${#filearray[@]} -gt "1" ] || [ ${#filearray[@]} == "0" ]; then
isare=are
ent=entries
else
isare=is
ent=entry
fi
echo "There $isare ${#filearray[@]} $ent."
echo ""
if [ ${#filearray[@]} == "0" ]; then
echo "Nothing entered."
exit
else
echo "This is what you entered or what was found: "
echo ""
printf '%s\n' "${filearray[@]}"
fi
Использование «" для массива делает его таким, чтобы оно читалось файлы, даже если они имеют пробелы и не будут отделять их при печати. Я также добавил изменения в соответствии с количеством найденных файлов. Ни одна запись не покажет 0. ${#filearray[@]} подсчитывает количество элементов, где ${filearray[@]} отображает все элементы.
Примеры:
Одна запись:
$ ./myscript myfile.txt
There is 1 entry.
This is what you entered or what was found:
myfile.txt
Одна запись:
$ ./myscript *.sh
There are 5 entries.
This is what you entered or what was found:
blue-ray_encode.sh
lightsOn.sh
removeoffender.sh
test1.sh
test.sh
Нет записей:
$ ./myscript
There are 0 entries.
Nothing entered.