2016-12-21 4 views
2

Ich möchte automatisch meine Home-Ordner von einem externen Laufwerk mit nur einem Skript mounten. Mein System ist Ubuntu 16.04.Bash: Automatisieren von Ordnern zu Hause von anderen Laufwerk

Ich möchte überprüfen, ob Ordner mit dem gleichen Namen wie Ordner in HOME im externen Verzeichnis vorhanden sind, benennen Sie die Ordner in HOME in foldername_local um und mounten Sie den Ordner für externe Verzeichnisse in HOME.

ist dies, wie weit mit Hilfe von Google und Stackoverflow Ich habe:

REMOTE=/path/to/remote/location 

#create a list of external folders  
rLIST=$(find $REMOTE -maxdepth 1 -type d -name [^\.]\* -printf '%f\n'| sed 's:^\./::') 

#create a list of folders in HOME 
hLIST=$(find $HOME -maxdepth 1 -type d -name [^\.]\* -printf '%f\n'| sed 's:^\./::') 

#declare comparison function 
contains() { 
[[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] && exit(0) || exit(1) 
} 

for item in "$rLIST"; do 

if contains hLIST item 
    then 
#rename folder and mount external drive fodlers 
mv $HOME$item $HOME$item_local 
mount --bind $REMOTE$item $HOME$item 
    else 
continue 
fi 

done 

Erstellen der Ordnernamen Listen funktioniert so weit.

Leider funktioniert der Vergleichsteil nicht und ich stecke fest.

Ich freue mich über Ideen, wie Sie das lösen können.

Quellen:
How do I check if a variable exists in a list in BASH
Listing only directories in UNIX

Antwort

0
for item in /path/to/remote/location/*; do 
    dir=${item##*/} 
    [ -d $item ] && [ -d /home/$dir ] && mv /home/$dir /home/${dir}_local && mkdir /home/$dir && mount --bind $item /home/$dir 
done 
+0

Danke für den Hinweis auf [Parameter Expansion] (http://wiki.bash-hackers.org/syntax/pe#substring_removal) –

+0

Leider bekomme ich nur Zeile 10: [: fehlt '] 'und es funktioniert nicht. Zeile 1 ist die Zeile [-d $ Element] -. –

+0

Entschuldigung, ich kann meine eigenen Kommentare noch nicht bearbeiten. Der Fehler bezieht sich auf Zeile 10: [-d $ item] && .... –

Verwandte Themen