Einträge zu Tag: Bash
chmod, Rechte nur bei Dateien oder Verzeichnissen ändern
Erstellt: 05.04.2010 14:48
Mit er Hilfe von find lässt sich chmod oder andere Befehle nur auf Dateien oder Verzeichnisse anwenden.
chmod 644 nur auf Dateien (files) anwenden:
# find . -type f -exec chmod 644 {} ;
chmod 755 nur auf Verzeichnisse (directories) anwenden:
# find . -type d -exec chmod 755 {} ;
Der praktische Parameter -exec von find führt den nachfolgenden Befehl aus, in diesem Fall chmod. Die Klammern {} setzen die Ausgabe von find an den entsprechenden Platz. -type bestimmt die Art der Dateien welche gefunden werden sollen. d für Verzeichnisse oder f für normale Dateien. Zugegeben, auf diese Lösung kann man auch leicht selbst kommen, aber manchmal liegt das Naheliegendste doch am weitesten entfernt. ;)
Mit ls eine Datei mit Minus "-" am Anfang anzeigen
Erstellt: 17.03.2010 18:10
Ich wurde letztens gefragt, wie man mit ls eine Datei anzeigt, welche mit einem Minus beginnt. Also in der Form von "-dateiname".
Das Problem dabei ist, dass der Dateiname selbst von ls als Kette von Operatoren angesehen wird, da er mit einem Minus beginnt. Sprich, die Ausgabe endet mit einem Error:
$ ls -lah -dateiname
ls: Ungültige Option -- e
"ls --help" gibt weitere Informationen.
Dies lässt sich umgehen, indem man ls mit "--" sagt, dass keine Operatoren mehr folgen werden:
$ ls -lah -- -dateiname
-rw-r--r-- 1 user1 user1 279K 17. Mär 17:36 -dateiname
Das wäre schon die ganze Zauberei gewesen.
Bash: Live-Suche nach verwendeten Befehlen
Erstellt: 23.12.2008 23:41
Verwendet man Befehle mehrmals kann man sich mit einem kleinen Trick viel Tipparbeit ersparen.
Drückt man die Tastenkombination "Ctrl+R" erscheint in der Bash eine Eingabemöglichkeit:
(reverse-i-search)`':
...nun werden Buchstabenkombinationen entgegengenommen und der erstbeste Befehl angezeigt, hier zum Beispiel bei "ca":
(reverse-i-search)`ca': apt-cache search adobe
...bei "cat" kommt bei hier dann beispielsweise:
(reverse-i-search)`cat': cat /etc/fstab
Mit "Ctrl+R" werden alle Möglichkeiten nacheinander angezeigt, welche zu der Buchstabenkombination passen, sofern es welche gibt:
(reverse-i-search)`cat': cat /etc/fstab
[Ctrl+R]
(reverse-i-search)`cat': cat /etc/apt/sources.list
[Ctrl+R]
(reverse-i-search)`cat': nano gnome-applications.menu
[Ctrl+R]
(reverse-i-search)`cat': cat /boot/grub/menu.lst
Entfernen lassen sich Buchstaben gewohnt mit Backspace.
Einen angezeigten Befehl übernimmt man mit der Eingabetaste, dieser wird so direkt ausgeführt.
Die Tastenkombination "Ctrl+D" schliesst die Funktion, lässt es aber zu den Befehl zu bearbeiten bevor man ihn Ausführt. Dieser steht wie selbstgetippt und nicht ausgeführt in der Bash:
(reverse-i-search)`cat': cat /boot/grub/menu.lst
[Ctrl+D]
# cat /boot/grub/menu.lst (jetzt kann man normal editieren und mit der Eingabetaste ausführen)
Statt "Ctrl+D" funktioniert auch die Taste "Insert".
"Ctrl+Y" übernimmt das Ergebnis als Suchstring:
(reverse-i-search)`cat /boot/grub/menu.lst': cat /boot/grub/menu.lst
Abbrechen mit Esc.
Viel Spass damit
Thinkpad mit Intel Graphikkarte - VGA-Ausgang ein-, und ausschalten (mit Fn+7)
Erstellt: 10.09.2008 22:02
Der VGA-Ausgang lässt sich bei Intel-Graphikkarten über das Tool "i810switch" steuern. Diese Steuerung lässt sich über die Funktionstasten automatisieren.
Zuerst i810switch installieren:
# apt-get install i810switch
Funktioniert auch mit anderen Intel-Graphikkarten als mit der 810er. Ich Habe die 950GMA.
Ein-, und auschalten geht ganz einfach:
$ i810switch crt on
Enabling CRT display...
$ i810switch crt off
Disabling CRT display...
Ohne Parameter wird der Status der Schnittstelle angezeigt:
$ i810switch
CRT: off
LCD: off
Um das zu automatisieren habe ich ein kleines Script geschrieben. Es liest mit xrandr aus ob ein Monitor angeschlossen ist. Deshalb sollte man sich dafür per apt-get noch "xrandr" installieren.
Dieses Script kontrolliert nun beim aufrufen ob ein Monitor angeschlossen ist und schaltet dann die VGA-Schnittstelle ein, bzw. aus. Ist kein Monitor angeschlossen, wird überprüft ob die Schnittstelle aktiv ist. Falls sie aktiv sein sollte, wird sie ausgeschalten.
Ich habe die Datei "switch-monitor" genannt.
#!/bin/bash
# Filename: /usr/local/sbin/switch-monitor
# Schaltet Schnittstelle fuer externen Monitor an und aus
# Ist nichts angeschlossen, wird die Schnittstelle deaktiviert
# Benoetigt: xrandr, i810switch
# Aufgerufen durch:
# /etc/acpi/events/ibm-videobtn
monistate=`/usr/bin/i810switch | head -n1 | tail -n1 | cut -f 2 -d " "`
isit=`xrandr | head -n2 | tail -n1 | cut -f 2 -d " "`
if [ $isit = "disconnected" ]
then
echo "VGA disconnected"
if [ $monistate = "on" ]
then
i810switch crt off
fi
else
if [ $monistate = "off" ]
then
i810switch crt on
else
i810switch crt off
fi
fi
Die Datei mit diesem Inhalt sollte noch mit:
$ chmod +x switch-monitor
...ausführbar gemacht werden.
Um das ganze jetzt noch auf die Tastenkombination "Fn+F7" zu legen, geht man wie folgt weiter:
Man kopiert (oder verschiebt) das Script in dieses Verzeichnis:
# cp <Jetziger_Speicherort_der_Datei>/switch-monitor /usr/local/sbin/
Nun wird vorausgesetzt, dass man im Kernel die "Thinkpad ACPI Laptop Extras" aktiviert hat bzw. das Modul geladen. (Eine kurze Zusammenfassung wie man mit Kernel umgeht mit Verweis ist hier zu finden: Kernel compilen unter Debian ) Das Modul wird benötigt um die ACPI-Ereignisse des Thinkpads auszulesen.
In der Datei /etc/acpi/events/ibm-videobtn muss man die 6. Zeile ersetzen mit dem Pfad vom Script. Aktuell sollte sie so aussehen:
# /etc/acpi/events/ibmvideobtn
# This is called when the user presses the video button. It is currently
# a placeholder.
event=ibm/hotkey HKEY 00000080 00001007
action=/bin/true
Danach (Man beachte die Zeile "action"):
# /etc/acpi/events/ibmvideobtn
# This is called when the user presses the video button. It is currently
# a placeholder.
event=ibm/hotkey HKEY 00000080 00001007
action=/usr/local/sbin/switch-monitor
ACPI noch neu starten:
# /etc/init.d/acpid restart
Fertig
Automatisiertes entpacken diverser (komprimierter) Archive mit unp
Erstellt: 20.04.2008 02:38
Mit unp kann man sich viel (Denk- ) und Tipparbeit ersparen.
Dieses kleine Programm ist ein Fronted für diverse (Ent-)Packprogramme. Damit lässt sich so gut wie jedes (komprimierte) Archiv nach Dateityp automatisiert entpacken.
Installieren kann man sich das Programm über das Paketsystem:
# apt-get install unp
Zu verwenden ist das Tool sehr einfach:
$ unp Dateiname
Will man zusätzliche Parameter an die Packprogramme übergeben, geschieht das mit "--" und dem gewünschten Parameter:
$ unp Dateiname -- -C /tmp
Derzeit unterstützte Erweiterungen und Formate (Auszug aus der man-Page):
tar[.gz,.bz2], gz, bz2, Z, ar/deb, rpm, shar, rar, arj, zip, LHa, cab, ace,
tnef, uu (mail, news), mime, hqx, sea, zoo, pmd, cpio, afio, lzop
Viel Spass