Dites que j'ai un dossier ouvert dans Nautilus qui se trouve dans mon répertoire /home/user/temp
. J'aimerais déplacer un dossier de là vers mon répertoire /opt
(c'est un programme). Y a-t-il un moyen d'élever la commande de copie jusqu'à sudo
pour que je puisse copier le dossier sans avoir à démarrer une nouvelle instance de Nautilus à partir de la ligne de commande ?
Réponses
Trop de publicités?Autant que je sache, d'après ce que je sais et ai expérimenté :
sudo
est utilisé pour les applications/commandes en ligne de commande et gksudo
est utile lorsque vous essayez d'exécuter un programme en utilisant la fenêtre de dialogue Exécuter une application en appuyant sur Alt+F2.
J'ai lu que gksudo
n'est que la version graphique de sudo
.
Quoi qu'il en soit, vous pouvez à la fois utiliser sudo nautilus
et/ou gksu nautilus
dans un terminal dans le but de faire ce que vous souhaitez, ayant le même effet pour les deux commandes. Mais si vous voulez éviter le terminal et que vous souhaitez l'exécuter directement avec la fenêtre de dialogue "Exécuter une application", appuyez simplement sur Alt+F2 et écrivez gksu nautilus
, après quoi il vous sera demandé d'entrer votre mot de passe, puis le navigateur de fichiers nautilus s'ouvrira avec des privilèges root.
De plus, vous pouvez ouvrir des fichiers/dossiers en tant que root en un seul clic en utilisant l'option "Ouvrir en tant qu'administrateur" via un clic droit. Ce qui, dans tous les cas, ouvrira une nouvelle instance de nautilus pour le dossier donné et ouvrira les fichiers en tant que root, cela peut également ouvrir/exécuter des applications en tant que root, mais je ne l'ai pas encore testé.
Vous pouvez obtenir l'option "Ouvrir en tant qu'administrateur" dans votre menu contextuel en installant nautilus-gksu via la ligne de commande : sudo apt-get install nautilus-gksu
ou en utilisant synaptic comme le montre l'image suivante :
Bonne chance!
Voici le script Nautilus que j'utilise pour ouvrir une fenêtre Nautilus administrateur (root) :
#!/bin/bash
# Ce script Nautilus ouvre la fenêtre Nautilus actuelle en mode administrateur.
# Nécessite : perl, liburi-perl
ERROR_NEED_PERL="Ce script nécessite le paquet liburi-perl. Installez-le et réessayez."
GKSUDO_MESSAGE="Entrez votre mot de passe pour ouvrir une fenêtre administrateur sur : "
ERROR_BROKEN_LINK="Lien brisé."
## Vérifier la présence de liburi-perl (et donc perl)
let PERLOK=$(dpkg-query -W --showformat='${Status}\n' liburi-perl|grep "install ok installed")
if [ "" == "$PERLOK" ]; then
zenity --error --text "$ERROR_NEED_PERL"
exit 1
fi
let LEN_NSSFP=${#NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}-1
[ $LEN_NSSFP -lt 0 ] && let LEN_NSSFP=0
let LEN_NSSU=${#NAUTILUS_SCRIPT_SELECTED_URIS}-1
[ $LEN_NSSU -lt 0 ] && let LEN_NSSU=0
## Si un clic se produit sur le Bureau (ou sur un fichier ou un dossier), $1 sera un chemin (c'est-à-dire avec "/" dedans); sinon (dans une fenêtre de dossier), $1 sera simplement un nom de fichier ou de dossier (sans chemin).
## Notez que la sélection de l'extension d'espace de noms du bureau donne une valeur $# de zéro mais NAUTILUS_SCRIPT_SELECTED_FILE_PATHS pointe vers la cible (dans les cas d'extension d'espace de noms de bureau computer (ordinateur:///) et trash (corbeille:///), ...PATHS est vide).
## Au début, nous avons supprimé le préfixe file:// de NAUTILUS...CURRENT_URI, donnant le chemin complet, puis nous avons ajouté des espaces, comme ceci :
#OBJECT="`echo -n $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
## Cependant, cela échoue si des caractères spéciaux autres que des espaces sont dans le chemin, comme des lettres accentuées, etc. Nous devons convertir non seulement des espaces, mais n'importe quel UTF-8 intégré là-dedans...La conversion URI<->chemin nécessite perl (et liburi-perl) :
OBJECT=$( echo "$NAUTILUS_SCRIPT_CURRENT_URI" | perl -MURI -le 'print URI->new(<>)->dir' )
## ->file doit être utilisé pour les URIs de fichiers au lieu de ->dir, qui est pour les URIs de dossiers
CONTEXT="$OBJECT"
## Ajouter la sélection au chemin, si défini et unique
if [ $# -eq 1 ] ; then
## Si un seul objet sur le Bureau, remplacer
if echo $1 | grep -q "/" ; then ## Bureau (ou objet sur le bureau)
OBJECT="$1"
CONTEXT=""
else ## $1 est un simple nom de fichier ou dossier, sans chemin
## Le conteneur pourrait être root (/)
OBJECT="${OBJECT%/}/$1"
fi
# elif [ $# -eq 0 -a -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then
elif [ $# -eq 0 ] ; then
## extension d'espace de noms du bureau sélectionnée ?
if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then ## Home
OBJECT="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS:0:LEN_NSSFP}"
elif [ -n "$NAUTILUS_SCRIPT_SELECTED_URIS" ] ; then ## Computer, Trash
## Ceux-ci sont généralement associés à root (/)
# OBJECT="`echo ${NAUTILUS_SCRIPT_SELECTED_URIS:0:LEN_NSSU} | cut -d'/' -f3- | sed 's/%20/ /g'`"
OBJECT="${NAUTILUS_SCRIPT_SELECTED_URIS:0:LEN_NSSU}"
OBJECT=$( echo "$OBJECT" | perl -MURI -le 'print URI->new(<>)->dir' )
fi
CONTEXT=""
fi
## Notez qu'un raccourci de bureau (fichier .desktop) n'active pas -h
if [ -h "$OBJECT" ] ; then ## lien symbolique
## readlink n'a pas d'option "suivre les liens symboliques aussi loin qu'ils existent"
OBJECT=`readlink -e "$OBJECT"`
if [ -z "$OBJECT" ] ; then
zenity --error --text "$ERROR_BROKEN_LINK"
exit 1
fi
fi
# zenity --info --text "\$OBJECT is « $OBJECT »"
if [ -f "$OBJECT" ] ; then
## Fichier régulier
DIR=`dirname "$OBJECT"`
else
## Dossier (ou aucun objet)
DIR="$OBJECT"
fi
## Si DIR est vide, gnome-open ouvre dans le répertoire par défaut (home) de toute façon
#if [ -z "$DIR" ] ; then
# DIR=~
#fi
## À ce stade, le test [ ! "$CONTEXT" = "$DIR" ] sert à indiquer que le répertoire cible ne correspond pas à celui à partir duquel le script a été invoqué (le cas échéant).
gksudo --message "$GKSUDO_MESSAGE$DIR" gnome-open "$DIR"
exit $?
Une autre solution astucieuse consiste à lancer une autre copie de Nautilus avec des privilèges root (sudo) à partir d'une ligne de commande :
gksudo xdg-open &
La balise de fermeture &
signifie que la commande s'exécute en arrière-plan ; d'où l'utilisation de gksudo
(utiliser sudo
signifierait une invite invisible à laquelle vous ne pouvez pas répondre). xdg-open
se charge de lancer une fenêtre d'explorateur (nautilus
ou autre).
Vous devrez peut-être installer les paquets xdg-utils
et gksu
au préalable.
Vous pouvez obtenir un tas d'avertissements et de messages Gtk-CRITICAL
et Glib-GObject-CRITICAL
en fermant la fenêtre Nautilus élevée, mais ils semblent inoffensifs. J'aimerais m'en débarrasser, si quelqu'un sait comment faire.
- Réponses précédentes
- Plus de réponses