Stellt ein Programm vor, um Dateien auf einen Remote-Server zu kopieren und eine URL zum Teilen in Bash zu erhalten.
Nach dem Kopieren von lokalen Dateien auf einen Remote-Server wird die URL in die Zwischenablage kopiert. Praktisch, wenn man Textdateien oder Mediendateien schnell teilen möchte. Der Servername ist für meine Xserver-Umgebung, also bitte entsprechend ändern.
# Dateien auf Remote-Server kopieren und URL zum Teilen erhalten z.B. Bilder,Videos,Dateien,etc
sharefile(){
: e.g. sharefile "/mnt/e/_downloads/MOV_0070.mp4"
# filepath="/mnt/e/_downloads/MOV_0070.mp4"
filepath=$(realpath "$1")
cp "${filepath}" "${filepath}.tmp"
filedir=$(dirname "$filepath")
filename=$(basename -- "$filepath")
extension="${filename##*.}"
random=$(random|chomp)
if [[ $string =~ .*\..* ]]
then
mv "$filepath" "$filedir/${random}"
newFilepath="$filedir/${random}"
newFilename="${random}"
touch "${filedir}/${filename} is ${random}.is.tag"
else
mv "$filepath" "$filedir/${random}.$extension"
newFilepath="$filedir/${random}.$extension"
newFilename="${random}.$extension"
# set -x
touch "${filedir}/${filename} is ${random}.${extension}.is.tag"
# set +x
fi
rsync -e 'ssh -p 10022 -i ~/.ssh/yuis.key' -r "${newFilepath}" [email protected]:"~/yuis.xsrv.jp/public_html/data/"
mv "${filepath}.tmp" "${filepath}"
echo "https://yuis.xsrv.jp/data/${newFilename}" | clip && printf "\n\n${blu}https://yuis.xsrv.jp/data/${newFilename}${end} is clipped.\n\n"
}
Dieses Shell-Skript definiert eine Funktion sharefile, um Dateien auf einen Remote-Server zu kopieren und eine URL zum Teilen zu erhalten. Im Folgenden finden Sie eine schrittweise Erklärung, wie das Skript funktioniert.
-
Die Funktion
sharefilewird definiert. Diese Funktion nimmt einen Dateipfad als Argument. -
filepath=$(realpath "$1"): Ruft den übergebenen Dateipfad ab und speichert ihn in$filepath. Der Befehlrealpathkonvertiert relative Pfade in absolute Pfade. -
cp "${filepath}" "${filepath}.tmp": Kopiert die Originaldatei und erstellt eine temporäre Datei mit der Erweiterung.tmp. Dies sichert die Originaldatei vorübergehend. -
filedir=$(dirname "$filepath"): Speichert den Verzeichnispfad der Datei infiledir. -
filename=$(basename -- "$filepath"): Speichert den Basisnamen (Dateinamen) der Datei infilename. -
extension="${filename##*.}": Speichert die Dateierweiterung inextension. Diese Zeile führt eine Reihe von String-Operationen aus, um die Erweiterung zu extrahieren. -
random=$(random|chomp): Erzeugt eine zufällige Zeichenkette und speichert sie in der Variablenrandom. Da die Funktionrandomjedoch im Skript nicht definiert ist, wird diese Zeile einen Fehler erzeugen. -
if [[ $string =~ .*\..* ]]: Eine bedingte Anweisung beginnt, aber$stringist im Skript nicht definiert, daher enthält diese eine unbekannte Variable. Der Zweck dieser bedingten Anweisung ist unklar. -
mv "$filepath" "$filedir/${random}": Benennt die Originaldatei in einen zufälligen Namen um. Nach der Umbenennung wird der neue Dateipfad innewFilepathund der neue Dateiname innewFilenamegespeichert. Außerdem wird der Befehltouchverwendet, um die Datei zu taggen. -
rsync -e 'ssh -p 10022 -i ~/.ssh/yuis.key' -r "${newFilepath}" [email protected]:"~/yuis.xsrv.jp/public_html/data/": Verwendet den Befehlrsync, um die neue Datei auf den Remote-Server zu kopieren. Dieser Befehl verbindet sich über SSH und kopiert die Datei in das angegebene Remote-Verzeichnis. -
mv "${filepath}.tmp" "${filepath}": Stellt die vorübergehend erstellte Sicherungsdatei (mit.tmp-Erweiterung) auf den ursprünglichen Dateinamen wieder her. -
echo "https://yuis.xsrv.jp/data/${newFilename}" | clip && printf "\n\n${blu}https://yuis.xsrv.jp/data/${newFilename}${end} is clipped.\n\n": Gibt die freigegebene URL der neuen Datei aus und kopiert sie in die Zwischenablage. Zeigt auch eine Nachricht an, aber${blu}und${end}repräsentieren Farbcodes, die verwendet werden, um die Textfarbe zu ändern.
Wie oben beschrieben, definiert dieses Shell-Skript eine Funktion sharefile, um Dateien auf einen Remote-Server zu kopieren und eine URL zum Teilen zu erhalten. Diese Funktion nimmt einen Dateipfad als Argument. Um diese Funktion zu verwenden, gehen Sie wie folgt vor:
sharefile "/mnt/e/_downloads/MOV_0070.mp4"