DO Kommandozeilenutility

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

DO Kommandozeilenutility

Beitrag von Martin V »

Ich habe über längere Zeit Dinge, die mir in der Eingabeaufforderung/Kommandozeile/Terminal fehlten, in ein kleines Programm namens "DO" gesteckt. Das Programm ist ursprünglich in WDsibyl geschrieben, inzwischen entwickle ich es auch unter Freepascal-Lazarus.

DO 1.99 Downloads:

DO für Windows (32 bit) Archivdatei
DO für Linux 64 bit Archivdatei
DO für MacOS X Archivdatei
DO für OS/2 Archivdatei

Die OS/2 Version ist unter WDsibyl compiliert, ich könnte es aber auch unter Lazarus kompilieren, weil es kein Programm mit graphischer Oberfläche ist.

Es ist ein umfangreiches Sammelsurium an fehlenden oder bislang ungenügend implementierten Kommandozeilenbefehlen und besonders interessant für Computernutzer, die gerne Batchdateien/Shellskripte schreiben.

Code: Alles auswählen

 
DO 1.99a for OS/2 2005-18 Freeware by Martin Vieregg http://www.hypermake.com
        available for Windows, OS/2, Mac and Linux
General Syntax: DO COMMAND [.] [WILDCARD1 WC2...] [COMMANDS] [SINCE:MM-DD-YY] [ATTRIB:ARSH]
DO DISKFREE D: shows the free disk space of disk D:
DO DISKSIZE D: shows the size of disk D:
DO DISKINFO D: shows free disk space and size of disk D: and ?: show all drives
DO LISTDIR  lists all directories
DO SIZE D:\MYDIR  shows the size of all files in the directory (with subdirs)
DO TREE     shows a directory tree
DO LIST     shows full file name of all files
DO LISTSIZE shows full file name and size of all files, LISTSIZEDATE plus date
DO TYPE *.TXT prints all *.TXT files to stdout (with subdirs)
DO SEARCH String1 AND String2  search strings. (operators: AND OR ANDNOT)
DO SEARCHLIST writes only the filename, not the occurences of the string
DO LOWERCASE, UPPERCASE, CAPITAL renames files: file.txt, FILE.TXT, File.txt
DO TIME:HH.MM changes the file time, but remains the file date
DO DATE:MM-DD-YY or DATE:DD.MM.YY changes the file date, but remains time
DO WHICH PROGRAMNAME  shows full filename of progs which will be executed
DO WAIT n   waits for n seconds;  DO WAIT hh:mm   waits for daytime
DO WAITFORDRIVE D: waits for availability of drive D: (floppy or CD-ROM)
DO DELETE    deletes all files. Test with DO LIST!  BE CAREFUL !!!!
For most commands, you can type wildcard filenames. A single dot omits subdirs.
 


Inzwischen passen die Funktionen gar nicht mehr auf eine Bildschirmseite. Man kann auch noch Dateiklone auf der Festplatte finden und löschen und hat einen Ersatz für "copy" oder "xcopy" mit textbasiertem Fortschrittsbalken und Datumsvergleich (nur Dateien, bei denen die Quelle neueren Datums ist, werden kopiert). Außerdem gibt es auch noch spezielle Befehle, bei denen es um Rückgabewerte für Batchdateien (ERRORLEVEL) gibt, so dass man etwa Batchdateien alle 3 Tage ausführen kann oder nur wenn ein Laufwerk verfügbar ist.

Nachdem ich das Problem hatte, Mac-Dateien mit größer 4 GB auf einen Windows-Rechner zu spielen, habe ich in den Copy Befehl noch eine handliche Zerlegefunktion eingebaut, so dass man große Dateien in zerlegter Form auf FAT32 Laufwerken abspeichern und sie dann später mit einem Befehl wieder zusammenbauen kann.

Wer gerne Kommandozeile/Terminal benutzt, der wird das Programm nützlich finden.

Ich würde mich freuen, wenn ihr mir Fehler melden könntet. Die Unix-Versionen (Linux, Mac) sind noch nicht so gut ausgetestet, es kann sein, dass Windows spezifische Funktionen hier noch angepasst werden müssen oder obsolet sind und noch deaktiviert werden müssen. DO SOUND ist bei Unix noch nicht implementiert. DO Which wird nicht supportet, weil es ja den "which" Befehl schon bei Unix gibt.

Ich habe bislang nur eine englische Doku geschrieben, weil ich davon ausgehe, dass jeder, der Kommandozeile/Terminal nutzt, auch englisch kann.

