[UPDATE !] Splitten von Dateien - UPDATE auf 1.3
[UPDATE !] Splitten von Dateien - UPDATE auf 1.3
Hallo,
ich suche ein Tool oder einen Konsolenbefehl für die o.g. Aufgabe. Das Tool sollte unabhängig vom Dateiinhalt und nach Möglichkeit ohne großen Zeitaufwand auch größere Dateien splitten können.
Kennt jemand ein solches Tool oder einen solchen Konsolenbefehl?
Gruß,
RSH
ich suche ein Tool oder einen Konsolenbefehl für die o.g. Aufgabe. Das Tool sollte unabhängig vom Dateiinhalt und nach Möglichkeit ohne großen Zeitaufwand auch größere Dateien splitten können.
Kennt jemand ein solches Tool oder einen solchen Konsolenbefehl?
Gruß,
RSH
Last edited by RSH on Thu 08 Dec 2011, 22:54, edited 8 times in total.
- L18L
- Posts: 3479
- Joined: Sat 19 Jun 2010, 18:56
- Location: www.eussenheim.de/
Splitten von Dateien
Code: Select all
# split --help
Usage: split [OPTION] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-a, --suffix-length=N use suffixes of length N (default 2)
-b, --bytes=SIZE put SIZE bytes per output file
-C, --line-bytes=SIZE put at most SIZE bytes of lines per output file
-d, --numeric-suffixes use numeric suffixes instead of alphabetic
-l, --lines=NUMBER put NUMBER lines per output file
--verbose print a diagnostic just before each
output file is opened
--help display this help and exit
--version output version information and exit
SIZE may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
Report bugs to <bug-coreutils@gnu.org>.
#
http://de.wikipedia.org/wiki/Split_%28Unix%29
Hallo L18L,
danke für Deine schnelle Antwort. Hab's gefunden. Zusammenfügen mit cat.
WOW!
Die Konsole ist wirklich toll. Ist das alles die busybox von Bruce Perens?
Gruß,
RSH
danke für Deine schnelle Antwort. Hab's gefunden. Zusammenfügen mit cat.
Code: Select all
sh-3.00# cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version output version information and exit
With no FILE, or when FILE is -, read standard input.
Examples:
cat f - g Output f's contents, then standard input, then g's contents.
cat Copy standard input to standard output.
Report cat bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report cat translation bugs to <http://translationproject.org/team/>
sh-3.00#
Die Konsole ist wirklich toll. Ist das alles die busybox von Bruce Perens?
Gruß,
RSH
- L18L
- Posts: 3479
- Joined: Sat 19 Jun 2010, 18:56
- Location: www.eussenheim.de/
RSH wrote: Die Konsole ist wirklich toll. Ist das alles die busybox von Bruce Perens?
Code: Select all
# busybox
BusyBox v1.17.2 (2011-10-03 16:04:49 GMT-8) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.
Usage: busybox [function] [arguments]...
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, acpid, addgroup, adduser, ash, basename, bbconfig, beep, blkid,
bunzip2, bzcat, bzip2, cal, cat, chgrp, chmod, chown, chpasswd, chroot,
chvt, cksum, clear, cmp, cp, cpio, crond, crontab, cryptpw, cut, date,
dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay,
diff, dirname, dmesg, dnsdomainname, dos2unix, dpkg, dpkg-deb, du,
dumpkmap, dumpleases, echo, ed, egrep, eject, env, expand, expr, false,
fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find,
findfs, flock, fold, free, freeramdisk, fsync, ftpget, ftpput, fuser,
getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump,
hostid, hostname, httpd, hwclock, id, ifconfig, ifdown, ifplugd, ifup,
init, inotifyd, insmod, ionice, ip, ipaddr, ipcalc, iplink, iproute,
iprule, iptunnel, kbd_mode, kill, killall, klogd, length, less, ln,
loadfont, loadkmap, logger, login, logname, logread, losetup, ls,
lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, man, md5sum,
mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.reiser, mkfs.vfat, mknod,
mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint,
mv, nameif, nc, netstat, nice, nohup, nslookup, od, openvt, passwd,
patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill,
poweroff, printenv, printf, ps, pscan, pwd, rdate, rdev, readahead,
readlink, realpath, reboot, renice, reset, resize, rev, rfkill, rm,
rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, sed, seq,
setconsole, setfont, setkeycodes, setlogcons, sh, sha1sum, sha256sum,
sha512sum, showkey, sleep, sort, split, start-stop-daemon, stat,
strings, stty, su, sulogin, sum, swapoff, swapon, switch_root, sync,
sysctl, syslogd, tac, tail, tar, tee, telnet, test, tftp, time,
timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize,
udhcpc, udhcpd, umount, uname, uncompress, unexpand, uniq, unix2dos,
unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, vi,
vlock, volname, watch, wc, wget, which, whoami, xargs, xz, xzcat, yes,
zcat
#
PROBLEM
Hallo,
die Befehle split und cat funktionieren wunderbar. Arbeite gerade an einem Script, das für ein ISO über Rechtsklick die Möglichkeit zum splitten anbietet und hierbei einen Ordner erstellt mit dem Namen des ISOs im Ordnernamen.
Ordner wird erstellt, ISO wird aufgeteilt. Nur bekomme ich die ISO-teile nicht in den Ordner geschrieben. Wie geht das?
die Befehle split und cat funktionieren wunderbar. Arbeite gerade an einem Script, das für ein ISO über Rechtsklick die Möglichkeit zum splitten anbietet und hierbei einen Ordner erstellt mit dem Namen des ISOs im Ordnernamen.
Ordner wird erstellt, ISO wird aufgeteilt. Nur bekomme ich die ISO-teile nicht in den Ordner geschrieben. Wie geht das?
Code: Select all
#!/bin/bash
# Original Code written for conversion_mp3 by Don White (don570) Aug 2011
# re-used by RSH for rightclick_split_file-1.0 Okt 2011
APPDIR="`dirname $0`"
[ "$APPDIR" = "." ] && APPDIR="`pwd`"
export APPDIR="$APPDIR"
export APPDIR=`dirname $0`
[ $APPDIR = '.' ] && export APPDIR=`pwd`
#set language
TMP="`ls -1 $APPDIR/locals/ | grep ${LANG%.*}`"
. $APPDIR/locals/en_US:english #always run to fill gaps in translation
#fallback to macrolanguage if available (ISO 639-1 two letter code: en, es, fr, etc.)
[ -z $TMP ] && TMP="`ls -1 $APPDIR/locals/ | grep ${LANG%_*}:`" && echo $TMP
[ "$TMP" != "en_US:english" ] && . $APPDIR/locals/$TMP 2> /dev/null
z=`echo "$1" | sed "s/\/$//"`
t="${z%.*}"
DIALOG=Xdialog
$DIALOG --wrap --title "$LOC200" --yesno "$LOC400\n$LOC401\n" 0 0
if [ "$?" -eq "1" ] ;then
exit 0
fi
#------------------------------------------------------------------------------------
# hier passiert es, oder soll es passieren
mkdir "$t.iso.files"
split -b "20m" "$1" "$t.isopart-"
#split -b "20m" "$1" "$t.isopart-" funktioniert, aber ohne die Dateien in den erzeugten Ordner zu schreiben, da sollen sie aber hin
#------------------------------------------------------------------------------------
Xdialog --title "$LOC200" --wrap --screen-center --center --no-buttons --msgbox ". $LOC300 .
$LOC202" 17 65 100
exit 0
- L18L
- Posts: 3479
- Joined: Sat 19 Jun 2010, 18:56
- Location: www.eussenheim.de/
Re: PROBLEM
probier doch mal >RSH wrote:Hallo,
die Befehle split und cat funktionieren wunderbar. Arbeite gerade an einem Script, das für ein ISO über Rechtsklick die Möglichkeit zum splitten anbietet und hierbei einen Ordner erstellt mit dem Namen des ISOs im Ordnernamen.
Ordner wird erstellt, ISO wird aufgeteilt. Nur bekomme ich die ISO-teile nicht in den Ordner geschrieben. Wie geht das?
...
#------------------------------------------------------------------------------------
# hier passiert es, oder soll es passieren
mkdir "$t.iso.files"
split -b "20m" "$1" "$t.isopart-"
#split -b "20m" "$1" "$t.isopart-" funktioniert, aber ohne die Dateien in den erzeugten Ordner zu schreiben, da sollen sie aber hin
#------------------------------------------------------------------------------------
Xdialog --title "$LOC200" --wrap --screen-center --center --no-buttons --msgbox ". $LOC300 .
$LOC202" 17 65 100
exit 0
split -b "20m" "$1" "$t.isopart-" > ordner/datei
und laß bitte den Loc... Quatsch
"$(gettext 'English message that can be translated ')"
ist doch viel netter
Gruß
L
Hallo L18L,
Die "Credits" für den LocQuatsch gehen (sorry, don570) an eben jenen don570. Von ihm ist praktisch die gesamte Datei sowie komplette Ordnerstruktur. Ich übernahm sie, da sie als Rechtsklick-funktion angelegt ist und von der Struktur dem Aufbau in /usr/local/apps/ entspricht. Von mir ist nur der Teil zwischen den gestrichelten Linien. Ich analysiere diese skriptbinären Dateien zuerst einmal, und checke, was passiert, wenn ich etwas ändere und kopiere erst einmal das, womit ich etwas anfangen und worauf ich aufbauen kann. Ich bin also nur (Goethe oder Schiller sagten wohl einmal etwas in der Art) ein "kreativer Dieb".
Zu Deinem Vorschlag:
Ich denke "ordner/datei" ist in diesem Falle "hart codiert". Ich bekomme aber den Namen des ISOs über:
z empfängt wohl den Namen vom Mausklick und konfiguriert/separiert irgend etwas daran und t liefert mir wohl den Pfad incl Dateiname ohne Extension.
In
steht dannn der vollständige Name des ISOs ohne Extension ($t). Der Teil nach dem Punkt ist der Teil, den ich an die Namen der aufgeteilten Dateien anhänge. Aus lupu525.iso wird somit eine Teildatei lupu525.isopart-. Der - dient zum Abtrennen der Counter (aa,ab,ac...zz) die split anhängt.
Ich muß also irgenwie den reinen Dateinamen des ISOs in einer Variablen erhalten und diese Variable bzw. diesen Dateinamen in den kompletten Pfad des erzeugten Ordners bringen.
Meine.Vorstellung war $t.iso.files (der erzeugte Ordner) mit $t.isopart- (der Name einer geteilten Datei) zu kombinieren, a'la: "$t.iso.files/$t.isopart-" oder auch "$t.iso.files%$t.isopart-". Was aber nicht funktionieren kann, wie mir später auffiel. Denn der komplette Pfadname steckt ja in beiden "$t". Ich schreibe die Dateien auf diese Weise also bestenfalls ins Nirgendwo - wenn überhaupt.
Es gibt sicher eine Funktion, mit der man Teile eines Pfad- und Dateinamens aus demselben in einer Variablen speichern und dann in einen anderen String (Pfadnamen) einfügen kann. Aber ich kenne die leider nicht.
Vielleicht weißt Du weiter?
Gruß, RSH
P.S.
Trotz dem ganzen LocQuatsch finde ich die Arbeiten von don570 wirklich gut. Er hat z.B. ein schönes Rightclick-Tool erstellt, daß Du Dir 'mal ansehen solltest. http://murga-linux.com/puppy/viewtopic.php?t=67013
Zuerst kurz zu dem "Loc... Quatsch" und zu meiner allgemeinen Herangehens- und Arbeitsweise:probier doch mal >
split -b "20m" "$1" "$t.isopart-" > ordner/datei
und laß bitte den Loc... Quatsch
"$(gettext 'English message that can be translated ')"
ist doch viel netter.
Die "Credits" für den LocQuatsch gehen (sorry, don570) an eben jenen don570. Von ihm ist praktisch die gesamte Datei sowie komplette Ordnerstruktur. Ich übernahm sie, da sie als Rechtsklick-funktion angelegt ist und von der Struktur dem Aufbau in /usr/local/apps/ entspricht. Von mir ist nur der Teil zwischen den gestrichelten Linien. Ich analysiere diese skriptbinären Dateien zuerst einmal, und checke, was passiert, wenn ich etwas ändere und kopiere erst einmal das, womit ich etwas anfangen und worauf ich aufbauen kann. Ich bin also nur (Goethe oder Schiller sagten wohl einmal etwas in der Art) ein "kreativer Dieb".
Zu Deinem Vorschlag:
Ich denke "ordner/datei" ist in diesem Falle "hart codiert". Ich bekomme aber den Namen des ISOs über:
Code: Select all
z=`echo "$1" | sed "s/\/$//"`
t="${z%.*}"
In
Code: Select all
$t.isopart-
Ich muß also irgenwie den reinen Dateinamen des ISOs in einer Variablen erhalten und diese Variable bzw. diesen Dateinamen in den kompletten Pfad des erzeugten Ordners bringen.
Meine.Vorstellung war $t.iso.files (der erzeugte Ordner) mit $t.isopart- (der Name einer geteilten Datei) zu kombinieren, a'la: "$t.iso.files/$t.isopart-" oder auch "$t.iso.files%$t.isopart-". Was aber nicht funktionieren kann, wie mir später auffiel. Denn der komplette Pfadname steckt ja in beiden "$t". Ich schreibe die Dateien auf diese Weise also bestenfalls ins Nirgendwo - wenn überhaupt.
Es gibt sicher eine Funktion, mit der man Teile eines Pfad- und Dateinamens aus demselben in einer Variablen speichern und dann in einen anderen String (Pfadnamen) einfügen kann. Aber ich kenne die leider nicht.
Vielleicht weißt Du weiter?
Gruß, RSH
P.S.
Trotz dem ganzen LocQuatsch finde ich die Arbeiten von don570 wirklich gut. Er hat z.B. ein schönes Rightclick-Tool erstellt, daß Du Dir 'mal ansehen solltest. http://murga-linux.com/puppy/viewtopic.php?t=67013
Ich habe Dir mal die in PASCAL vorhandenen Stringfunktionen aufgeschrieben. Vielleicht hilft das noch zusätzlich.
concat
verknüpft beliebig viele Zeichen oder Strings miteinander
Aufruf:
s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
insert
fügt einen String an einer beliebigen Stelle in einen String ein
Aufruf:
s1::'Hallo RSH';
s2:='User';
insert(s2,s1,Position)
die Position kann mit "pos" ermittelt werden
position:integer;
position:=pos(' RSH',s1) ergibt 6 (die Position des Leerzeichens)
insert(s2,s1,Position) ergibt also "Hallo User RSH".
Alles klar?
Gruß, RSH
concat
verknüpft beliebig viele Zeichen oder Strings miteinander
Aufruf:
s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
insert
fügt einen String an einer beliebigen Stelle in einen String ein
Aufruf:
s1::'Hallo RSH';
s2:='User';
insert(s2,s1,Position)
die Position kann mit "pos" ermittelt werden
position:integer;
position:=pos(' RSH',s1) ergibt 6 (die Position des Leerzeichens)
insert(s2,s1,Position) ergibt also "Hallo User RSH".
Alles klar?
Gruß, RSH
- L18L
- Posts: 3479
- Joined: Sat 19 Jun 2010, 18:56
- Location: www.eussenheim.de/
shell:RSH wrote: s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
Code: Select all
# s1='User'
# s2='RSH'
# echo "$s1 $s2"
User RSH
#
Code: Select all
s1$='User'
s2$='RSH'
CONCAT$(s1$, " ", s2$)
position:=pos(' RSH',s1) ergibt 6 (die Position des Leerzeichens)
Code: Select all
pos=INSTR("Hallo RSH", " RSH")
Code: Select all
"$t.iso.files/$t.isopart-"
Vielleicht so? Name der Variablen in geschweifter Klammer{}
Code: Select all
"${t}.iso.files/${t}.isopart-"
Das ist ja die reinste Code-Battle hier...
Variabler Name ist: $t. denn dieser Teil wird während des Programmlaufs ermittelt, während iso.files bzw. isopart meine (hart codierten) Vorgaben sind also nicht während des Programmlaufs ermittelt werden. Diese bleiben immer als iso.files oder ispart im Ordner bzw. Dateinamen einer gesplitteten Datei. $t. ist jedoch inhaltlich mit der Datei unter meinem Rechtsklick gefüllt (also Pfad- und Dateiname dort abgespeichert).
Zur Erklärung: eine Variable, im SInne von PASCAL, ist einfach nur ein Speicherplatz für einen zuvor zu definierenden Datentyp. Der Datentyp String z.B. ist ein Standard-datentyp und muß somit nicht mehr definiert werden. In der Anwendung bedeutet dies, das ich den jeweiligen Wert einer Variablen während des Programmlaufs nicht nur auslesen sondern auch beliebig oft beschreiben und somit damit arbeiten kann (variabel eben, nicht konstant oder "hart codiert").
Natürlich nur solange, wie ich dem vereinbarten Datentyp bei der Verarbeitung entspreche.
Nach meinem Verständnis bringt die Zeile "User RSH" auf den Bildschirm. Sie soll aber irgendwo gespeichert sein, sodaß ich den Wert auslesen, verändern und wieder dorthin speichern kann.
Vielleicht in der Art: echo rueckgabe="$s1 $s2"
???
Und dann müßte ich in rueckgabe eine position (pos) ermitteln köönen, um dort Teile des Strings löschen und neue Stringteile einfügen zu können.
Also z.B. delete(s1,pos,4)
Lösche aus s1 ab pos (5) 4 Zeichen - aus "User RSH" wird "User".
Und dann eben wieder insert(s1,s2,pos).
Ich benötige ja für das zu schreibende ISO den Pfad- und ISO-Dateinamen, für die auszulesenden Dateien im jeweiligen Ordner benötige ich aber den vollständigen Pfad des Ordners mit den gesplitteten Dateien sowie den Teil des Dateinamens einer gesplitteten Datei, den ich beim splitten angehängt habe (der Teil vor dem Counter, den split anhängt).
Nur dann bin ich über den Rechtsklick so frei, jedes irgendwo steckende ISO splitten und jeden sonstwo steckenden Ordner mit gesplitteten Dateien wieder in ein ISO verwandeln zu können.
Tja
Variabler Name ist: $t. denn dieser Teil wird während des Programmlaufs ermittelt, während iso.files bzw. isopart meine (hart codierten) Vorgaben sind also nicht während des Programmlaufs ermittelt werden. Diese bleiben immer als iso.files oder ispart im Ordner bzw. Dateinamen einer gesplitteten Datei. $t. ist jedoch inhaltlich mit der Datei unter meinem Rechtsklick gefüllt (also Pfad- und Dateiname dort abgespeichert).
Zur Erklärung: eine Variable, im SInne von PASCAL, ist einfach nur ein Speicherplatz für einen zuvor zu definierenden Datentyp. Der Datentyp String z.B. ist ein Standard-datentyp und muß somit nicht mehr definiert werden. In der Anwendung bedeutet dies, das ich den jeweiligen Wert einer Variablen während des Programmlaufs nicht nur auslesen sondern auch beliebig oft beschreiben und somit damit arbeiten kann (variabel eben, nicht konstant oder "hart codiert").
Natürlich nur solange, wie ich dem vereinbarten Datentyp bei der Verarbeitung entspreche.
Nach meinem Verständnis bringt
Code: Select all
# s1='User'
# s2='RSH'
# echo "$s1 $s2"
User RSH
#
Vielleicht in der Art: echo rueckgabe="$s1 $s2"
???
Und dann müßte ich in rueckgabe eine position (pos) ermitteln köönen, um dort Teile des Strings löschen und neue Stringteile einfügen zu können.
Also z.B. delete(s1,pos,4)
Lösche aus s1 ab pos (5) 4 Zeichen - aus "User RSH" wird "User".
Und dann eben wieder insert(s1,s2,pos).
Ich benötige ja für das zu schreibende ISO den Pfad- und ISO-Dateinamen, für die auszulesenden Dateien im jeweiligen Ordner benötige ich aber den vollständigen Pfad des Ordners mit den gesplitteten Dateien sowie den Teil des Dateinamens einer gesplitteten Datei, den ich beim splitten angehängt habe (der Teil vor dem Counter, den split anhängt).
Nur dann bin ich über den Rechtsklick so frei, jedes irgendwo steckende ISO splitten und jeden sonstwo steckenden Ordner mit gesplitteten Dateien wieder in ein ISO verwandeln zu können.
Tja
Code: Select all
#!/bin/sh
FILE=test.iso
DIR=test
split -b "20m" $FILE ./$DIR/$FILE-
Für die Kommandozeile kann "mysplit" nützlich sein:
Code: Select all
#!/bin/sh
split -b "20m" $1 ./$2/$1-
Huuuh,
bis ich das alles abgearbeitet habe, werde ich erst einmal "mein" unrsprüngliches Skript verwenden. So oft muß ich keine größeren Dateien splitten und für den Zusammenbau habe ich ein Skript geschrieben, das ich mit in den Ordner kopiere. Mit einem Klick auf dieses Skript, das natürlich für jedes aufgeteilte ISO manuell angepaßt werden muß, wird das ISO im selben Ordner wieder zusammengesetzt.
Bis ich ein tragfähiges Resultat für meine eigentliche Idee der Umsetzung oder (wahrscheinlich eher) noch Fragen habe, melde ich mich wieder.
Bis dahin erst einmal vielen Dank, für Deine aktive Beteiligung, L18L und natürlich auch an Dich, emil.
Gruß, RSH
bis ich das alles abgearbeitet habe, werde ich erst einmal "mein" unrsprüngliches Skript verwenden. So oft muß ich keine größeren Dateien splitten und für den Zusammenbau habe ich ein Skript geschrieben, das ich mit in den Ordner kopiere. Mit einem Klick auf dieses Skript, das natürlich für jedes aufgeteilte ISO manuell angepaßt werden muß, wird das ISO im selben Ordner wieder zusammengesetzt.
Bis ich ein tragfähiges Resultat für meine eigentliche Idee der Umsetzung oder (wahrscheinlich eher) noch Fragen habe, melde ich mich wieder.
Bis dahin erst einmal vielen Dank, für Deine aktive Beteiligung, L18L und natürlich auch an Dich, emil.
Gruß, RSH
Hallo,
da bin ich wieder. Ich denke, ich habe nun den ungefähren Überblick, was ich zu tun habe. Ich benötige allerdings noch ein paar Equivalente zu einigen PASCAL-funktionen. Helfen würde sicher auch ein Hinweis, wo ich eine Befehlsübersicht dieser Skriptsprache finde (wie heißt diese Skriptsprache eigentlich?).
Also, bekommen habe ich bisher folgende Funktionen:
Gruß, RSH
da bin ich wieder. Ich denke, ich habe nun den ungefähren Überblick, was ich zu tun habe. Ich benötige allerdings noch ein paar Equivalente zu einigen PASCAL-funktionen. Helfen würde sicher auch ein Hinweis, wo ich eine Befehlsübersicht dieser Skriptsprache finde (wie heißt diese Skriptsprache eigentlich?).
Also, bekommen habe ich bisher folgende Funktionen:
benötigt wird noch:PASCAL: (strings zusammenfügen)
s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
Equivalent:
s1='User'
s2='RSH'
echo "$s1 $s2"
ergibt den String bzw. die Zeichenkette "User RSH"
speichern tue ich es dann wohl mit s=echo "$s1 $s2" (o.s.ä. bitte einmal genau hinsehen - syntax, fehlende zeichen? " ' ' usw.?)
PASCAL: (position eines zeichens ermitteln)
position:=pos(' RSH',s1) position enthält 6 (die Position des Leerzeichens)
Equivalent:
pos=INSTR("Hallo RSH", " RSH") ergibt 6 (die Position des Leerzeichens)
Hoffe, jemand kann mir weiterhelfen. Vielleicht L18L?
PASCAL:
n:=length(s1) n beinhaltet dann den wert 4, die Länge des Strings s1
delete(s1,start,anz)
delete(s1,3,2) ergibt den String "Us" (ab 3. Stelle zwei Zeichen gelöscht)
insert(s1,'n',2) aus s1 (User) wird s1 (Unser)
Gruß, RSH
es langt s="$s1 $s2".speichern tue ich es dann wohl mit s=echo "$s1 $s2"
Bezüglich Zeichenanzahl und String teilen, helfen dir vielleicht diese paar Zeilen weiter:
Code: Select all
#test2.sh
file="savefile.3fs"
echo "file="$file
count=${#file}
num=$[${#file}-4]
extnum=$[$count-$num]
echo "count="$count
echo "num="$num
echo "extnum="$extnum
echo "ext="${file:$num}
echo "name="${file:0:$num}
ext=${file:$num}
name=${file:0:$num}
#.BKP-`date +%y.%m.%d-%H.%M`
a=$name".BKP`date +%y%m%d-%H.%M`"$ext
echo "a="$a
Advanced Bash-Scripting Guide und Bash Guide for Beginners weiter. Findest du u. a. hier. Auch dieser Thread könnte interessant für dich sein.
Hoffe mal wieder, es hilft etwas,
Rolf
Ich verwende "frugal", und das ist gut so. :wink:
Raspberry Pi without Puppy? No, thanks.
Raspberry Pi without Puppy? No, thanks.
Hallo, rhadon.
Ooohhhhh, das wird es ganz sicher. Man sollte nicht um Hlfe bitten, es könnte in Arbeit ausarten.
Habe mir die Links gerade mal angesehen und gleich ein paar .pdf heruntergeladen. Die werde ich am Montag erstmal ausdrucken und dann kann ich auf gewohnte Weise arbeiten - nämlich mit gedruckter Dokumentation. Ist doch irgendwie besser und geht schneller, als das nervige durch-tausende-von-Fenstern-geklicke, auf der Suche nach Funktionen.
Ich war mit diesem Thema auch im englischsprachigen Teil unterwegs und erhielt dort auch einige nützliche Hinweise, so daß ich zuversichtlich bin, mit der nun zur Verfügung stehenden Information und Dokumentation mein Vorhaben verwirklichen zu können. Das .pet gibt's dann irgendwann hier.
Danke an Dich, emil, PANZERKOPF, big_bass und besonders L18L
Ooohhhhh, das wird es ganz sicher. Man sollte nicht um Hlfe bitten, es könnte in Arbeit ausarten.
Habe mir die Links gerade mal angesehen und gleich ein paar .pdf heruntergeladen. Die werde ich am Montag erstmal ausdrucken und dann kann ich auf gewohnte Weise arbeiten - nämlich mit gedruckter Dokumentation. Ist doch irgendwie besser und geht schneller, als das nervige durch-tausende-von-Fenstern-geklicke, auf der Suche nach Funktionen.
Ich war mit diesem Thema auch im englischsprachigen Teil unterwegs und erhielt dort auch einige nützliche Hinweise, so daß ich zuversichtlich bin, mit der nun zur Verfügung stehenden Information und Dokumentation mein Vorhaben verwirklichen zu können. Das .pet gibt's dann irgendwann hier.
Danke an Dich, emil, PANZERKOPF, big_bass und besonders L18L
Hallo,
das war ein kleines Stück Arbeit, aber es ist vollbracht. Ich darf vorstellen: rightclick_split_file-1.0.pet, ein Tool, mit dem man über einen Rechtsklick beliebige Dateien splitten (aufteilen) kann. Dabei ist es völlig egal, wo diese Dateien sich befinden. Es kann immer nur eine Datei aufgeteilt werden. Vordefiniert sind .iso, .sfs, .mpg (video) und .avi (msvideo) Dateien.
Um diese Funktion auch auf andere Dateien anwenden zu können, einfach den "Split File"-Link im Ordner /root/.config/rox.sourceforge.net/OpenWith/.application_x-cd-image in den gewünschten Ordner in /root/.config/rox.sourceforge.net/OpenWith kopieren. Aber ich denke, mit den vordefinierten Dateitypen, sind die wichtigsten abgedeckt.
Das Tool erstellt dort, wo sich die Datei befindet, einen Ordner mit dem Namen der Datei sowie dem Anhängsel .files. Im Ordner werden die Dateien mit dem Originalnamen sowie dem Anhängsel .part- gespeichert. Dieser Name erhält noch ein Anhängsel, das durch das splitten entsteht und eine fortlaufende Buchstabenkombination enthält (aa,ab,ac,ad...). Dies, damit klar ist, in welcher Reihenfolge die Dateien wieder zusammengefügt werden.
Aus Name.iso werden also der Ordner Name.iso.files und die Teildateien Name.iso.part-aa, ...-ab, ...-ac usw.
Im Ordner wird zusätzlich ein Skript erstellt, das den Befehl zum Zusammenbau der ursprünglichen Datei enthält. Dieses Skript wird durch einen einfachen Mausklick ausgeführt und erstellt danach die ursprüngliche Datei im übergeordneten Verzeichnis.
Das Script ist vollständig kommentiert, in englisch und deutsch, so daß sich garantiert auch ein Blick in's Innere desselben lohnt. Als ROX-App angelegt, findet man das Script natürlich unter /usr/local/split_file.
Danke an: big_bass, don570, emil, L18L, PANZERKOPF & rhadon; Ihr seid im Script verewigt.
Grüße an alle,
RSH
das war ein kleines Stück Arbeit, aber es ist vollbracht. Ich darf vorstellen: rightclick_split_file-1.0.pet, ein Tool, mit dem man über einen Rechtsklick beliebige Dateien splitten (aufteilen) kann. Dabei ist es völlig egal, wo diese Dateien sich befinden. Es kann immer nur eine Datei aufgeteilt werden. Vordefiniert sind .iso, .sfs, .mpg (video) und .avi (msvideo) Dateien.
Um diese Funktion auch auf andere Dateien anwenden zu können, einfach den "Split File"-Link im Ordner /root/.config/rox.sourceforge.net/OpenWith/.application_x-cd-image in den gewünschten Ordner in /root/.config/rox.sourceforge.net/OpenWith kopieren. Aber ich denke, mit den vordefinierten Dateitypen, sind die wichtigsten abgedeckt.
Das Tool erstellt dort, wo sich die Datei befindet, einen Ordner mit dem Namen der Datei sowie dem Anhängsel .files. Im Ordner werden die Dateien mit dem Originalnamen sowie dem Anhängsel .part- gespeichert. Dieser Name erhält noch ein Anhängsel, das durch das splitten entsteht und eine fortlaufende Buchstabenkombination enthält (aa,ab,ac,ad...). Dies, damit klar ist, in welcher Reihenfolge die Dateien wieder zusammengefügt werden.
Aus Name.iso werden also der Ordner Name.iso.files und die Teildateien Name.iso.part-aa, ...-ab, ...-ac usw.
Im Ordner wird zusätzlich ein Skript erstellt, das den Befehl zum Zusammenbau der ursprünglichen Datei enthält. Dieses Skript wird durch einen einfachen Mausklick ausgeführt und erstellt danach die ursprüngliche Datei im übergeordneten Verzeichnis.
Das Script ist vollständig kommentiert, in englisch und deutsch, so daß sich garantiert auch ein Blick in's Innere desselben lohnt. Als ROX-App angelegt, findet man das Script natürlich unter /usr/local/split_file.
Danke an: big_bass, don570, emil, L18L, PANZERKOPF & rhadon; Ihr seid im Script verewigt.
Grüße an alle,
RSH
- Attachments
-
- rightclick_split_file-1.0.pet
- Dateien über einen Rechtsklick splitten (split files with rigth-click-action)
- (9.59 KiB) Downloaded 469 times
Hallo.
Update: 07.12.2011
rightclick_split_file-1.3.pet baut nun ein wesentlich komfortableres Script zum Zusammenbau der Originaldatei.
- Meldung nach getaner Arbeit
- Rebuild Script nun nach der Originaldatei benannt (plus: .sh)
- die Originaldatei wird nun im Verzeichnis der Dateiteile zusammengebaut
- die Originaldatei kann nun an jedem beliebigen Ort zusammengebaut werden (solange die Dateiteile und das Rebuild Script im selben Verzeichnis gespeichert sind)
RSH
Update: 07.12.2011
rightclick_split_file-1.3.pet baut nun ein wesentlich komfortableres Script zum Zusammenbau der Originaldatei.
- Meldung nach getaner Arbeit
- Rebuild Script nun nach der Originaldatei benannt (plus: .sh)
- die Originaldatei wird nun im Verzeichnis der Dateiteile zusammengebaut
- die Originaldatei kann nun an jedem beliebigen Ort zusammengebaut werden (solange die Dateiteile und das Rebuild Script im selben Verzeichnis gespeichert sind)
RSH
- Attachments
-
- rightclick_split_file-1.3.pet
- (10.18 KiB) Downloaded 786 times
[b][url=http://lazy-puppy.weebly.com]LazY Puppy[/url][/b]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]
[b][url=http://rshs-dna.weebly.com]RSH's DNA[/url][/b]
[url=http://murga-linux.com/puppy/viewtopic.php?t=91422][b]SARA B.[/b][/url]
Ich legte das Puppy pet Paket in der 'Utilities'-Bereich
Ich legte das Puppy pet Paket in der 'Utilities'-Bereich des Forums.
Es hat eine Menge Potenzial.
Es hilft den Nutzern, die ihre eigenen Puppy ISO zu erstellen
and darauf verteilen.
http://murga-linux.com/puppy/viewtopic. ... 066#652066
__________________________
Es hat eine Menge Potenzial.
Es hilft den Nutzern, die ihre eigenen Puppy ISO zu erstellen
and darauf verteilen.
http://murga-linux.com/puppy/viewtopic. ... 066#652066
__________________________