Вывод определенного числа файлов из директории в консоль, посредством bash скрипта?
Здравствуйте, мне необходимо вывести определенное количество наименований файлов из указанной директории, также необходимо, чтобы эти названия помещались в написанное количество строк. В man ls я такого лично не встречал, и не совсем понимаю как это можно реализовать несложным способом, единственное что мне ясно, то нужно использовать позиционные параметры. Как этого можно добиться ?
Смотрите, немного сути не добавил, мне надо чтобы после того как скрипт попросит меня ему написать директорию и кол-во строк он все это вместил в эти строки, типа пишем name_script /etc 3 и он выводит нам согласно этому параметру.
directory=$1
strings=$2
total="$(($strings+1))"
ls -l $directory | head -n $total
Запускать как script_name /etc/ 4, где первый аргумент это путь, второй это число строк. total="$(($strings+1))" добавлен для красивости, поскольку ls l выводит одну дополнительную строку
я бы добавил ещё минимальную проверку аргументов, передаваемых скрипту.
#!/bin/bash
if [ -n "$1" ] && [ -n "$2" ]
then
directory=$1
strings=$2
total="$(($strings+1))"
ls -l $directory | head -n $total
else
echo "No parameters found"
fi
добавлен для красивости, поскольку ls l выводит одну дополнительную строку
а зачем выводить "широкий формат файлов"(-l) а потом резать, используйте -1 для этого
да и вообще ТС-у нужны я так понимаю только файлы, а тут выведутся файлы и директории
Александр, а можно ли ему еще сделать передавание ключей во время ввода исполнения скрипта, допустим, чтобы он начал писать эти строки не с начала, а с определенной строки ?
AmdInDrive, использования shift означает что у ключа есть параметр, на пример ключ -n параметр 8 из вашего примера выше, в простом случае будет выглядеть так
while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do case $1 in
-n )
shift; n=$1
;;
esac; shift; done
if [[ "$1" == '--' ]]; then shift; fi