Попробуйте ввести команду в ~/.config/openbox/autostart
.
Этот файл выполняется openbox при запуске (для получения дополнительной информации об автозапуске openbox см. Openbox Wiki)
Это очень простая штука для bash. Давайте пройдемся по вашему сценарию.
for D in ls /l /media/user
do
Вы создаете цикл for -с переменной D, который зацикливается
ls
/l
/media/user
Таким образом, он будет выполнен 3 раза.
directory add -d D
Я не знаю, что должна делать программа directory
; Я не знаю. Однако он выполняется 3 раза точно так же, с теми же аргументами:
add
-d
D
done
Конец цикла for -.
Это не совсем то поведение, которое вы описываете; он всегда будет добавлять ровно 3 раза буквально D
.
Теперь об улучшениях.
Вы не хотите запускать ровно 3 раза, но хотите запустить для каждого каталога в /media/user
. Таким образом, очевидным выбором будет использование $(ls -l /media/user)
. Теперь я не знаю, какой формат ваша directory
программа ожидает в качестве аргумента, но если это не так
-rw-r--r-- 1 ljm users 27164672 Jun 19 00:30 mikrotik-6.47.10.iso
, то вам, вероятно, не нужна опция -l
. Кроме того, синтаксический анализ вывода ls
— вообще плохая идея. Итак, вы, вероятно, ищете
for D in /media/user/*
do
Следующий идентификатор вашей directory
программы. Он всегда вызывается с D
в качестве последнего аргумента. Не значение D
, это было бы $D
. Это означает, что вы, вероятно, хотите
directory add -d $D
Но если в имени каталога есть пробел, это разделит имя каталога на два аргумента. Так что цитирование обязательно:
directory add -d "$D"
Надеюсь, вам станет лучше.
Не используйте ls
в сценарии.
Нет команды "каталог"; Однако mkdir
создает каталоги. Вы можете прочитать его справочную страницу.
Попробуйте заменить первую строку наfor D in /media/user/*