"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Nützliche Shell-Einzeiler

COLOSSUS 08.07.2010 - 19:11 18719 39 Thread rating
Posts

issue

Rock and Stone, brother!
Avatar
Registered: Feb 2003
Location: Linz
Posts: 3599
Tatsache!
Code:
issue ~/flame/mozilla-profile/profile/9td2rfwf.default $ for i in {1..8};do yes > /dev/null &;done 
bash: syntax error near unexpected token `;'

Wusste ich nicht, thx!

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4420
Zitat von COLOSSUS
Statt des klassichen Pipe-Konstrukts
Code:
find ... | xargs <programm> <prog_args>
verwendet man besser
Code:
find ... -exec <programm> <prog_args> {} +

`find` ersetzt dabei die Zeichenfolge {} mit der Liste der gefundenen Pfadnamen, und zwar in einer Art und Weise, die auch bei exotischen Dateinamen (mit '\n' und dergleichen im Pfadnamen) nicht bricht. Auszerdem spart man sich einen zusaetzlichen Prozess ;)
Cool, das '+' bei find kannte ich nicht. Es gibt aber auch bei find/xargs combo eine Moeglichkeit die "filename safety" zu gewaehrend:
Code:
find ... -print0 | xargs -0 ...
Ich verwend aus anderen gruenden auch xargs: ich kann Programme parallel starten und bestimmen wie viele args jeweils uebergeben werden sollen.
Code:
find ... -print0 | xargs -0 -n 1 -P 4
-n 1 -> wie viele argumente uebergeben
-P 4 -> wie viele parallel

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Code:
echo "alias crontab='crontab -i'" >> ~/.bashrc
Macht immer eine Abfrage bei crontab -r. Wer sich fragt wozu man sowas braucht möge bitte einen Blick auf seine Tastatur werfen, und schauen wo E und R dort sind :)

Benötigt
  • Bash oder andere Shell mit alias
  • Cron

.
Zitat von COLOSSUS
`find` ersetzt dabei die Zeichenfolge {} mit der Liste der gefundenen Pfadnamen, und zwar in einer Art und Weise, die auch bei exotischen Dateinamen (mit '\n' und dergleichen im Pfadnamen) nicht bricht. Auszerdem spart man sich einen zusaetzlichen Prozess ;)
Interessant. Ich geb zu, ich hab angenommen dass find solche Namen korrekt escaped. In einem Java Source-Tree wirst du sie aber jedenfalls nicht finden ;)

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4420
Zitat von watchout
Zitat von COLOSSUS
`find` ersetzt dabei die Zeichenfolge {} mit der Liste der gefundenen Pfadnamen, und zwar in einer Art und Weise, die auch bei exotischen Dateinamen (mit '\n' und dergleichen im Pfadnamen) nicht bricht. Auszerdem spart man sich einen zusaetzlichen Prozess ;)
Geil, hehe; ist mir zum Glueck noch nie passiert.

Ausser fuer wirklich user-spezifische Cronjob (i.e. persoenliche/private) hab ich aufgehoert das zu nutzen und lege sie nur mehr unter /etc/cron.d/ ab; dadurch sind sie bei mir auch automatisch durch etckeeper >versionisiert< .

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
Code:
tr -dc _A-Za-z0-9\!\"\#\$\%\\&\'\(\\)\*\+\,\.\/\:\;\<\=\>\?\@\[\\\]\^\`\{\|\}\~\- < /dev/urandom | head -c 63

erzeugt ein sicheres passwort mit druckbaren ascii zeichen, die länge steht am ende der zeile - in diesem beispiel 63.
das gute an dieser methode ist vorallem die anpassbarkeit, falls eine service bestimmte zeichen nicht erlaubt, kann man hier genau wählen und verschiedene varianten zb in einem script unterbringen.
für eine wpa2 passwort ist dieser einzeiler genau richtig wie er ist - erlaubt sind 63 zeichen, wie ihr wisst :)
Bearbeitet von Nico am 09.04.2016, 23:30

Valera

Here to stay
Registered: Dec 2005
Location: Mint
Posts: 683
Ich hab nix spektakuläres aber für mich gerade unheimlich wichtiges. Weil mir irgendwann das OS eines Debian Wheezy Server zerschossen wurde (durch update??) und das Ding beim letzten Stromausfall durch die USV runtergefahren wurde und sich jetzt beim Hochfahren aufhängt sind die für mich heute wertvollsten Einzeiler unter einem FreeBSD 10.3 Live System vom USB Stick:
Code:
# mount -u -a -o rw
Ändert mir das gerade laufende Live System von read only auf writeable damit ich die Mountpoints für folgendes erstellen lassen kann:
Code:
# zfs send productpool/dataset@today | zfs receive backup/dataset
:rolleyes: Dh. ich kopiere gerade die Daten eines ZFS Pools datasetweise auf externe Beckupplatten damit ich nicht auf mein richtiges Backup zurückgreifen muß wenn was schiefgeht, weil Murphy und so. :bash:

Zu dem Malheur hab ich eh Fragen, dafür mach ich aber eine eigenen Thread auf wenn ich soweit alles wieder habe.
:confused:
Bearbeitet von Valera am 03.06.2016, 23:02

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11892
Ein read-only gemountetes Dateisystem (hier am Beispiel von "/"; also dem rootfs) kann man unter GNU/Linux generell via

Code:
mount -o remount,rw /

beschreibbar einhaengen. Manche Implementationen von `mount` (iirc war das bei busybox so) brauchen ein bisschen mehr Hilfe, und bestehen dabei auf die Angabe des Quellblockgeraets, z. B. so:

Code:
mount -o remount,ro /dev/sda1 /

Das kann auch dann noetig sein, wenn es keine (sinnvolle) /etc/mtab gibt. Veilleicht hilft's ja mal jemandem :)

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11892
Im Monitor integrierte Lautsprecher muten (so als wuerde man das via OSD erledigen):
Code:
sudo ddcutil setvcp $(sudo ddcutil capabilities | awk '/Audio mute/{print "0x"$2}') 1

Unmuten:
Code:
sudo ddcutil setvcp $(sudo ddcutil capabilities | awk '/Audio mute/{print "0x"$2}') 0

Vorausseztungen: i2c_dev ist geladen und der Monitor unterstuetzt das Feature in der Firmware. Bei Notebooks ist das z. B. leider nicht der Fall; muss ein "Standalone"-Display sein.

Ueber DDC kann man einen Haufen schraeges Zeug machen - `sudo ddcutil detect` und `sudo ddcutil capabilities` geben einen guten Vorgeschmack.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11325
Code:
for i in *.zip ;do mkdir ${i%.*}; cd ${i%.*}; unzip ../$i; cd .. ; done

Entpackt alle ZIPs in einem Verzeichnis in je ein Unterverzeichnis.
In diesem Zusammenhang sei auch auf das Script "unp" verwiesen, das noch viel mehr kann -> https://packages.qa.debian.org/u/unp.html

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11892
Wer schnell checken will, ob ein fuer OpenSSL lesbares X.509-Zertifikat CERTFILE.pem zu einem privaten Schluessel KEYFILE.pem passt, kann das mit "modernen" ECC-Keys (auf Kurven wie secp256k1 usw.) so tun:

Code:
md5sum <(openssl x509 -in CERTFILE.pem -noout -pubkey) <(openssl ec -in KEYFILE.pem -pubout)

Fuer immer noch weit verbreitetes RSA-Schuesselmaterial muss man das ganze etwas anpassen:

Code:
md5sum <(openssl x509 -in KEYFILE.pem -noout -pubkey) <(openssl rsa -in CERTFILE.pem -pubout)

Bei identischen Hash-Werten in beiden Zeilen passen Private und Public Key zueinander (oder OpenSSL hat beide Male nix bzw. den gleichen Fehler (sollte nicht passieren) auf stdout produziert, ODER man hat eine MD5-Kollision :p).
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz