seeseekey.net - Invictus Deus Ex Machina

Wenn man eine Anwen­dung mit­tels „screen“ aus­führt, kann es pas­sie­ren das man den Fehler:

Cannot open your terminal '/dev/pts/0' - please check.

zu Gesicht bekommt. Viel­fach wird emp­foh­len bei die­sem Feh­ler die Rechte des Gerä­tes zu ändern:

chmod 777 /dev/pts/0

Anstatt diese Lösung zu nut­zen sollte man vor der Aus­füh­rung von „screen“ den Befehl:

script /dev/null

aus­zu­füh­ren. Damit kann „screen“ anschlie­ßend ohne Feh­ler­mel­dung genutzt werden.

Möchte man wis­sen wir viele Dateien sich in einem Ord­ner unter Linux befin­den, so kann man dies leicht durch eine Kom­bi­na­tion der Befehle „find“ und „wc“ bewerkstelligen:

find /home/seeseekey/manyfiles/ -type f | wc -l

Der „find“-Befehl lis­tet dabei alle Dateien in dem Ord­ner auf, wäh­rend „wc“ (word count) die aus­ge­ge­be­nen Zei­len zählt und man somit die Anzahl der Dateien ermittelt.

Manch­mal benö­tigt man ein Image von einer SD-Karte, z.B. dann wenn man eine Instal­la­tion einer Raspberry Pi Dis­tri­bu­tion von einer sol­chen Karte sichern möchte. Im ers­ten Schritt muss man ermit­teln wel­che Ken­nung die SD-Karte trägt. Dies geschieht im Ter­mi­nal mittels:

diskutil list

Die Aus­gabe könnte dann in etwa so aussehen:

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          Apple_CoreStorage                         250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *249.8 GB   disk1
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *16.1 GB    disk2
   1:             Windows_FAT_32 NO NAME                 16.1 GB    disk2s1

In die­sem Fall ist das Gerät „/dev/disk2“ die SD-Karte ist. Mit­tels des Befehls „dd“ wird dann das ent­spre­chende Image erzeugt:

sudo dd if=/dev/disk2 of=sdcard.img

Der Vor­gang nimmt dabei durch­aus einige Zeit in Anspruch, in wel­cher man keine Aus­ga­ben auf der Kon­sole sieht. Nach der Erzeu­gung des Images, gibt „dd“ noch eine Aus­wer­tung des Kopier­vor­gan­ges zum Bes­ten und die Kopie ist komplett.

Möchte man die lokale Revi­sion eines Git Repo­si­to­ries ermit­teln so reicht es in der Konsole:

git log -n 1

ein­zu­ge­ben. Das ganze sieht auf dem Ter­mi­nal dann so aus:

commit 1c40074d28676ec996ec91f1719cff43077f15f6
Author: Example 
Date:   Tue Jan 3 09:52:23 2013 +0800

    Bugfixes in example function.

Soll nur der Hash aus­ge­ben wer­den so muss die Kom­man­do­zeile wie folgt aussehen:

git log -n 1 --pretty=format:"%H"

Damit bekommt man dann nur den ent­spre­chen­den Hashwert ausgegeben.

Mit wget ist der Down­load einer Datei ein­fach, da das ganze nur aus dem Befehl und der Datei besteht:

wget http://example.com/datei.zip

Bei cURL braucht es da schon etwas mehr:

curl -O http://example.com/datei.zip

Damit lädt cURL die ent­spre­chende Datei auf die Fest­platte, anstatt sie nur anzuzeigen.

Wei­tere Infor­ma­tio­nen gibt es unter:
http://en.wikipedia.org/wiki/CURL

Manch­mal möchte man ein Git Repo­sitory von Ser­ver A auf Ser­ver B umzie­hen (in die­sem Fall von Google Code zu Git­hub). Das ganze ist dabei rela­tiv unpro­ble­ma­tisch. Zuerst wird das beste­hende Repo­sitory geklont:

git clone https://code.google.com/p/cscl/

In der Git­Hub Ober­flä­che erstel­len wir nun ein neues Repo­sitory (in die­sem Fall mit dem Namen „CSCL“). Danach ent­fer­nen wir den alten Remote und wei­sen einen neuen hinzu:

git remote rm origin
git remote add origin git@github.com:seeseekey/CSCL.git

Mit­tels „git remote –v“ kann man sich die beste­hen­den „Remo­tes“ anschauen. Nach­dem der neue Remote gesetzt wur­den laden wir das Repo­sitory (mit­tels „push“) bei Git­Hub hoch:

git push -u origin master

Damit ist der Umzug abgeschlossen.

Wei­tere Infor­ma­tio­nen gibt es unter:
https://help.github.com/articles/removing-a-remote

Der Stan­dar­de­di­tor im Ter­mi­nal bei Mac OS X ist „vim“. Möchte man die­sen nicht benut­zen, so kann man den Edi­tor ändern indem man im Nut­zer­haupt­ver­zeich­nis eine „.bash_profile“ Datei anlegt (wenn diese nicht bereits vor­han­den ist). In diese Datei trägt man dann fol­gen­des ein:

export EDITOR=nano

Nach­dem dem Spei­chern der Ände­rung, sowie einem Neu­start ist der neue Edi­tor aktiv.

Wer in die Ver­le­gen­heit kommt und PDFs zusam­men­fü­gen möchte, der sollte sich ein­mal „pdftk“ anschauen. Unter Ubuntu muss das ganze mittels:

sudo apt-get install pdftk

instal­liert wer­den. Danach kann man meh­rere Dateien im Ter­mi­nal nach dem Schema:

pdftk rechnung.pdf rechnung-s2.pdf output rechnung-komplett.pdf

zusam­men­fü­gen.

Manch­mal benö­tigt man eine MySQL Kom­man­do­zeile, hat aber kein „phpmyad­min“ zur Ver­fü­gung. Für einen sol­chen Fall wäre es schön wenn man eine kleine Anwen­dung hätte wel­che die­ses Pro­blem löst. Genau hier setzt die PHP Anwen­dung „Admi­ner“ an. Dabei han­delt es sich sozu­sa­gen um eine „phpmyad­min“ Minimalversion.

SQL-Query Ansicht im Adminer

Das schöne am Admi­ner ist das er nur aus einer Datei besteht und so unkom­pli­ziert „instal­liert“ wer­den kann. Zu fin­den ist das ganze unter http://www.adminer.org.

Möchte man unter .NET/Mono das Schlie­ßen einer Kon­so­len­an­wen­dung abfan­gen so kann man dies mit eini­gen Metho­den lösen, wie zum Bei­spiel die Anwen­dung bestimm­ten pIn­voke Tech­ni­ken unter Win­dows. All­ge­mei­ner kann man das ganze mit dem „Can­cel­Key­Press“ Event gestal­ten was dann so aussieht:

Console.CancelKeyPress+=new ConsoleCancelEventHandler(Console_CancelKeyPress);
...
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
  WriteErrorToConsole("Programm wird abgebrochen...");
  e.Cancel=true; // Event abbrechen
}