Wegen des Syntax-Konfliktes "do" bei Unix werde ich die Version 2.0 dann wahrscheinlich in "DOO" umbenennen.

Warf
Beiträge: 1907
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: DO Kommandozeilenutility

Beitrag von Warf »

Ich will deine Arbeit jetzt nicht schlecht reden, aber praktisch alles gibt’s schon (für Unix und Windows mit Cygwin):

Code: Alles auswählen

DO DISKFREE D: shows the free disk space of disk D:
DO DISKSIZE D: shows the size of disk D:
DO DISKINFO D: shows free disk space and size of disk D: and ?: show all drives
$> du
DO LISTDIR  lists all directories
$>ls -d
$>find . -type directory #relursiv
DO SIZE D:\MYDIR  shows the size of all files in the directory (with subdirs)
$>ls -Rl
DO TREE     shows a directory tree
$>tree
DO LIST     shows full file name of all files
$>ls | xargs realname
DO LISTSIZE shows full file name and size of all files, LISTSIZEDATE plus date
$>ls | xargs realname | xargs ls -l
DO TYPE *.TXT prints all *.TXT files to stdout (with subdirs)
$>find . -name "*.txt"
DO SEARCH String1 AND String2  search strings. (operators: AND OR ANDNOT)
$>grep -irP regex
DO SEARCHLIST writes only the filename, not the occurences of the string
$>grep -irlP regex
DO LOWERCASE, UPPERCASE, CAPITAL renames files: file.txt, FILE.TXT, File.txt
$> Kombination aus find, mv und sed (oder anderen) zu faul komplett rauszusuchen
DO TIME:HH.MM changes the file time, but remains the file date
DO DATE:MM-DD-YY or DATE:DD.MM.YY changes the file date, but remains time
$> Kombination aus Touch und Date
DO WHICH PROGRAMNAME  shows full filename of progs which will be executed
$>which
DO WAIT n   waits for n seconds;  DO WAIT hh:mm   waits for daytime
$>sleep
DO WAITFORDRIVE D: waits for availability of drive D: (floppy or CD-ROM)
$>bash -c "while not ls /mnt/drive; do sleep 1; done" oder so ähnlich
DO DELETE    deletes all files. Test with DO LIST!  BE CAREFUL !!!!
$>rm


Einige Programme muss man eventuell nachinstallieren, das ist mit paketmanagern aber echt nicht viel aufwand

Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

Re: DO Kommandozeilenutility

Beitrag von Martin V »

Unter Unix gibt es das meiste schon, das ist mir schon klar. Ich habe es ursprünglich für OS/2 geschrieben, und habe damit dann auch diverse Utilities ersetzt, noch damals über die 4 GB Festplattengrenze (nicht Dateigröße...) stolperten (ist schon lange her) und dadurch unbrauchbar wurden. Jetzt ist der Hauptvorteil, dass man Kommandozeilenbefehle unter Windows und Unix mit der gleichen Syntax hat. Standardmäßig wird unter Windows der Unix-Terminalkram noch nicht installiert. Das Programm hat ja noch deutlich mehr Befehle, die nur in der Readme-Datei und nicht in der Bildschirmhilfe enthalten sind. Der XCopy-Ersatz mit Fortschrittsbalken ist mir lange Zeit abgegangen, und auch eine Funktion, große Dateien in 4GB zerlegen zu lassen. (RAR soll das auch haben, aber packt dann auch die Dateien.)

Martin V
Beiträge: 142
Registriert: Sa 30. Jan 2010, 19:35
OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
CPU-Target: xxBit

Re: DO Kommandozeilenutility

Beitrag von Martin V »

Ich habe in den letzten Monaten noch viel Feinschliff gemacht. Neu ist neben der schon erwähnten Copy-Funktion (mit Fortschrittsbalken und Splitt-Funktion bei FAT32-Laufwerken bei großen Dateien) noch ein sortieres Listen von Dateien über Unterverzeichnisse hinweg (alphabetisch, Datum, Dateigröße). Es gab bei Spezialfällen auch noch Abstürze, die sollten jetzt behoben sein. Die OS/2-Version ist mit WDsibyl compiliert, alle anderen Versionen mit Freepascal-Lazarus. Bei Unix gibt es einige Redundanzen, das Programm wurde ursprünglich für OS/2 und Windows entwickelt.

http://www.hypermake.de/deutsch/do.html

Antworten