Dr. Luthardt's Chemieseiten 

weiter


Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

last modified
16.02.2024

Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

Nautilus-Actions

Nautilus-Actions sind Dateioperationen, die man selbst erstellen und dem Datei-Kontextmenü im Nautilus über System > Einstellungen > Nautilus-Aktionen hinzufügen kann.

Auf der verlinkten Website finden sich viele nützliche Aktionen, die sich mit Nautilus-Aktionen importieren lassen.

Hier finden Sie kleine Skripte, die Sie selbst als Nautilus-Aktionen anlegen können. Zweckmäßigerweise speichern Sie die Skripte in einem Ordner, z. B. $HOME/.nact oder systemweit in /usr/local/bin. Vergessen Sie nicht, die Dateien ausführbar zu machen.

Achtung Mit Ubuntu 11.04 hat sich die Zahl der Parameter und ihre Verwendung erheblich geändert. Action Skripte werden für eine Mehrfachauswahl unter Umständen automatisch mehrfach ausgeführt. Bitte lesen die Hilfe für Nautilus-Actions und passen Sie das folgende Skript selbst an.
Die Festlegung auf Dateien oder Ordner erfolgt jetzt über MIME-Typen.

show parameter

Fängt man an, seine eigenen Aktionen zu skripten, ist es nützlich, sich anzuschauen, welchen Inhalt die Nautilus-Action Parameter im konkreten Fall haben. Zwar gibt es eine Legende, aber Vertrauen ist gut, Kontrolle ist besser.

leer


Bewegen Sie den Mauszeiger auf das Bild.
Move the pointer onto the image.

Das Skript showparam, hier noch für die frühere Version der Nautilus-Actions,

#!/bin/bash

