
Ich möchte etwa 100 eindeutig benannte Verzeichnisse erstellen, die alle eine README.md-Datei enthalten. Ich habe versucht, dies mithilfe der Textdatei „PICOCTF.txt“ zu tun, die Folgendes enthält:
vault-door-1
whats a net cat
strings it
Easy1
logon
13
caesar
dont-use-client-side
Bases
First Grep
So Meta
shark on wire 1
extensions
What Lies Within
la cifra de
picobrowser
asm1
Tapping
Flags
Based
Mr-Worldwide
plumbing
vault-door-3
rsa-pop-quiz
Client-side-again
Pitter, Patter, Platters
Web Gauntlet
asm2
m00nwalk
WhitePages
c0rrupt
vault-door-4
like1000
Guessing Game 1
droids0
mus1c
m00nwalk2
waves over lambda
messy-malloc
flag_shop
Investigative Reversing 0
asm3
miniRSA
vault-door-5
reverse_cipher
Irish-Name-Repo 1
shark on wire 2
Guessing Game 2
OTP Implementation
Investigative Reversing 2
droids1
Investigative Reversing 1
WebNet0
vault-door-6
seed-sPRiNG
Irish-Name-Repo 2
1_wanna_b3_a_r0ck5tar
b00tl3gRSA2
asm4
Irish-Name-Repo 3
JaWT Scratchpad
Java Script Kiddie
Need For Speed
Investigative Reversing 4
B1ll_Gat35
droids2
vault-door-7
AES-ABC
Investigative Reversing 3
vault-door-8
droids3
Java Script Kiddie 2
WebNet1
investigation_encoded_1
b00tl3gRSA3
john_pollard
droids4
Forky
investigation_encoded_2
sice_cream
B1g_Mac
zero_to_hero
Auf der Kommandozeile und im Verzeichnis der Textdatei führe ich den Befehl zum Generieren der Verzeichnisse aus:
xargs -a PICOLIST.txt -d '\n' mkdir
oder (beide haben das gleiche Ergebnis)
while read -r line; do mkdir -p "$line" ; done < PICOLIST.txt
Das Erstellen funktioniert, es gibt nur ein kleines Problem. Mir ist klar, dass es das Verzeichnis nur für den Moment erstellt, aber wenn ich es ausführe, erhalte ich Dateien mit einem (null?) Sonderzeichen am Ende. Ich weiß nicht, ob dies ein Problem mit dem Windows-Dateisystem ist, da ich meine Textdatei so formatiert habe, dass alles entfernt wird, was dieses Problem verursachen könnte (zumindest dachte ich das). Zum Beispiel:
Dies geschieht, bevor der Befehl ausgeführt wird:
Dies geschieht, nachdem der Befehl ausgeführt wurde:
Wie Sie sehen, steht nach jedem Ordnernamen ein Sonderzeichen (Sternchen? Nullbyte? Problem beim Entziffern der neuen Zeile in xargs?) ...
Mein Plan ist, den folgenden Code im Terminal auszuführen, aber mit dieser Textdatei:
xargs -a PICOLISTFILL.txt -d '\n' touch
vault-door-1/README.md
whats a net cat/README.md
strings it/README.md
Easy1/README.md
logon/README.md
13/README.md
caesar/README.md
dont-use-client-side/README.md
Bases/README.md
First Grep/README.md
So Meta/README.md
shark on wire 1/README.md
extensions/README.md
What Lies Within/README.md
la cifra de/README.md
picobrowser/README.md
asm1/README.md
Tapping/README.md
Flags/README.md
Based/README.md
Mr-Worldwide/README.md
plumbing/README.md
vault-door-3/README.md
rsa-pop-quiz/README.md
Client-side-again/README.md
Pitter, Patter, Platters/README.md
Web Gauntlet/README.md
asm2/README.md
m00nwalk/README.md
WhitePages/README.md
c0rrupt/README.md
vault-door-4/README.md
like1000/README.md
Guessing Game 1/README.md
droids0/README.md
mus1c/README.md
m00nwalk2/README.md
waves over lambda/README.md
messy-malloc/README.md
flag_shop/README.md
Investigative Reversing 0/README.md
asm3/README.md
miniRSA/README.md
vault-door-5/README.md
reverse_cipher/README.md
Irish-Name-Repo 1/README.md
shark on wire 2/README.md
Guessing Game 2/README.md
OTP Implementation/README.md
Investigative Reversing 2/README.md
droids1/README.md
Investigative Reversing 1/README.md
WebNet0/README.md
vault-door-6/README.md
seed-sPRiNG/README.md
Irish-Name-Repo 2/README.md
1_wanna_b3_a_r0ck5tar/README.md
b00tl3gRSA2/README.md
asm4/README.md
Irish-Name-Repo 3/README.md
JaWT Scratchpad/README.md
Java Script Kiddie/README.md
Need For Speed/README.md
Investigative Reversing 4/README.md
B1ll_Gat35/README.md
droids2/README.md
vault-door-7/README.md
AES-ABC/README.md
Investigative Reversing 3/README.md
vault-door-8/README.md
droids3/README.md
Java Script Kiddie 2/README.md
WebNet1/README.md
investigation_encoded_1/README.md
b00tl3gRSA3/README.md
john_pollard/README.md
droids4/README.md
Forky/README.md
investigation_encoded_2/README.md
sice_cream/README.md
B1g_Mac/README.md
zero_to_hero/README.md
Die beiden von mir verwendeten Textdateien wurden in Notepad++ mit der Einstellung „Unix (LF)“ erstellt.
Jede Hilfe wäre sehr willkommen!
Antwort1
Hypothese: PICOLIST.txt
verwendet DOS/Windows-Zeilenenden (CRLF, \r\n
).
Beide von Ihnen ausprobierten Befehle ( read
, xargs
) erwarten Unix-Zeilenenden (LF, \n
). Sie werden \r
als normale Zeichen behandelt. In Ihrem Fall \r
ist es in der Zeichenfolge enthalten, die mkdir
jedes Mal übergeben wird.
Verwenden Sie dos2unix
es, um die Datei zu konvertieren.
Wenn Sie eine solche Datei in Windows bearbeiten müssen, verwenden Sie einen Editor, der Ihnen erlaubt, Unix-Zeilenenden auszuwählen. Ein Editor mit dieser Fähigkeit kann verwendet werden, anstatt dos2unix
die aktuelle Datei zu korrigieren.
Möglicherweise PICOLISTFILL.txt
ist es ähnlich "fehlerhaft".
Antwort2
Wenn Sie die TXT-Dateien in ihrem Originalformat behalten möchten, können Sie den xargs-Befehlen Folgendes voranstellen:
cat PICOLISTFILL.txt | dos2unix | xargs ...
Wenn dies auf diese Weise erfolgt, benötigt der xargs-Teil weder die Flags „-a“ noch „-d“.