Copiar o mover un archivo a cualquier directorio con un script

Imagen de nica22
0 puntos

Para copiar ( o mover ) un archivo en un directorio cualquiera, distinto de /home/usuario, sin necesidad de entrar en un Nautilus con permisos de root: desde http://gnome-look.org/content/show.php/Nautilus+Scripts+Pack?content=90330 he bajado un paquete de scripts de nautilus, entre los que esta Copy to y Move to; Con estos scripts puedo copiar/mover respectivamente en cualquier directorio:
Si es en uno que se necesite permisos de root me pide la contraseña antes de hacerlo, y luego lo hace, y si es en uno que no necesita permisos de root no pide la contraseña, y lo copia o mueve.

Estos scripts para Nautilus se instalan en la carpeta /home/usuario/.gnome2/nautilus-scripts, y se tiene acceso a ellos en Nautilus >botón secundario >menú Scripts

-----------
El texto del script Copy to es tal que así:

#!/bin/bash
#########################################################
# #
# This are NScripts v3.4 #
# #
# Licensed under the GNU GENERAL PUBLIC LICENSE 3 #
# #
# Copyright 2007 – 2008 Christopher Bratusek #
# #
#########################################################

if [[ -x /usr/bin/gksu || -x /opt/gnome/bin/gksu ]]; then
sudotool=”gksu -u root”
elif [[ -x /usr/bin/gnomesu || -x /opt/gnome/bin/gnomesu ]]; then
sudotool=gnomesu
fi

destination=$(zenity –file-selection –directory –title “Where to copy files?”)

echo $NAUTILUS_SCRIPT_SELECTED_URIS > ~/.gnome2/temp_copy_list

for file in $(cat ~/.gnome2/temp_copy_list); do \

file_name=$(echo $file | sed -e ’s/file:\/\///g’ -e ’s/\%20/\ /g’)
short_file_name=$(echo $file | sed -e ’s#.*/##g’ -e ’s/\%20/\ /g’)

if [[ -w $destination && -a $destination/$short_file_name ]]; then \
confirm=$(zenity zenity –question –text “Overwrite File $destination/$short_file_name?”; echo $?)
if [[ $confirm == 0 ]]; then
cp -r “$file_name” $destination
if (( $? != 0 )); then
zenity –info –text “Something went wrong” –title “Failure”
fi
fi
elif [[ -w $destination ]]; then \
cp -r “$file_name” $destination
if (( $? != 0 )); then
zenity –info –text “Something went wrong” –title “Failure”
fi
elif [[ -a $destination && $sudotool != "" ]]; then
$sudotool “cp -r ‘$file_name’ $destination”
else zenity –info –title “Failure” –text “$destination does either not\nexist or is not writable”
fi; \
done

rm -f ~/.gnome2/temp_copy_list
————–
El texto del script Move to es así:

#!/bin/bash
#########################################################
# #
# This are NScripts v3.4 #
# #
# Licensed under the GNU GENERAL PUBLIC LICENSE 3 #
# #
# Copyright 2007 – 2008 Christopher Bratusek #
# #
#########################################################

if [[ -x /usr/bin/gksu || -x /opt/gnome/bin/gksu ]]; then
sudotool=”gksu -u root”
elif [[ -x /usr/bin/gnomesu || -x /opt/gnome/bin/gnomesu ]]; then
sudotool=gnomesu
fi

destination=$(zenity –file-selection –directory –title “Where to move files?”)

echo $NAUTILUS_SCRIPT_SELECTED_URIS > ~/.gnome2/temp_move_list

for file in $(cat ~/.gnome2/temp_move_list); do \

file_name=$(echo $file | sed -e ’s/file:\/\///g’ -e ’s/\%20/\ /g’)
short_file_name=$(echo $file | sed -e ’s#.*/##g’ -e ’s/\%20/\ /g’)

if [[ -w $destination && -a $destination/$short_file_name ]]; then \
confirm=$(zenity zenity –question –text “Overwrite File $destination/$short_file_name?”; echo $?)
if [[ $confirm == 0 ]]; then
mv “$file_name” $destination
if (( $? != 0 )); then
zenity –info –text “Something went wrong” –title “Failure”
fi
fi
elif [[ -w $destination ]]; then \
mv “$file_name” $destination
if (( $? != 0 )); then
zenity –info –text “Something went wrong” –title “Failure”
fi
elif [[ -a $destination && $sudotool != "" ]]; then
$sudotool “mv ‘$file_name’ $destination”
else zenity –info –title “Failure” –text “$destination does either not\nexist or is not writable”
fi; \
done

rm -f ~/.gnome2/temp_move_list

Resumido de http://hatteras.wordpress.com/2010/02/02/copiar-o-mover-un-archivo-a-cua...