====== upload.bash ======
Aus irgendwelchen Gründen werden die Berechtigungen auf dem Server falsch gesetzt, wenn von Windows aus mit scp ganze Ordner kopiert werden.
Folgendes bash-script kopiert den aktuellen Ordner rekursiv (d.h. mit allen Unterordnern) und setzt danach die Berechtigungen korrekt. Dieses soll als ''~/bin/upload.bash'' gepeichert werden. Die Tilda (~) steht für Ihr Home-Verzeichnis, normalerweise ''C:\Users\hans.muster'' (grafisch wird ''Users'' oft auch als ''Benutzer'' angezeigt). Entweder speichern Sie untenstehenden Datei mit ''Rechtklick->Link speichern unter'' direkt am richtigen Ort (eventuell ist das Verzeichnis ''bin'' noch anzulegen), oder
gehen Sie dazu wie folgt vor:
* git-bash öffnen (oder Powershell geht auch).
* geben Sie folgende Kommandos ein:
cd
mkdir -p bin
code bin/upload.bash
Kopieren Sie dann folgenden Inhalt in die Datei:
# Dieses bashscript kopiert den aktuellen Ordner
# rekursiv auf den Server.
# Optional kann ein Zielordner angegeben werden.
PFAD=$(pwd)
#echo Pfad ist ${PFAD}
DIR=$(basename "${PFAD}")
#echo Dir ist ${DIR}
HOME=`realpath ~`
if [ "$HOME" = "$PFAD" ]; then
echo "Oops! Sie befinden sich im Verzeichnis $PFAD."
echo "Dieses Verzeichnis wird nicht auf den Server kopiert!"
echo "Wechseln Sie in das zu kopierende Verzeichnis!"
exit
fi
# Entweder . (HOME) oder Argument als Zielordner
if [ -z $1 ]; then
TARGET="."
else
TARGET="$1"
fi
#echo Target ist ${TARGET}
if [ "." != "${TARGET}" ]; then
echo "ensuring target ${TARGET} exists"
echo ssh ofi mkdir -p "\"${TARGET}\""
ssh ofi mkdir -p "\"${TARGET}\""
fi
echo "Copying..."
echo scp -r "${PFAD}" "ofi:${TARGET}"
scp -r "${PFAD}" "ofi:${TARGET}"
echo "Adjusting permissions..."
echo ssh ofi chmod -R u+rwX,go+rX,go-w "${TARGET}/${DIR}"
ssh ofi chmod -R u+rwX,go+rX,go-w "${TARGET}/${DIR}"
* Speichern Sie dann die Datei (File -> Save) oder einfacher Ctrls.
===== Anwendungsbeispiele =====
upload.bash # Lädt das ganze aktuelle lokale Verzeichnis mit allen Unterverzeichnissen auf den Server hoch, in ein Verzeichnis mit gleichem Namen
upload.bash hello # Lädt das ganze aktuelle lokale Verzeichnis mit allen Unterverzeichnissen auf den Server hoch, als Unterverzeichnis im Verzeichnis hello (das nötigenfalls angelegt wird).
==== Ganzer Ordner kopieren ====
Voraussetzung: Sie haben den Ordner mit dem Code der aktuellen Webseite in Visual Studio Code geöffnet. Nehmen wir an, dieser Ordner heisse ''humpfdidumpf''.
* Öffnen Sie ein git-bash Terminal in Visual Studio Code: {{:lehrkraefte:blc:informatik:glf24:web:pasted:20250403-095623.png}}
* geben Sie das neue Kommando ''upload.bash'' ein.
* Der ganze Inhalt vom aktuellen Verzeichnis ''humpfdidumpf'' wird auf den Server in den Ordner ''humpfdidumpf'' kopiert und die Berechtigungen auf dem Server automatisch gesetzt.
==== Ganzer Unterordner kopieren ====
Voraussetzung: Sie haben den Ordner mit dem Code der aktuellen Webseite in Visual Studio Code geöffnet. Nehmen wir an, dieser Ordner heisse ''humpfdidumpf''.
Sie möchten den Unterordner ''images'' kopieren.
* Öffnen Sie ein Terminal in Visual Studio Code (Menu ''Teminal->New Terminal'')
* wechseln Sie im Terminal ins Verzeichnis ''images'' mit dem Kommando ''cd images''.
* geben Sie das neue Kommando ''upload.bash humpfdidumpf'' ein.
* Der ganze Inhalt vom aktuellen Verzeichnis ''images'' wird auf den Server in den Ordner ''humpfdidumpf'' kopiert und die Berechtigungen auf dem Server automatisch gesetzt.
==== Default Terminal auf git-bash setzen ====
{{:lehrkraefte:blc:informatik:glf24:web:pasted:20250512-205115.png}} [[https://stackoverflow.com/questions/44435697/change-the-default-terminal-in-visual-studio-code|Quelle]]