linux  system  bash

bash_notes

Notizen und Snippets die in der bash ganz nützlich sind.
Diese Notizen sind historisch gewachsen und enthalten auch meine Anfänge. Vieles von diesem Wissen ist bereits in die .bash_aliases oder meine Kopf gewandert.

Shortcuts

Strg+L Clear
Strg+A an den Zeilenanfang springen
Strg+E an das Zeilenende springen
ESC+. Letztes Argument wieder aufrufen
Strg+R History durchsuchen (Enter=Ausführen, ESC=Bearbeiten)

sudo !!

Wiederholt den letzten Befehl(!) + seine Argumente(!) als sudo.

Dateien mit Secure Copy (scp) von Linux z.B. ins Windows kopieren

pscp [user]@[hostname]:[path2file] [lokaldestationpath]
pscp [lokaldestationpath] [user]@[hostname]:[path2file]
# [path2file] relativ zum home-directory des Users und mit / statt \ !
#pscp c:\users\mheister\Desktop\.user.ini pi@r4g9:/home/pi/
#pscp pi@192.168.4.3:/home/pi/apache* c:\users\mheister\Desktop\

Füllgrad der Festplatte ermitteln

df -h

Größe von Verzeichnissen ermitteln

commandline

du -sh *
# -s = Rekursiv die Summe des Verzeichnisses (Fehlt der Parameter wird jeder Unterordner einzeln gelistet)
# -h = Dynamische Göße in K/M/G 
# * jedes Verzeichnis einzeln in diesem Ordner

interaktiv

install ncdu

ncdu -x -r /

# Exit: q

Verzeichnis durchsuchen

sudo grep -R "192.168.7." /

Symbolische, Soft-, Hard-Links

# Erstellen (Hardlink)
ln
# Erstellen (Softlink)
ln -s 
# Entfernen (Softlink)
rm -r 

TAR-Sack

Entpacken von Dateien

tar -xvf ARCHIV.tar
tar -xvjf ARCHIV.tar.bz2
tar -xvzf ARCHIV.tar.gz
tar -xvJf ARCHIV.tar.xz

Packen von Dateien

tar -cvzf [name].tar.gz [verzeichnis] ... [datei]
#c = create 
#v = verbose (Zeigt Informationen zum Packvorgang) 
#f = file (Das eine Datei als Ziel angegeben ist) Letzter Parameter!!! Nächster Parameter wird als Dateiname interpretiert.
#z = gzip-Komprimiert 
#J = xz-Komprimiert (kleiner)
#r = Dateien an ein bestehendes Archiv anhängen
#u = Nur Dateien anhängen, die jünger sind als ihre Archiv-Version
#p = Zugriffsrechte beim Extrahieren erhalten.

Komprimiert den TAR-Sack nachträglich

gzip [name].tar

nano [Filename]

"Strg+W" - Suche
"Strg+W -> Strg+V" - Dateiende
"Strg+W -> Strg+R" - Suchen + Ersetzen
"Strg+K" - Zeile ausschneiden
"Strg+U" - Zeile einfügen
-P             --positionlog           Save & restore position of the cursor
-B             --backup                Save backups of existing files
-C <dir>       --backupdir=<dir>       Directory for saving unique backup files
-S             --softwrap              Display overlong lines on multiple rows
-l             --linenumbers           Show line numbers in front of the text
-m             --mouse                 Enable the use of the mouse
-n             --noread                Do not read the file (only write it) - replace contents of an existing file
-y             --afterends             Make Ctrl+Right stop at word ends

offene Ports anzeigen

sudo netstat -tulpen

Command History

history
hostory | grep "wasmansucht"

Prozesse anzeigen

~$ ps -AF
-A alle Prozesse
-f mehr Details
-F noch mehr Details

Befehl in den Hintergrund legen

Strg + Z
bg
#Wiederholen
fg %1
#Direkt im Hintergrund (& anhängen)
Befehl &
#Prüfen was im Hintergrund läuft
jobs

Befehler weiter laufen lassen wenn Session schließt

nohub

Eigene Befehle definieren

nano .bash_aliases

7z

#Der Linux-Port von 7z heißt p7zip. Es finden sich mehrere Varianten in den Paketquellen [1]:
# p7zip (universe, unterstützt nur 7z und LZMA)
# p7zip-full (universe, unterstützt noch weitere Formate und Algorithmen)
# p7zip-rar (multiverse, unfreies Modul für p7zip-full, um auch RAR-Archive entpacken zu können)
sudo apt-get install p7zip p7zip-full
#
# -m{Parameters} : set compression Method
# -r[-|0] : Recurse subdirectories
# -p{Password} : set Password
# -ssw : compress shared files
# -y : assume Yes on all queries
#
#Verzeichnis Zippen
7z -mx7 -ssw -y a /var/www/html/m~eta/data/heister.be/202102.7z /var/www/html/m~eta/data/heister.be/202102/*
#Zipp Entzippen
7z x /var/www/html/m~eta/data/heister.be/202102.7z -o/var/www/html/m~eta/data/heister.be/202102/

To recursively give directories read&execute privileges

find /media/nas -type d -exec chmod g+s {} +

To recursively give files read privileges

find /path/to/base/dir -type f -exec chmod 644 {} +

Brechtigungen

# user:group
sudo chown -R www-data:users /var/www/html/
sudo chmod -R 770 /var/www/html/

IP Adresse anzeigen

ip addr show

tee

Erzeugt std-Ausgabe und eine Ausgabe in eine Datei!

tee [option] [file]
# -a append
# -i ignore error

cp

cp source destination
# -i fragt ob überschrieben werden soll falls die Datei bereits existiert
# --backup=numbered legt ein nummeriertes Backup an falls die Datei existiert

head / tail

head [file] #gibt die ersten 10 Zeilen einer Datei aus
tail [file] #gibt die letzten 10 Zeilen einer Datei aus

sed

Muss noch!

stat

Detailierte Dateistatistik, kann über Parameter noch gekürzt und gezielter ausgeben.
 

pwd

Vollständigen aktueller Pfad

neofetch

image dd

"image erstellen"
sudo dd bs=1M if=/dev/mmcblk0 of=l0la53.img

"image zurücksichern"
sudo dd bs=1M if=l0la53.img of=/dev/mmcblk0

Hostname ändern

sudo hostnamectl set-hostname <NEWNAME>

pipe >> file

# Erweitert das Logfile um den Inhalt...
echo "test" >> expand.log
echo "2test" >> expand.log

# Löscht das Logfile vor dem befüllen...
echo "test" > drop.log
echo "2test" > drop.log

#2>> Fehler in das Logfile... (stderr)
#1> Normale Ausgabe in das Log... (stdout)
2>>${BACKUPLOGFILE} 1>/tmp/2Arc.lst

# Ausgabe von Fehlern (stderr) erfolgt in der normalen Ausgabe (stdout) und das kann weiter in eine Datei gepiped werden...
echo "test" 2>&1
echo "test" 2>&1 >> merge.log