Хорошо, таким образом, Вы хотите архивировать два iterables, или другими словами Вы хотите единственный цикл, выполняющий итерации по набору строк, с дополнительным счетчиком. Довольно легко реализовать счетчик.
n=0
for x in $commands; do
mv -- "$x" "$n.jpg"
n=$(($n+1))
done
Обратите внимание, что это только работает, если ни один из элементов, которых Вы выполняете итерации, не содержит пробела (ни globbing символы). Если Вам разделили объекты новые строки, выключаете globbing и разделяете только на новых строках.
n=0
IFS='
'; set -f
for x in $commands; do
mv -- "$x" "$n.jpg"
n=$(($n+1))
done
set +f; unset IFS
Если только необходимо выполнить итерации по данным однажды, цикл вокруг read
(см., Почему while IFS= read
используемый так часто, вместо IFS=; while read..
? для большего количества объяснений).
n=0
while IFS= read -r x; do
mv -- "$x" "$n.jpg"
n=$(($n+1))
done <
При использовании оболочки, которая имеет массивы (удар, ksh или zsh), сохраните элементы в массиве. В zsh, любом выполнении setopt ksh_arrays
к элементам массива числа от 0, или адаптируют код к нумерации элемента массива, запускающейся в 1.
commands=(
./01/IMG0000.jpg
…
)
n=0
while [[ $n -lt ${#commands} ]]; do
mv -- "${commands[$n]}" "$n.jpg"
done
Путем создания его не миром читаемый. По умолчанию это похоже так:
igalic@tynix /home % ls -lh
total 28K
drwxr-xr-x. 62 igalic igalic 4.0K Jun 20 10:24 igalic/
drwx------. 2 root root 16K Jun 1 15:54 lost+found/
igalic@tynix /home %
Я могу отклонить любого, но меня (и корень) доступ с chmod o-rx
:
igalic@tynix /home % ls -lh
total 20K
drwxr-x---. 62 igalic igalic 4.0K Jun 20 10:28 igalic/
drwx------. 2 root root 16K Jun 1 15:54 lost+found/
igalic@tynix /home %
Это основные полномочия Unix. Можно сделать более мелкомодульные права доступа с расширенным POSIX ACLs:
igalic@tynix /home % getfacl igalic
# file: igalic
# owner: igalic
# group: igalic
user::rwx
group::r-x
other::---
Или SELinux:
drwxr-x---. igalic igalic unconfined_u:object_r:user_home_dir_t:s0 igalic/
drwx------. root root system_u:object_r:lost_found_t:s0 lost+found/
Слова как полномочия или доступ слишком неопределенны для системы Unix. Для решения проблемы необходимо было бы изучить, как полномочиями управляют и затем определяют более точно, под чем Вы подразумеваете "не способный получить доступ к ней".
Существует 3 вида полномочий:
r
: читатьw
: записатьx
: выполнитьсяОбратите внимание, что разрешение имеет особое значение для каталогов:
r
: перечислите файлы в каталоге, например, с ls
.w
: добавьте новые элементы к каталогу.x
: файлы доступа в каталоге.Существует 3 уровня разрешения, которое можно установить:
Обратите внимание, что при создании новых пользователей в системе Вас просят присвоить им группу. Причина просто для лучшего управления полномочиями.
Существуют различные пути. Я думаю, что самое простое использовало бы ls -l
. Пример:
$ ls -l file
-rw-r----- 1 rahmu users 406 Jun 18 13:28 file
Первый столбец указывает на полномочия.
-rw-r-----
, первый бит (-
) указывает, является ли файл каталогом, ссылкой или регулярным файлом. Проигнорируйте его на данный момент. Затем следующие 3 бита (rw-
) укажите на полномочия уровня пользователя. Это означает пользователя rahmu
имеет право на read
и write
этот файл. Следующие три бита (r--
) полномочия уровня группы, это означает, что все пользователи, которые находятся в группе users
будет иметь read
доступ. У всех других пользователей не будет разрешения вообще (--
). Это означает, что они не могут считать файл, записать это, ни выполнить его.
Это, обычно покончили chmod
утилита. Это поддерживает многих синтаксис, какой является лучшим, спорно, но следующее будет иметь большую часть смысла после вышеупомянутого объяснения:
$ chmod [who]operator[permissions] file
who
u
сер, g
аукцион или o
thers. (существует также a
ll, для изменения всех трех уровней сразу).operator
+
или -
.permission
r
, w
или x
.Примеры:
chmod u-w file
: удалить write
разрешение для пользователя.chmod a+x file
: добавить execute
разрешение для всех.Как я упомянул, необходимо определить то, что Вы подразумеваете под доступом. Если то, что Вы имеете в виду, read
доступ, как в Вас не хотят, чтобы они даже перечислили то, что в Вашем каталоге, затем самое легкое должно было бы снять соответствующие полномочия /home
каталог. (Принятие они соединяются с отдельным пользователем).
$ chmod o-rwx ~
cd
анекдотичный дополнительный побочный эффект.
– Gilles 'SO- stop being evil'
21.06.2012, 01:28
Каждый файл (и каталог) принадлежит пользователю и группе, всегда. Для управления управлением доступом существует три набора прав: один для пользователя файл принадлежит, один для группы, файл принадлежит и один для всех остальных (другой).
Проверьте наш корневой каталог на его полномочия, ls -l /home
. Скорее всего, Ваш корневой каталог принадлежит Вашему имени пользователя, что означает, могут ли другие получить доступ к нему, зависит от прав группы и других-прав. Все, кто считал права на Вашем dir дома, могут получить список его содержания, все с исполняемыми правами могут получить доступ к файлам в том каталоге.
Чтобы быть максимально строгим устанавливает Ваши полномочия корневого каталога на 700 с chmod 700 /path/to/your/home
Это делает Ваш dir дома недоступным для каждого пользователя, который не является Вами.
SSH не имеет никакого отношения к этому!
Если Вы готовы установить приложения сторонних производителей, необходимо смотреть на ограниченную оболочку (lshell). Это может быть настроено для ограничения доступа пользователей к командам и/или путям в файловой системе.
Это может также обнаружить, если соединение сделано удаленно (по SSH, FTP...), и действуйте по-другому соответственно.
Я не могу дать Вам точную конфигурацию Вашему варианту использования, но я предлагаю, чтобы Вы смотрели на описание всех доступных вариантов, а также демонстрационный файл конфигурации, размещенный на веб-сайте проекта.