LINUX.ORG.RU

как заставить работать zenity


0

1
#!/bin/bash
 
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read line; do
    if [ ${#line} -gt 0 ]; then
        echo "$line" 
    fi
done
 
line="$*"
dir_filename="`pwd`/${*%.html}_files"
file_name="`pwd`/$line"
 
echo "$dir_filename" >> hmtl.txt
echo "$file_name" >> hmtl.txt
 
d="$PWD"
while read line
do
  echo "$line"
  p=$line
  echo $p
                echo "$d"
                p1="$d,"
                IFS=','
                for i in $p1; do
                    echo "<$i>"
                done
                echo "$i"
 
i=$(zenity --file-selection --directory --title "Куда переместить файл?")
                                             
if [ -w $i ]; then confirm=$(zenity zenity --question --text "Перемещение файла в $i?"; echo $?)
        
        if [[ $confirm == 0 ]]; then
        
                echo $i
                mv "$p" "$i"
                if (( $? != 0 )); then
                zenity --info --text "что-то пошло не так" --title "неудача"
                fi
        fi
fi
 
 done < $PWD/hmtl.txt
 
sleep 20
rm ./hmtl.txt
  

и как заставить работать zenity из текущего каталога, в имени которого пробелы?

Ответ на: комментарий от AITap

echo «$dir_filename» >> hmtl.txt echo «$file_name» >> hmtl.txt переношу связанные веб страницы. в linux они переносятся раздельно а в виндовс вместе. ясно

return12 ()
Ответ на: комментарий от return12

>а зачем [br] пойдёт papa.txt

Название файла должно быть логичным и отражать его содержимое.

gentoo_root ★★★★★ ()
Ответ на: комментарий от return12
#!/bin/bash

for f in "$@"
do
[ -d "${f%.html}_files" ] || continue
i=$(zenity --file-selection --directory --title "Куда переместить файл ${f} и связанную с ним директорию?")
if [ -w "$i" ] && zenity --question --text "Перемещение файла в ${i}?"
then
                mv "$f" "${f%.html}_files" "$i" | zenity --progress --text="Перемещение..." --pulsate || zenity --error --text="что-то пошло не так" --title "неудача"
fi
done

Вот так должно работать.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

ну и мой заработал

#!/bin/bash
 
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read line; do
    if [ ${#line} -gt 0 ]; then
        echo "$line" 
    fi
done
 
line="$*"
dir_filename="`pwd`/${*%.html}_files"
file_name="`pwd`/$line"
 
echo "$dir_filename" >> hmtl.txt
echo "$file_name" >> hmtl.txt
 
d="$PWD"
                echo "$d"
                p1="$d,"
                IFS=','
                for i in $p1; do
                    echo "<$i>"
                done
                echo "$i"
while read line
do
  echo "$line"
  p=$line
  echo $p
                
       i=$(zenity --file-selection --directory --title "Куда переместить ${p}?")
       if [ -w "$i" ] && zenity --question --text "Перемещение файла в ${i}?"
       then
       mv "$p" "$i" | zenity --progress --text="Перемещение..." --pulsate || \
       zenity --error --text="что-то пошло не так" --title "неудача"
       fi
                                
done < $PWD/hmtl.txt
 
sleep 20
rm ./hmtl.txt 
return12 ()
Ответ на: комментарий от AITap

ну не было желания сделать правильное только через zenity
на пару дней раньше написал по-моему удобнее и большими возможностями
но ваш правильный
вот мои: копировать и переместить, и вставить

#!/bin/bash

# sudo aptitude install xclip

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read line; do
    if [ ${#line} -gt 0 ]; then
        echo "$line" 
    fi
done

line="$*"
dir_name="`pwd`/${*%.html}_files"
file_name="`pwd`/$line"

echo "$dir_name" >> hmtl.txt
echo "$file_name" >> hmtl.txt

xclip -i hmtl.txt

sleep 120
rm ./hmtl.txt
#!/bin/bash

xclip -o > hmtl.txt

sleep 3

dir_name="$PWD"
echo "$dir_name"
p1="$dir_name,"
IFS=','
for i in $p1; do
     echo "<$i>"
done

while read line
do
  echo "$line"
  p=$line
  echo $p
  mv "$p" "$i"
done < $PWD/hmtl.txt

sleep 5
rm ./hmtl.txt
return12 ()
Ответ на: комментарий от return12

Но зачем хранить всё во временных файлах? А вдруг в текущей директории окажется файл с таким именем и важной информацией?

Зачем передавать имена файлов через while read ...? А вдруг в имени файла окажется перевод строки?
Почему нельзя просто воспользоваться встроенными циклами bash'а (for name in list; do commands; done)?

Зачем в коде расставлены sleep'ы? Зачем меняется IFS? Что будете делать, если в имени файла/директории окажется $IFS?

AITap ★★★★★ ()
Ответ на: комментарий от AITap

изящный и правильный сценарий, но пока не конкурирует с моим
есть очевидный просчёт - выделенные связанные файлы переносятся по
одиночке
если можно поправить, чтобы без постоянных вопросов переносилось
я утомился из-за малых знаний, много искать и думать надо
лучше заняться основой bash
мои наработки, если надо смотрите на киберфоруме shell ник vachmurka

return12 ()
Ответ на: комментарий от return12

> есть очевидный просчёт - выделенные связанные файлы переносятся по одиночке

если можно поправить, чтобы без постоянных вопросов переносилось

#!/bin/bash
i=$(zenity --file-selection --directory --title "Куда переместить файлы и связанные с ним директории?") || exit 0
[ -w "$i" ] || exit 0
for f in "$@"
do
 [ -d "${f%.html}_files" ] || continue
 mv -v "$f" "${f%.html}_files" "$i" | \
 zenity --progress --text="Перемещение ${f}..." --pulsate --auto-close --auto-kill || \
 zenity --error --text="что-то пошло не так" --title "неудача"
done

Так?

AITap ★★★★★ ()
Ответ на: комментарий от AITap

ну пока не это не работает, то есть вообще не двигаются, ну ладно как нибудь сам потом додумаю
у меня кроме убунту, ещё есть сусе, там монтируется только одна папка из трёх
папки раид0 на пси контроллере. сейчас там надо примонтировать эти три папки к роот/медиа, если не сложно помогите.

return12 ()
Ответ на: комментарий от return12

1) blkid
запоминаем UUID файловых систем
2) редактируем /etc/fstab, дописывая туда строки вида:
UUID=<UUID-файловой-системы> /media/точкамонтирования тип_файловой_системы defaults 0 0
3) Создаём директории в /media
4) mount -a
5) Убеждаемся, что файлы в указанных директориях доступны, а команда отработала молча и без ошибок.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

/dev/disk/by-id/ata-ST3250820A_5QE31L39-part7 / ext4 acl,user_xattr 1 1
/dev/disk/by-id/ata-ST3250820A_5QE31L39-part1 /windows/C ntfs-3g users,gid=users,fmask=133,dmask=022,locale=ru_RU.UTF-8 0 0
/dev/mapper/sil_agadbhbhcecb_part7 /media/RAID_archiv ntfs-3g user,users,gid=users,fmask=133,dmask=000,locale=ru_RU.UTF-8 0 0
/dev/mapper/sil_agadbhbhcecb_part6 /media/RAID_video_audio ntfs-3g user,users,gid=users,fmask=133,dmask=000,locale=ru_RU.UTF-8 0 0
/dev/mapper/sil_agadbhbhcecb_part5 /media/RAID_capture ntfs-3g user,users,gid=users,fmask=133,dmask=000,locale=ru_RU.UTF-8 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs auto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs auto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0

fstab на сусе

UUID
/media/RAID_archiv
UUID: 4867E0C2464F6D44

/media/RAID_video_audio
UUID: 121A4545A087BD31

/media/RAID_capture
UUID: 4869151F04894424

как редактировать fstab на сусе

return12 ()
Ответ на: комментарий от return12

если заходишь в dolphin как роот то все папки примонтированы, как пользователь не все

return12 ()
Ответ на: комментарий от return12

sudo nano /etc/fstab

Не забудьте выставить тип файловой системы ntfs-3g, а к defaults через запятую добавить dmask=0,fmask=111.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

/dev/mapper/sil_agadbhbhcecb_part6 /media/RAID_video_audio ntfs-3g user,users,gid=users,fmask=133,dmask=000,locale=ru_RU.UTF-8 0 0

переделать?

/dev/mapper/sil_agadbhbhcecb_part6 /media/121A4545A087BD31 ntfs-3g user,users,gid=users,fmask=111,dmask=0,locale=ru_RU.UTF-8 0 0

/dev/mapper/sil_agadbhbhcecb_part6 /media/RAID_video_audio ntfs-3g user,users,gid=users,fmask=133,dmask=000,locale=ru_RU.UTF-8 0 0

переделать?

proc /proc proc defaults,gid=users,fmask=111,dmask=0 0 0

вы так просили?

sysfs /sys sysfs auto 0 0

auto или ntfs-3g

return12 ()
Ответ на: комментарий от return12

> proc /proc proc defaults,gid=users,fmask=111,dmask=0 0 0

вы так просили?

sysfs /sys sysfs auto 0 0


auto или ntfs-3g


Ни в коем случае не редактируйте существующие записи! Это сломает Вашу систему!

Я имел в виду только новые, добавленные. Только для них нужно было выставить тип ФС в ntfs-3g и добавить указанные выше опции.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

ну что тогда редактировать?

/dev/disk/by-id/ata-ST3250820A_5QE31L39-part7 /                         ext4       acl,user_xattr                                            1 1
/dev/disk/by-id/ata-ST3250820A_5QE31L39-part1 /windows/C                ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=ru_RU.UTF-8    0 0
/dev/mapper/sil_agadbhbhcecb_part7            /media/RAID_archiv        ntfs-3g    user,users,gid=users,fmask=111,dmask=0,locale=ru_RU.UTF-8 0 0
/dev/mapper/sil_agadbhbhcecb_part6            /media/RAID_video_audio   ntfs-3g    user,users,gid=users,fmask=111,dmask=0,locale=ru_RU.UTF-8 0 0
/dev/mapper/sil_agadbhbhcecb_part5            /media/RAID_capture       ntfs-3g    user,users,gid=users,fmask=111,dmask=0,locale=ru_RU.UTF-8 0 0
proc                 /proc                proc       defaults            0 0
sysfs                /sys                 sysfs      auto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto              0 0
usbfs                /proc/bus/usb        usbfs      auto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5     0 0
return12 ()
Ответ на: комментарий от return12

Только /media/RAID_*. Всё и так правильно (во всяком случае, так выглядит). Что именно получается при попытке войти в эти директории?
Они должны монтироваться при загрузке и быть смонтированными постоянно.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Пароль:
linux-avdz:~ # mount
devtmpfs on /dev type devtmpfs (rw,relatime,size=1024060k,nr_inodes=215148,mode=755)
tmpfs on /dev/shm type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
/dev/sda7 on / type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /windows/C type fuseblk (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,relatime)
linux-avdz:~ #

return12 ()
Ответ на: комментарий от AITap

после mount -a не пустые

Пароль:
linux-avdz:~ # mount /media/RAID_archiv
Mount is denied because the NTFS volume is already exclusively opened.
The volume may be already mounted, or another software may use it which
could be identified for example by the help of the 'fuser' command.
linux-avdz:~ #

return12 ()
Ответ на: комментарий от AITap

нужен скрипт на цикле автопуск после того как появятся папка звука в sys

return12 ()
Ответ на: комментарий от AITap

там всё настроено они автоматически монтируются
мешает звук который блокирует потому что сам загружается

return12 ()
Ответ на: комментарий от return12

> нужен скрипт на цикле автопуск после того как появятся папка звука в sys

там всё настроено они автоматически монтируются

мешает звук который блокирует потому что сам загружается



/sys/bus/pci/drivers/HDA Intel

вот эта папка после неё mount -a



Я ничего не понял.
Можете просто описать симптомы, пользуясь традиционными техническими терминами?

AITap ★★★★★ ()
Ответ на: комментарий от return12

нужен скрипт:
автозапуск при загрузке
проверка наличия папки /sys/bus/pci/drivers/HDA Intel через 3-5 сек
затем mount -a
потм если взможно проверка на * то есть заполнение /media/RAID_capture/* к примеру
если есть то выход
если нет то повтор mount -a

return12 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.