[ $# -eq 8 ] && zenity --title "Parameter Info" --info --height "250" \
   --text "^M$# Nautilus Action Parameters^M^M\
%u $1^M%d $2^M%s $3^M%f $4^M%M $5 $6^M%m $7 $8"

[ $# -eq 6 ] && zenity --title "Parameter Info" --info --height "250" \
   --text "^M$# Nautilus Action Parameters^M^M\
%u $1^M%d $2^M%s $3^M%f $4^M%M $5^M%m $6"

zeigte den Inhalt der damaligen Parameter %u %d %s %f %M %m in einer Infobox an. Bitte passen Sie das Skript und die zu übergebenden Parameter vorläufig selbst an die neue Version an.
^M steht für einen in den Textstring eingefügten Zeilenumbruch. Diesen müssen Sie nach dem Kopieren des Textes in einen Editor neu einfügen, in vim oder gvim im Einfügemodus mit <strg><v>, <enter>.

Im Terminal öffnen

#! /bin/bash

if [ -d "$1" ]; then
   gnome-terminal --working-directory="$1"
else
   gnome-terminal --working-directory="`dirname "$1"`"
fi

Das Skript opterm startet ein Terminal am Ort einer Datei oder im ausgewählten Ordner. Als Parameter setzen Sie %f ein. Als "MIME-Typen" wählen Sie "*/*"; unter "Schemata" können Sie die Auswahl auf lokale Dateien und Ordner beschränken.

Achtung Nautilus-Actions übergibt Sonderzeichen nach einem URL character encoding scheme, so dass unter anderem Pfade/Namen mit Umlauten, ß und Leerzeichen vom Skript nicht ausgewertet werden können. Das Terminal öffnet sich dann im Heimatverzeichnis :-(
Mit sed läßt sich das aber korigieren :-)

# URL decoding
FILE=$(echo "$1" | sed 's/%C3//g;s/%20/ /g;s/%A4/ä/g;s/%B6/ö/g;s/%BC/ü/g;s/%84/Ä/g;s/%96/Ö/g;s/%9C/Ü/g;s/%9F/ß/g;s/%3F/?/g;s/%26/\&/g')

In den Repositories gibt es die Nautilus-Erweiterung "Terminal". Hier muss man aber auf der rechten Seite in den Ordner, d. h. auf eine freie Fläche, rechts-klicken, was in der Listenansicht nicht immer einfach ist. Mit dem Skript hingegen kann man in einen Ordner, auf einen Ordner oder auf eine Datei klicken, um dort ein Terminal zu öffnen. Vorteil der Nautilus-Erweiterung "Terminal" ist, dass sie ein Terminal auch im Gnome-vfs öffnet.

FTP Upload

Mit autoftp lassen sich einzelne Dateien per ftp über das Kontextmenü auf einen Server übertragen. Gedacht ist es, um nach einer kleinen Änderung an einer html-Datei diese ohne ein umfangreiches FTP-Programm zum Server zu senden.

Das Skript setzt voraus, dass die Zugangsdaten des Servers in einer .netrc-Datei gespeichert sind. Lesen Sie vor der Einrichtung und Verwendung des Skripts unbedingt die man-pages für ftp und netrc Ihrer Distribution. Die Remote-Datei wird in jedem Fall überschrieben.

# !/bin/bash

# file: autoftp
# author: Michael Luthardt <edv@dr-luthardt.de>
# web: http://dr-luthardt.de/linux.htm?tip=nact
# put a single file with a nautilus-action
# on an ftp server
# ftp.xyz.tld: your server
# credentials must be in a .netrc file
# adjust localpath and remotepath
# if all is OK, you may comment out if fi and grep ...
# and uncomment rm doit and rm ftplog
#########################
# use at your own risk! #
#########################

echo "open ftp.xyz.tld" > doit
if [ "${1#*localpath}" = "" ]; then
pfad=/remotepath
else
pfad=/remotepath/${1#*localpath/}
fi
echo "cd $pfad" >> doit
echo "lcd $1" >> doit
echo "put $2" >> doit
echo close >> doit
echo bye >> doit
if `zenity --question --text "$2 nach $pfad übertragen?"`; then
   ftp -v < doit > ftplog 2>&1
   grep -E '^226|^5|^local' ftplog | \
   zenity --list --column "Info" --width "600" --height "200" --title "Your Transfer ..." --timeout "10"
   # rm doit
   # rm ftplog
else
   exit 1
fi

Die Pfadzuordnung geht davon aus, dass lokale und die entfernte Ordnerstruktur unterhalb der jeweiligen Root-Ordner identisch sind. Die lokalen Dateien und Ordner liegen in ../localpath/ und die entfernten Dateien und Ordner in /remotepath/. Als Parameter müssen %d %b übergeben werden.

Zunächst wird ein ftp-Skript in der Datei doit erzeut. Der ftp-Aufruf arbeitet das Skript ab. Dabei werden alle remote-Ausgaben und lokale Fehlermeldungen in der Datei ftplog gesammelt.

Der erste zenity-Aufruf ermöglicht, den Übertragungspfad zu prüfen und gegebenfalls das Skript abzubrechen. Die zweite zenity-Box gibt in einem Listenfeld Erfolgs- und Fehlermeldungen aus. Die Ausgabe in ein Listenfeld ist nicht optimal, jedoch erlaubt nur diese Option die Weitergabe der Standardausgabe an zenity.
Im Fehlerfall besteht die Möglichkeit, die Dateien doit und ftplog, die im Heimatverzeichnis angelegt werden, zu prüfen.

Wenn Sie sich überzeugt haben, dass alles wie gewünscht funktioniert, können sie die zenity-Ausgaben auskommentieren und die Dateien doit und ftplog vom Skript löschen lassen.

Ein Nachteil dieses Skripts ist die unverschlüsselte Übertragung der Login-Information und des Dateiinhalts. Mit lftp statt ftp läßt sich das Skript für eine verschlüsselte Anmeldung und einen sftp-Transfer umschreiben, sofern der Server ssh unterstützt.

Sonderzeichen in HTML-Entities umwandeln

Das Skript ist unter weiter html2ent beschrieben.
Mit %f als Parameter läßt sich diese Aktion über eine Mehrfachauswahl für mehrere Dateien ausführen. Die Möglichkeit der Mehrfachauswahl wird unter "Umgebung" eingestellt.


Will man mit Nautilus Actions Dateilisten mit Leerzeichen in Pfad und/oder Name aus einer Mehrfachauswahl in einem Shellskript selbst verarbeiten, so ist dies nicht ohne weiteres möglich. Die bash benutzt standardmäßig als IFSInternal Field Separator. Der IFS ist eine interne bash-Variable, welche die Zeichenfolge enthält, die Listeneinträge voneinander trennt. Whitespace/Blanks "  ". Damit zerfallen Namen mit Leerzeichen bei einer Listenverarbeitung in ihre Bestandteile.

Lösung des Problems ist, in das Skript nur Dateinamen mit komplettem Pfad zu übergeben. Damit hat man schon einmal als Dateitrenner nicht nur einen Blank, sondern die Zeichenfolge "  /". In dieser kann man mit sed den Blank durch etwas anderes, z. B. "," ersetzen und dem IFS für die Abarbeitung der Liste diesen Wert zuweisen.
Ein Beispiel hierfür ist ein Skript, mit dem sich mehrere Hardlinks für eine Datei gleichzeitig in mehreren Ordnern erzeugen lassen oder die im Heimatordner vorhandenen Hardlinks angezeigt werden.

Hardlinks erzeugen

# !/bin/bash

# make hardlink(s), ask for folder(s) or
# show hardlinks if no folder given
# Michael Luthardt <hv@dr-luthardt.de> 2010
# http://dr-luthardt.de/linux.htm

# translate from URL encoding

FILE1=$(echo "$1" | sed 's/%C3//g;s/%20/ /g;s/%A4/ä/g;s/%B6/ö/g;s/%BC/ü/g;s/%84/Ä/g;s/%96/Ö/g;s/%9C/Ü/g;s/%9F/ß/g;s/%3F/?/g;s/%26/\&/g')

# go into current abs. path (use first file in %F)
cd $(dirname "$FILE1")

# get target folder(s) name(s), relative from here, separated by commas
FOLDER=`zenity --entry --title="Hardlink into Folder" \
   --text="path/to/folder(s) from here as comma-separated list\nor leave blank to show hardlinks" --width "400"`
[ $? -eq 1 ] && exit 1
if [ -z $FOLDER ]; then
   INODE=$(stat --printf %i "$FILE1")
   LINKLIST=$(find ~ -inum $INODE -printf "\n%p")
   # replace & as entity
   LINKLIST=$(echo "$LINKLIST" | sed 's/&/\&amp;/g')
   # count the hardlinks
   LINKLIST="$((`echo -e "$LINKLIST" | wc -l`-1)) Hardlink(s):"$LINKLIST""
   zenity --info --title "hardlinks" --text "$LINKLIST"
   exit 2
fi

# remove spaces between folders from $FOLDER
FOLDERS=`echo "$FOLDER" | \
   sed 's/ *\| *, *\(.*\)/\1/;s/\ *,\ */,/g;s/\(.*\), *$/\1/'`

# change the IFS

IFS=","

# test if all folders exist and are writable
for j in $FOLDERS; do
   if [ ! -d "$j" -a ! -w "$j" ]; then
      j=$(echo $j | sed 's/&/\&amp;/g')
      zenity --info --text "Folder $j not found.\n\
         Operation canceled for all." --title "Error!"
   exit 3
   fi
done
fi

# translate from URL encoding
FILELIST=$(echo $@ | sed 's/%C3//g;s/%20/ /g;s/%A4/ä/g;s/%B6/ö/g;s/%BC/ü/g;s/%84/Ä/g;s/%96/Ö/g;s/%9C/Ü/g;s/%9F/ß/g;s/%3F/?/g;s/%26/\&/g')

# Change Nautilus-Actions parameter %F
# into a comma-separated list of filenames.
# Otherwise we can't handle path or file names with spaces.

FILES=`echo "$FILELIST" | sed 's/\ \//,\//g'`

# set the links, collect any messages into OUT
# and count created links and errors

OUT=$(
   k=0; l=0
   for j in $FOLDERS; do
      for i in $FILES; do
         NAME=`basename "$i"`
         ln "$NAME" "$j/$NAME" 2>&1
      [ $? -eq 0 ] && let k++ || let l++
      done
   done
   # get k and l values out of the subshell
   echo "$k,$l" > /dev/shm/kl
)
kl=$(cat /dev/shm/kl)
k=${kl%,*}
l=${kl#*,}
[ $k -gt 0 ] && let 'l-=1'

# tell the links created
zenity --info --title "hardlinks" --text "$k hard link(s) created." \
   --timeout "10"

# display any error messages and replace & as entity

if [ -n "$OUT" ]; then
   OUT=$(echo $OUT | sed 's/&/\&amp;/g')
   zenity --warning --title "Error!" --text "$l error(s) occured:\n$OUT" \
      --timeout "10"
   exit 4
fi

# clean up
rm /dev/shm/kl

In den Nautilus Actions übergibt man dem Skript %F als Parameter. Für ein oder mehrere Dateien erzeugt das Skript Hardlinks in den Zielordnern, den das Skript erfragt. Gibt es dort eine der Dateien bereits als solche oder als Hardlink, gelangt die Mitteilung hierüber in die Fehlerausgabe des Skripts. Die Erzeugung der Links für die anderen Dateien wird dadurch nicht gestört.
Die Anzahl der erzeugten Hardlinks und – falls vorhanden – Fehler wird ausgegeben.
Auch dieses Skript musste an URL-kodierte Dateinamen angepasst werden. Für zenity ist es erforderlich, im Ausgabetext vorhandene & durch die HTML-Entität &amp; zu ersetzen.
Die zu einer Datei vorhandenen Hardlinks zeigt auch die Funktion weiter hardlink.

Softlinks erzeugen

Hierfür muss das vorige Skript nur wenig geändert werden: Ihr Browser kann das Objekt leider nicht anzeigen!

ISO-Abbilder mounten

Das Skript hierzu ist unter weiter "ISO image einbinden" beschrieben.

Bilder verkleinern

Heute liefern selbst einfache Digitalfotoapparate mehrere Megapixel große Bilddateien. Will man solche Bilder per Email verschicken muss man die Dateigröße sinnvoll vermindern.

Die aktuelle Version der Nautilus-Actions ermöglicht die direkte Angabe des notwendigen Befehls direkt in der Actions-Konfiguration ohne zusätzliches Skript.

(Mehrere) ausgewählte Dateien werden auf die in den Parametern angebene Größe und Qualität verkleinert, gegebenenfalls konvertiert und als JPEG mit dem neuen Namen *_klein.jpg im gleichen Ordner gespeichert.
Unter MIME-Typen wählen Sie image/* und unter Umgebung Environment.

Die Creation Time ausgeben

Ihr Browser kann das Objekt leider nicht anzeigen!
Unter weiter ist beschrieben, wie man sich den Zeitpunkt der ersten Erstellung einer Datei oder eines Ordners (Creation Time, crtime, birth, Geburt) anzeigen lassen kann. Das für die Ausführung als Nautilus-Action erforderliche Skript ist hier gegeben.
Der Nautilus-Action Parameter ist %F. Damit kann der Befehl im Kontextmenü für beliebig viele Dateien aufgerufen werden.

weiter  Impress odp Dateien als Slideshow starten

Leider lassen sich bis einschließlich LibreOffice 5.2.2.2 Impress-Dateien nicht mit Doppelklick als Show starten. Das speichern als .pps löst zwar das Problem, ist aber prinzipienlos.

Als Nautilus Aktion für odp, ppt und pptx oder für die beiden Mime-Typen application/vnd.oasis.opendocument.presentation und application/mspowerpoint legt man an
Befehl: soffice
Parameter: --show %f
Eventuell müssen Sie ältere Impress-Dateien mit der neuesten LibreOffice-Version einmal neu speichern, damit es klappt, und den Pfad zu Ihren ausführbaren Dateien anpassen.


27.12.2009/19.10.2016

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection