Linux Commands – 21Linux Tipps und Tricks
Nach und nach lernen wir immer mehr über Linux und eignen uns ein Know-How zu Komandozeilen (command line) an. Wir von Rackhansa arbeiten schon etwas länger an Linux und kennen dementsprechend ein paar sehr hilfreiche Tricks und Tipps, die wir nur sehr gerne mit Ihnen teilen möchten. In diesem Artikel geht es um 21 Tipps und Tricks, die Ihre Arbeit und das Leben mit Linux vereinfachen werden und von denen Sie nur profitieren können.
Hinweis – Alle Beispiele in diesem Artikel wurden an Bash Shell getestet, bereitgestellt von Rackhansas Virtual Private Server.
1. Wie Sie effizienter zwischen den Verzeichnissen wechseln
Bei der Arbeit mit Linux Shell wird es öfter dazu kommen, dass man zwischen Verzeichnissen wechselt. Nehmen wir mal an, dass wir im Verzeichnis /var/log/httpd/ starten und dann zum Verzeichnis /home/alice/ übergehen. Nun möchten wir aber zurück zum Verzeichnis /var/log/httpd/. Den ganzen Pfad /var/log/httpd/ einzugeben wäre eine sehr mühsame Methode, um zurückzugelangen. Daher benutzen wir den Command „cd -“ Short Cut.
Um diese Methode korrekt auszuführen, gehen Sie zunächst in das Verzeichnis (a) wie beispielsweise /var/log/httpd/ und geben Sie nun den Befehl (command) „pwd“ ein. Nun gehen Sie zum Verzeichnis (b), beispielsweise /home/ und tippen „cd -„, was Sie zurück zu /var/log/httpd/ bringen sollte.
Probieren wir das nun wie im unteren Beispiel bei der Linux Command line (Kommandozeile) aus:
$ pwd /var/log/httpd
$ cd /home/
$ cd - /var/log/httpd
Tatsächlich ist uns „cd“ nur von Vorteil, wenn es darum geht zwischen zwei Verzeichnissen zu wechseln. Möchten Sie zwischen mehreren Verzeichnissen wechseln, bedarf es an mehrCommans (Kommandos), wie beispielsweise einer Kombination aus dem Kommando (linux command) „pushd“ und „popd“. Dieser Linux Kommando (Linux command) funktioniert wie folgt:
Nehmen wir an, Sie sind im Verzeichnis (a) und möchten zum Verzeichnis (b) wechseln und dann zu (c), zu (d) und abschließend zu (e). Von dort aus möchten Sie zurück zum Verzeichnis (a), dann werden Ihnen folgende Linux Commands sehr behilflich sein:
Sie sehen hier ein Live Beispiel von Linux Commands:
$ cd /var/log/ $ pwd /var/log $ pushd /var/www/ /var/www /var/www $ cd /home/ $ cd /etc/ $ cd /proc/ $ popd /var/www $ pwd /var/log
2. Wie Sie !! und ! so nutzen, dass die Kommando-History effizienter arbeitet
Doppelte Ausrufezeichen „!!“ werden der letzte Command sein der bei Shell eingegeben wird. Auch werden die Ergebnisse angezeigt:
$ echo "hi this is the command i typed last" hi this is the command i typed last $ !! echo "hi this is the command i typed last" hi this is the command i typed last
So nutzen Sie den Linux Command effizienter:
$ uname -a Linux testdomain 2.6.32-39-pve #1 SMP Wed Jun 24 06:39:42 CEST 2015 x86_64 x86_64 x86_64 GNU/Linux
$ !! | grep Linux Linux testdomain 2.6.32-39-pve #1 SMP Wed Jun 24 06:39:42 CEST 2015 x86_64 x86_64 x86_64 GNU/Linux
Im Folgenden erklären wir, was ein einzelnes Ausrufezeichen „!“ bedeutet und bewirkt. „!!“ führt lediglich zuvor ausgeführte Commands aus, „!“ hingegen hat verschiedene Funktionen als nur zuvor eingegebene Befehle abzurufen. Es hat Zugang zu allen Commands, die jemals eingegeben worden sind, in dem es die „History“ Command Datenbank einliest. Wenn Sie beispielsweise eine Command History führen, dann wird Ihnen darin ein Liste angezeigt mit Commands, die je im System gelaufen sind, gekennzeichnet mit einer Seriennummer zu jedem einzelnen Command. Das einzelne Ausrufezeichen „!“ wird also als Präfix zur Seriennummer der entsprechenden Kommandozeile genutzt. Siehe folgendes Beispiel unten:
$ history ... ... ... 2039 uname -a | grep Linux 2040 dmesg 2041 clear 2042 cd bin 2043 clear 2044 pwd 2045 touch new_binary 2046 sudo touch new_binary 2047 ls new_binary 2048 history
$ !2039 uname -a | grep Linux Linux himanshu-Inspiron-1525 3.2.0-36-generic-pae #57-Ubuntu SMP Tue Jan 8 22:01:06 UTC 2013 i686 i686 i386 GNU/Linux
Hier sehen Sie den Command mit der Seriennummer 2039. In einem anderen Beispiel nutzen wir den „!“ Command, um den letzten Command in Kombination mit dem Command 2039 einzusehen:
$ echo 127.0.0.1 $ ping !$ ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.030 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.017 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.017 ms
Der „!“ Command kann auch in in Kombination mit ‚keyword‘ des letzten eingegeben Commands (wenn dieser zu lang gewesen ist) genutzt werden:
3. Wie Sie den Komma „,“ Operator richtig nutzen
Es gibt so einige Funktionen mit dem Komma „,“ Operator, mit denen sich das Leben einfacher gestalten lässt.
Umwandlung in Kleinbuchstaben
Der Komma Operator kann dazu verwendet werden entweder den ganzen String umzuwandeln, oder nur den ersten Buchstaben in Kleinbuchstaben.
$ phrase="My Country is GERMANY"
$ echo ${phrase,} my Country is GERMANY
$ echo ${phrase,,} my country is germany
Der Komma Operator in Verwendung mit Dateinamen
Der Komma Operator wird ebenso dazu genutzt, um mehr als einzelne Dateinamen einzugeben.
4. Wie Sie Dateien mit Leerzeichen drinnen oder am Ende des Dateinamens löschen
Das Löschen von Dateien mit Leerzeichen in der Mitte oder am Ende kann für Anfänger sehr schwierig sein. Es kann zu folgenden Fehlern kommen:
$ rm map of russia.jpg rm: cannot remove 'map': No such file or directory rm: cannot remove 'of': No such file or directory rm: cannot remove 'russia.jpg': No such file or directory
Um dieses Problem anzugehen, gibt es zwei Optionen: (a) doppelte Anführungszeichen:
$ rm "map of russia.jpg"
(b) Back Slash „“ mit Leerzeichen :
$ rm map of russia.jpg
5. Wie Sie Dateien löschen, die mit „dash“ oder „Bindestrich (-)“ beginnen
Das Löschen von Dateien mit Bindestrich als Präfix kann sehr tückisch sein und funktioniert leider nicht mit den vorher beschriebenen Tricks…
$ rm -2filenamewith.hyphen rm: invalid option -- '2' Try `rm ./-2filenamewith.hyphen' to remove the file `-2filenamewith.hyphen'. Try `rm --help' for more information.
Auch nicht mit doppelten Anführungszeichen:
rm "-2filenamewith.hyphen" rm: invalid option -- '2' Try `rm ./-2filenamewith.hyphen' to remove the file `-2filenamewith.hyphen'. Try `rm --help' for more information.
6. Wie Sie alle Datein innerhalb eines Verzeichnis löschen bis auf ausgewählte
Hier sehen Sie ein Verzeichnis mit vielen Dateien: Erfahren Sie bei diesem Tipp, wie man alle Dateien bis auf ausgewählte Dateien (vor allem, wenn sie unterschiedliche Dateierweiterungen vorweisen) in einem Verzeichnis löschen:
$ ls put.out Cppfile.c filetype.c macrom.c myprintf.c orignal_file.orig mashup.c blowfish.c cmdline.c firstPYtProgram.py main.c newprintf.c orignal_file.rej test_stracefile.c blewfish.c envo.c helloworldprog.c myfopen.c newwork.txt progy.c virtual_function.c
Wenn Sie alle Dateien bis auf die .c und .py Dateien löschen möchten, tun Sie Folgendes:
$ rm !(*.c|*.py) $ ls Cppfile.c filetype.c macrom.c myprintf.c mashup.c blowfish.c cmdline.c firstPYtProgram.py main.c newprintf.c test_stracefile.c blewfish.c envo.c helloworldprog.c myfopen.c progy.c virtual_function.c
Dateien mit anderen Erweiterungen wurden wie Sie sehen konnten gelöscht.
7. Wie Sie den Tail Command effizient nutzen
Anstelle des Cat Command kann auch der Tail Command genutzt werden, um nur den letzten Teil der Datei anzuzeigen. Tail command kann aber auch dafür genutzt werden, um das letzte Ergebnis eines Commands zu sehen, was mit zahlreichen Zeilen endet. Beispielsweise ist Ihre iptables Liste sehr lang:
$ iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 58.30.0.0/16 0.0.0.0/0 DROP all -- 187.33.0.0/19 0.0.0.0/0 DROP all -- 113.196.0.0/16 0.0.0.0/0 DROP all -- 190.167.0.0/16 0.0.0.0/0 DROP all -- 202.46.0.0/16 0.0.0.0/0 DROP all -- 202.104.0.0/16 0.0.0.0/0 DROP all -- 66.135.34.113 0.0.0.0/0 DROP all -- 80.0.0.0/4 0.0.0.0/0 /* RIPEurope */ DROP all -- 178.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 91.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 77.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 46.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 188.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 37.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 193.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 2.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 5.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 31.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 62.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 93.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 95.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 109.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 176.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 217.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 92.0.0.0/8 0.0.0.0/0 /* RIPEurope */ DROP all -- 78.0.0.0/7 0.0.0.0/0 /* RIPEurope */ DROP all -- 213.0.0.0/8 0.0.0.0/0 /* RIPREurope */ DROP all -- 130.185.0.0/16 0.0.0.0/0 /* RIPREurope */ DROP tcp -- 0.0.0.0/0 0.0.0.0/0 source IP range 22 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 220.191.0.1-220.191.127.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 220.192.0.1-220.207.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 220.242.0.1-220.242.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 220.248.0.1-220.248.127.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 220.250.0.1-220.250.0.7 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 220.252.0.1-220.252.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.0.0.1-221.3.127.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.122.0.1-221.122.3.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.176.0.1-221.183.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.192.0.1-221.195.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.200.0.1-221.203.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.204.0.1-221.205.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.206.0.1-221.206.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.207.0.1-221.207.63.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.208.0.1-221.212.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.208.0.1-221.212.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.214.0.1-221.214.0.127 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.216.0.1-221.223.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.0.0.1-221.255.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.224.0.1-221.231.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.224.0.1-221.231.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 221.232.0.1-221.235.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.32.0.1-222.63.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.64.0.1-222.64.3.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.80.0.1-222.83.127.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.132.0.1-222.135.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.136.0.1-222.143.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.168.0.1-222.169.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.172.222.1-222.172.222.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.176.0.1-222.183.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.184.0.1-222.191.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.200.0.1-222.200.31.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.208.0.1-222.215.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.219.0.1-222.221.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 222.240.0.1-222.240.63.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.4.0.1-223.7.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.64.0.1-223.117.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.144.0.1-223.159.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.240.0.1-223.247.255.254 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Möchten Sie aber nur das Ende der iptables Filterliste sehen, nutzen Sie folgenden Command:
$ iptables -nL | tail DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.4.0.1-223.7.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.64.0.1-223.117.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.144.0.1-223.159.255.254 DROP all -- 0.0.0.0/0 0.0.0.0/0 source IP range 223.240.0.1-223.247.255.254 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Mit dem Tail Command wird Ihnen nur das Ende mit den letzten Zeilen von iptables -nL angezeigt.
8. Warum die Fehlermeldung „Argument list too long“ manchmal beim rm Command erscheint
Dies Passiert in der Regel, wenn Sie ein Verzeichnis mit vielen Dateien haben. Wenn Sie darüber ein rm -rf over tun, bekommen Sie sowas wie: „Argument list too long“
-bash: /bin/rm: Argument list too long
Dieser Fehler kann mit dem folgenden Befehl behoben werden (bevor Sie diesen Befehl versuchen, stellen Sie sicher im Verzeichnis mit den vielen Dateien zu sein):
find * -xdev -exec rm -f '{}' ';'
Dies ist die schnellste Methode eine große Anzahl von Dateien zu löschen. Sie versorgt rm Command beim Verarbeiten schubweise mit Input.
9. Wie Sie überprüfen, welche Linux Distribution Sie nutzen
Manchmal, wenn Sie mit einem VPS Server arbeiten und doublechecken möchten, dass Sie die richtige Distribution (oder, wenn Sie generell wissen möchten, welche Distribution Sie) verwenden, können Sie dies mit folgendem Command tun:
$ cat /etc/*-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS" NAME="Ubuntu" VERSION="14.04.2 LTS, Trusty Tahr" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 14.04.2 LTS" VERSION_ID="14.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
Im /etc/ Verzeichnis finden Sie eine Datei mit Details zur Version und Distribution. Wie Sie oben in den Ergebnissen sehen, lieferte der Command nicht nur den Distributionsnamen und die Version, sondern auch zusätzliche andere Information. Möchten Sie aber nur Informationen zur Distribution und Version haben (besonders bei Ubuntu und Debian), nutzen Sie folgenden Command:
$ cat /etc/*-release | grep VERSION VERSION="14.04.2 LTS, Trusty Tahr" VERSION_ID="14.04"
Mit grep VERSION (case sensitive) wird nur die Versionszeile extrahiert, welche den vollständigen Verions+Disributionsnamen beinhaltet.
Möglicherweise haben Sie Dateien, die Sie zwar nicht löschen , aber ihren Inhalt flushen möchten. Log Dateien sind ein gutes Beispiel dafür. Der folgende Command unten löscht den Inhalt der Datei, die an sich aber intakt bleibt:
$ > (complete path of file)
Zum Beispiel:
$ > /var/log/apache2/access.log
Dieser Command wird den Inhalt der Datei „access.log“ nur flushen ohne sie selbst zu löschen.
11. Wie Sie nach Manpages für einen bestimmten String suchen
*nix Manpages sind Handbücher für*nix Commands, die detaillierte und gründliche Anweisungen und Information über den Command geben, nach dessen Manpage Sie suchen. Nehmen wir an Sie möchten wissen, welche Manpage Inhalte zu einem gewissen Thema hat, wie bspw. „Welche Manpages behandeln String „windows“?“. In diesem Fall nutzen Sie die Option -k in Kombination mit dem man Command, was zu Folgendem führt:
$ man -k windows fixwfwps (1) - filter to fix Word for Windows documents so PSUtils work fixwwps (1) - filter to fix Windows Write documents so PSUtils work samba (7) - A Windows AD and SMB/CIFS fileserver for UNIX windmc (1) - generates Windows message resources.
Alle Manpages mit dem Inhalt string „windows“ werden in den Ergebnissen angezeigt.
Wenn Sie eine neue Datei mit minimalen Inhalt erstellen wollen, aber nicht den Text-/Dateieditor nutzen möchten, tun Sie Folgendes:
$ echo a dummy file with so little content > small.file
Testen wir’s!
$ cat small.file a dummy file with so little content
Eine andere Funktion des Operators ist auch die Outputs/Ergebnisse eines bestimmten Commands zu speichern. Zum Beispiel:
$ ping google.com -c 4 > google_ping.out
Testen wir auch das hier:
$ cat google_ping.out PING google.com (173.194.113.46) 56(84) bytes of data. 64 bytes from fra02s20-in-f14.1e100.net (173.194.113.46): icmp_seq=1 ttl=53 time=12.3 ms 64 bytes from fra02s20-in-f14.1e100.net (173.194.113.46): icmp_seq=2 ttl=53 time=12.4 ms 64 bytes from fra02s20-in-f14.1e100.net (173.194.113.46): icmp_seq=3 ttl=53 time=12.5 ms 64 bytes from fra02s20-in-f14.1e100.net (173.194.113.46): icmp_seq=4 ttl=53 time=12.3 ms --- google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 12.309/12.387/12.506/0.134 ms
13. Wie Sie Tail Command, um mehre Datei auf einmal anzuzeigen
Es gibt bestimmte Dateien, die man eine nach der anderen, aber mit einem Zug anschauen möchten. Vor allem, wenn die letzten Zeilen Import sind. Dafür verwenden wir folgenden Command:
$ tail -f google_ping.out yahoo_ping.out bing_ping.out ==> google_ping.out <== PING google.com (173.194.113.32) 56(84) bytes of data. 64 bytes from fra02s20-in-f0.1e100.net (173.194.113.32): icmp_seq=1 ttl=53 time=12.4 ms 64 bytes from fra02s20-in-f0.1e100.net (173.194.113.32): icmp_seq=2 ttl=53 time=12.2 ms --- google.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 12.287/12.389/12.491/0.102 ms ==> yahoo_ping.out <== PING yahoo.com (206.190.36.45) 56(84) bytes of data. 64 bytes from ir1.fp.vip.gq1.yahoo.com (206.190.36.45): icmp_seq=1 ttl=49 time=153 ms 64 bytes from ir1.fp.vip.gq1.yahoo.com (206.190.36.45): icmp_seq=2 ttl=49 time=153 ms --- yahoo.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1188ms rtt min/avg/max/mdev = 153.010/153.116/153.222/0.106 ms ==> bing_ping.out <== PING bing.com (204.79.197.200) 56(84) bytes of data. 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=1 ttl=117 time=5.00 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=2 ttl=117 time=4.65 ms --- bing.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 4.657/4.831/5.006/0.187 ms
Jede Datei hat ihre Caption/heading vor ihrem Output.
14. Wie man einen Command eingibt ohne, dass er in der „History“ aufgeführt wird
Manchmal wird es dazu kommen, dass Sie viele Commands benutzen werden und Ihre Linux „history“ damit nicht zumüllen möchten, da sie alle alten Aufzeichnungen flushen. Tun Sie nun Folgendes:
$ df -h $ du -h $ ping google.com -c 4
Bitte beachten Sie, dass zusätzliche Leerzeichen zwischen „$“ und „ping“, jedoch keines zusätzliches bei df und du Commands. Wenn Sie also extra Platz lassen vor dem eigentlichen Befehl, wird es nicht in der Kommando-History angezeigt und versteckt.
Lassen Sie uns das testen:
$ history | tail 242 df -h 243 du -h 244 history | tail
Wie Sie erkennen können, ist nicht nur der „Ping“ Command versteckt vor der Kommando-History, sondern die Seriennummern in der History ändern sich auch nicht.
15. Wie Sie den Output eines Commands in Zeitlupe anzeigen lassen
Wenn Sie bestimmte Commands eingeben, erscheint der Output des Commands so schnell, dass Sie die Anzeige davon nichtmals mehr mitbekommen. Um dieses Problem zu lösen, nutzen Sie einfach folgenden Command, der die Ausgabegeschwindigkeit verlangsamt:
$ last | pv -qL 25
Versuchen Sie diesen Command am Ende, um realistischere Ergebnisse zu bekommen.
16. Wie Sie einen String von IPTables blockieren
Es erspart Ihnen einen Menge an Zeit, wenn Sie einfach einen spezifischen String blockieren, als einen Haufen an IP Adressen, ausgehend von ein und dem gleichen String. Zum Beispiel „wp-login.php“. Es gibt vielleicht hunderte von IP Adressen, die diesen String auf Ihrem Webserver probieren. Alle diese IP Adressen zu blockieren wäre schlichtweg manchmal dumm. Blocken Sie stattdessen einfach den entsprechenden String, der von den meisten Hackern oder Script Kiddies verwendet wird. Um dies auch zu tun, verwenden Sie einfach die folgenden Switches und Optionen des iptables Command:
$ iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string 'c' -j DROP
Dieser Command wird jeden String, der „/wp-login.php“ beinhaltet, über Port 80 (ein allgemeiner Port bei Linux Webserver wie Apache2) blockieren.
17. Wie Sie eine Datei löschen, die vom System verwendet wird
Sie möchten eine Datei löschen, aber es funktioniert nicht, weil sie gerade vom System verwendet wird? Um derartige Datei zu löschen, nutzen Sie den Fuser Command:
$ fuser -k <filename>
Sobald die Datei einmal gestoppt wurde (dh. sie wird nicht mehr vom System verwendet), können Sie die Datei ohne Fehlermeldungen löschen.
18. Wie Sie das Ergebnis eines Commands speichern, während zeitgleicher Outputkontrolle
Wie Sie bereits wissen, kann der „>“ Operator zum Aufzeichnen und Speichern eines Command Outputs dienen. Sie können aber ebenso den Output eines Commands speichern, während Sie zur gleichen Zeit den Output kontrollieren.
Geben Sie dafür einfach Folgendes ein:
$ ping google.com -c 3 | tee google_ping.out PING google.com (173.194.113.39) 56(84) bytes of data. 64 bytes from fra02s20-in-f7.1e100.net (173.194.113.39): icmp_seq=1 ttl=56 time=12.2 ms 64 bytes from fra02s20-in-f7.1e100.net (173.194.113.39): icmp_seq=2 ttl=56 time=12.4 ms 64 bytes from fra02s20-in-f7.1e100.net (173.194.113.39): icmp_seq=3 ttl=56 time=12.3 ms --- google.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 12.219/12.338/12.456/0.160 ms
19. Wie Sie prüfen, ob der letzte eingegebene Command erfolgreich war oder nicht
Ein Beispiel: Geben Sie „$?“ direkt nach Eingabe Ihres Commands ein. Wenn der Command erfolgreich war, erhalten Sie den Wert (Value) „o“. Wenn nicht, erhalten Sie irgendeinen anderen Wert (Value) als „o“, der beispielsweise höher als „o“ ist.
$ touch xyz touch: cannot touch `xyz': Permission denied
$ echo $? 1
Da der Wert größer als 0 ist, war der Command nicht erfolgreich. Überdies hinaus ist die Fehlermeldung „Permission denied“ (Zugriff verweigert) zu sehen.
20.Wie Sie über die Tastatur kopieren&einfügen (Shell Environment)
Wählen Sie den Text aus, der kopiert werden soll und drücken Sie die Tasten Ctrl + SHIFT + C, um den Text zu kopieren. Zum Einfügen des Texts, drücken Sie die Tasten Ctrl + SHIFT + V.
Bitte beachten Sie, dass dies mit putty.exe program funktioniert.
21. Wie Sie nach allen Dateien, die einen bestimmten String enthalten, im laufenden Verzeichnis suchen
Nutzen Sie den folgenden -l Switch with Grep Command :
$ grep -l "printf" *.c blowfish.c helloworld.c mangler.c pingfast.c
Sie hatten Schwierigkeiten uns bei den Schritten zu folgen? Kontaktieren Sie uns einfach, denn die Rackhansa Profis sinds stets zu Ihren Diensten und bereit Ihnen beim Umsetzen einer reibungslosen Onlinepräsenz zu helfen. Ebenso sind unsere Free Webhosting Services zugeschnitten auf Unternehmer, die gerade Ihr Onlinegeschäft starten. Besuchen Sie unsere Webseite und erfahren Sie mehr über unsere preiswerten Webhostingprodukte.