wordpress themes | total verfriemelt

Total Verfriemelt

am Rande des Wahnsinns

Posts Tagged ‘ Bash ’

Die Bash Completion wird jeder kennen und lieben gelernt haben, der mal länger in der Shell rumgetippt hat. Die Standardversion kann Dateinamen und Ordner etc. vervollständigen. Das Paket bash-completion lässt sich einfach per Apt, Yum oder pacman installieren. Nach einem re-login stehen die erweiterten Funktionen zur Verfügung. Was ich häufig nutze, ist die Vervollständigung bei ssh Verbindungen. Bash Completion liest die known_hosts aus und ergänzt nach einem ssh TAB TAB den Hostnamen.

Auch sehr schön, wenn man sich Argumente von Befehlen nicht merken kann. Ein find – TAB TAB z.B. gibt folgende Liste aus.

[root@dagan ~]# find -
-amin      -cnewer    -empty     -follow    -fstype    -ilname    -iregex    -maxdepth  -mtime     -noleaf    -print     -regex     -uid       -xdev
-anewer    -ctime     -exec      -fprint    -gid       -iname     -links     -mindepth  -name      -nouser    -print0    -size      -used      -xtype
-atime     -daystart  -false     -fprint0   -group     -inum      -lname     -mmin      -newer     -ok        -printf    -true      -user
-cmin      -depth     -fls       -fprintf   -help      -ipath     -ls        -mount     -nogroup   -perm      -prune     -type      -version
[root@dagan ~]# find -

Sehr nützlich und auf jeder meiner Linuxkisten installiert.

Und jetzt alle Macuser mal aufpassen! Bash-Completion gibt es auch im Macports Repository. Nach installiertem Macports, kann man ebenso bash-completion auf seinem Mac installieren.


bjoerns-macbook:~ bjoern$ sudo port install bash-completion
Password:
--->  Computing dependencies for bash-completion
--->  Fetching bash-completion
--->  Attempting to fetch bash-completion-1.1.tar.gz from http://bash-completion.alioth.debian.org/files/
--->  Verifying checksum(s) for bash-completion
--->  Extracting bash-completion
--->  Applying patches to bash-completion
--->  Configuring bash-completion
--->  Building bash-completion
--->  Staging bash-completion into destroot
--->  Installing bash-completion @1.1_2
To use bash_completion, add the following lines at the end of your .bash_profile:

 if [ -f /opt/local/etc/bash_completion ]; then
 . /opt/local/etc/bash_completion
 fi

--->  Activating bash-completion @1.1_2
--->  Cleaning bash-completion

Ich bin gerade dabei ein VMWare Server2 Backup Script zu schreiben, dass ähnlich funktioniert wie das ghettoVCB. Also eine VM in eingeschalteten Zustand snapshoten, VMDK kopieren und das Snapshot zu löschen. Die letzten 2 Tage musste ich mich etwas mit awk beschäftigen, weil ich aus der Datastore Config in /etc/vmware/hostd/datastores.xml die einzelnen Pfade zu den Lokalen Datastores extrahieren möchte. Jetzt endlich, 2 Tage voller Verzweiflung später hab ich nen Weg gefunden. Bitte seht mir nach, dass ich kein Programmierer bin ;-)

So in etwa wird die Funktion dann im fertigen Script aussehen:

extractDatastores() {
for DATASTORE_PATH in `awk '
//,/<\/LocalDatastores>/ { s=s ORS $0 }
/<\/LocalDatastores>/ { print s }
' /etc/vmware/hostd/datastores.xml | awk '/
/ {stp=index($0,">")+1; \
newstr=substr($0,stp); \
etp=index(newstr,"<"); \
print substr(newstr,0,etp); \
}'`
do
((i++));
echo "Datastore found: $DATASTORE_PATH" #Pfad zum Datastore
done
echo "$i Datastores found" #Anzahl der gefundenen Datastores
}

Man könnte das natürlich auch eleganter lösen, so habe ich aber die größtmögliche Kompatibilität erreicht als wenn ich z.B. Perl einsetze, welches nicht unbedingt automatisch installiert ist... Denke ich... hoffe ich... ;-)

Mal wieder eine große Verfriemelung das Ganze.