====== Useful Linux Commands == /* Syntax template see section 'sed'! */ ===== Abstact == Short descriptions, hints and pointers to further information for useful linux commands. This page started as an unordered collection of notes in a text file in german language and is now transfered slowly in a (hopefully) more organized english version. ===== Development Tools == Eg, ''make'' and ''gcc'' see [[build_tools]] ===== Perl == The [[http://cpan.org/misc/cpan-faq.html#How_install_Perl_modules|CPAN FAQ]] may be a starting point for installing modules. ''man CPAN'' or the same [[http://search.cpan.org/~jhi/perl-5.8.0/lib/CPAN.pm|online]] may also help. ''perl -M -e 1'' -- Test if a module is already on the system Source: ''man perlmodinstall'' or same [[http://search.cpan.org/~jhi/perl-5.8.0/pod/perlmodinstall.pod|online]] ===== Date and Time == ==== Systemzeit einstellen wenn grob verstellt == * System- und Bios-Zeitzone einstellen mit ''timeconfig'' * Systemzeit einstellen mit ''%%date MMDDhhmm[[CC]YY][.ss]%%'' * /etc/adjtime löschen * ''%%hwclock --systohc --utc%%'' ist optional, wird beim runterfahren automatisch erledigt ==== Abweichung der Systemzeit nachregulieren == * Systemzeit einstellen wie oben * ''%%hwclock --systohc%%'' ist optional, wird beim runterfahren automatisch erledigt ==== Old == date - zeigt die Systemzeit date +%j --date=2004-03-08 - Tag-Nummer vom 2004-03-08 anzeigen date --date=yesterday - gestriges Datum anzeigen date +%j - Tag des Jahres hwclock --utc --set --date="11/23/02 08:43:00" Errechnet aus der übergeben LocalTime die UTC und schreibt sie ins Bios hwclock --show (--systohc) zeigt (& setzt) die Hardwarezeit Achtung systohc ändert /etc/adjtime ===== Users and Groups == See [[Users and Groups]] ===== Manuals == ==== man == apropos whatis man -k 'stichwort' - suchen in den man pages (= apropos, siehe man man) man 7 regex - Beschreibung der Posix Regular Expressions (aus Php Manual) ==== info == l - last page u - one level up i - search in index s word - search hole file for word (s RET: search next) khelpcenter - Kde-eigene Hilfe yelp - Gnome-eigene Hilfe ===== Filesystem Tools == ==== chmod == | u+s | set-user-ID bit: Set the process's effective user ID to that of the file upon execution | | g+s | set-group-ID bit: For directories, give files created in the directory the same group as the directory, no matter what group the user who creates them is in, and set the set-group-ID bit of newly-created subdirectories | | +t | Prevent unprivileged users from removing or renaming a file in a directory unless they own the file or the directory | | +X | execute permission is affected only if the file is a directory or already had execute permission | [[http://www.gnu.org/software/coreutils/manual/html_node/File-permissions.html|More]] ===== TextTools == ==== cat == * -n, --number - number all output lines * -A, --show-all - show whitepsace ==== diff == See [[diff patch tips]] ==== vim == === Copy and Paste == == Whithin Vim == * Select text with mose and left mose button * Press ''y'' * Reposition cursor to desired place in text * Press ''p'' == From different Application == * Select text with mose and left mose button in the other application * In Vim reposition cursor to desired place in text * Press ''i'' to for insert mode * Press ''shift'' + middle mose button === Old == dd - delete line i - switch to insert mode ESC - leave insert mode STRG-AltGr-] - follow a link in the help system STRG-t - jump back in the help system A - append text at the end of the line o - open a new line below the current line, append text ==== sed == === General Options == | -i | modifies the file directly, result is not written to stdout | === Select lines == sed -n '4p' file # print only line 5 of file file sed -n '2,4p' file # print lines 2-4 sed -n '2,4!p' file # print all lines except lines 2-4 [[http://beginlinux.com/blog/2010/01/using-linux-text-stream-filters-a-real-life-example/|Source]] === Search and replace == sed 's/regexp/replacement/' file.txt sed '2s/regexp/replacement/g' file.txt # only for line 2 sed '1,20s/regexp/replacement/g' file.txt # only for lines 1-20 sed '1,20!s/regexp/replacement/g' file.txt # all lines except lines 1-20 [[http://linux-user.de/ausgabe/2002/11/080-sed|Source]] ==== cut == cut -c14-16 file Print only characters 14 through 16 of all lines of file file. [[http://beginlinux.com/blog/2010/01/using-linux-text-stream-filters-a-real-life-example/|Source]] ==== less == * %%-S kein Zeilenumbruch%% * %%-i --ignore-case%% \\ Ignore case in searches that do not contain uppercase. * %%-I --IGNORE-CASE%% \\ Ignore case in all searches. * :n - Examine the (N-th) next file from the command line. * :p - Examine the (N-th) previous file from the command line. ==== iconv (, recode) == Umwandlung von Textdateien in alle möglichen Kodierungsarten, auch sowas wie html-Formatierung, auch in php vorhanden, iconv ist besser! ''iconv -f ISO-8859-1 -t UTF-8 file.txt > newfile.txt'' ==== Concat pdf files == ''pdfunite'' from the poppler lib Alternatives: ''pdfconcat'' and ''gs'': gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=GoCourse.pdf GoCourseDay1.pdf GoCourseDay2.pdf GoCourseDay3.pdf [[http://www.linux.com/news/software/applications/8229-putting-together-pdf-files|gs Source]] ==== Other == split -b bytes datei Große datei in 'bytes' große Stücke zerlegen. Funzt auch mit Binärdateien. Stücke lassen sich mit cat wieder zusammenflicken fmt -s [-w 75] file.txt Überlange Zeilen umbrechen (line break, format, umbruch) unter Beibehaltung von Einrückungen -s: Neue Zeilen werden beibehalten (no refill) -w: maximum line width (default of 75 columns) strings - useful for determining the contents of non-text files. echo -e "$stringWithNewlines" - prints the \n's sort - sort lines of text files -n nach Zahlen am Anfang sortieren (oder -g , info coreutils sort) -r reverse the result of comparisons ===== Rpm == rpm -e [--test] [-vv] gphoto Paket 'gphoto' [probehalber] [mit ausfühlichster Anzeige] deinstallieren rpm -qf /pfad/datei zeige das Paket, daß die Datei /pfad/datei enthält rpm -qa alle installierten Pakete auflisten rpm -qi mysql Ausführliche Paketinformationen rpm -ql mysql alle Dateien zum installierten Paket mysql anzeigen rpm -qd mysql alle Dokumentations-Dateien zum installierten Paket mysql anzeigen rpm -qc mysql alle Konfigurations-Dateien zum installierten Paket mysql anzeigen rpm -q...p datei.rpm Abfrage der (noch) nicht intallierten Datei datei.rpm rpm -ivh (--test) datei.rpm (Probehalber) Installation -v: verbose, -h: Fortschrittsbalken rpm -Fvh (--test) datei.rpm Upgrade nur, wenn schon eine ältere Version existiert ===== Graphics Processing == See [[Graphics Processing]] ===== rsync (Backup) == rsync must be installed on both the source and destination machines. ==== Useful Options == | -a, --archive | archive mode, equivalent to -rlptgoD | | -D | same as --devices --specials | | -e ssh | specify the remote shell to use | | -g, --group | preserve group | | -H, --hard-links | preserve hard links | | -l, --links | copy symlinks as symlinks | | -n, --dry-run | show what would have been transferred | | -o, --owner | preserve owner (root only) | | -p, --perms | preserve permissions | | -P | same as --partial --progress | | -r, --recursive | recurse into directories | | -S, --sparse | handle sparse files efficiently | | -t, --times | preserve times | | -v, --verbose | increase verbosity | | -z, --compress | compress file data | | --delete | delete files that don't exist on the sending side | | --devices | preserve device files (super-user only) | | --progress | show progress during transfer | | --partial | keep partially transferred files | | --specials | preserve special files | | --stats | give some file transfer stats | ==== Examples == rsync -aPSHe ssh lfile ruser@rhost:rdir # copy lfile in local working directory into rdir in home dir on host rsync -aPSHe ssh lfile ruser@rhost:/rdir # copy lfile in local working directory into rdir in root dir on host rsync -aPSHe ssh ldir ruser@rhost:rdir # recursively copy ldir into rdir rsync -aPSHe ssh ldir/ ruser@rhost:rdir # recursively copy the contents of ldir into rdir rsync -aPSHe ssh ruser@rhost:rdir ldir # recursively copy remote rdir into local ldir rsync -aPSHe ssh ruser@rhost:rdir/ ldir # recursively copy the contents of remote rdir into local ldir Opts from http://mirrors.slackware.com/guidelines/ ===== Compression and Archives == jar -tf file.jar - Inhalt von file.jar angucken jar -xf file.jar - Inhalt von file.jar extrahieren tar -xjf [pfad/]datei.tar.bz2 mit bzip2 komprimiertes tar-Archiv extrahieren; bzip2 komprimiert offensichtlich besser als zip tar -tzf [pfad/]datei.tgz gezipptes tar-Archiv einsehen tar -czf [pfad/]datei.tgz datei1 datei2 gezipptes tar-Archiv datei.tgz mit den Dateien datei1 datei2 erzeugen tar -xzf [pfad/]datei.tgz mit gzip gezipptes tar-Archiv extrahieren Am günstigsten startet man diesen Befehl vom Zielverzeichnis aus, dann spart man sich das kopieren der Archivdatei gzip, gunzip .gz - Files packen & entpacken (wird von tar verwendet) zip -r archiv verz Verzeichnis 'verz' recursiv komprimieren in die Datei archiv.zip (pkzip-kompatibel) unzip archiv[.zip] Datei archiv.zip extrahieren in aktuelles Verzeichnis unzip -l archiv[.zip] Inhalt von archiv.zip einsehen unzip -c archiv.zip pfadImArchiv/eineArchivDatei Inhalt der 'eineArchivDatei' aus archiv.zip auf stdout file-roller - Gnome Archiver Gui ark - KDE Archiver Gui ===== Mounten, Partitionieren & Formatieren == 'man fs' gibt eine Übersicht über die verschiedenen Filesysteme, v.a. die dos-Typen ==== Partitionieren == * ''fdisk -l'' - Übersicht Partitionierung aller Platten * ''cfdisk -P s /dev/xxx'' - Übersicht Partitionierung einer Platte\\ ''fdisk -l'' scheint jedoch besser ==== SD & USB Drives == ''mount /dev/hde1 /media/flash'' - mountet eine pcmcia-flash-card ans Verzeichnis /media/flash ''fuser'' - identify processes using files or sockets (nützlich beim unmounten) ''/var/log/messages'' gives you the name of the device file which is necessary to mount and format the memory stick. Typical is ''/dev/sda1'' or ''/dev/sdab'' ==== VFAT Formatting == VFAT is the default file system on off the shelf memory sticks, PC- and SD-cards. Use it if you need compatibility with M$-Windows. ''mkfs.vfat -v [-c] [-n volume-name] /dev/hde1'' - Formats a PCMCIA-card or sdcard or USB-stick with msdos-FS ''mkdosfs'', ''mkfs.vfat'' and ''mkfs.msdos'' are symlinks for ''mkfs.fat'' Also Entry in ''fstab'' für vfat-formatted sticks - no necessary any more: /dev/sda1 /mnt/ums vfat noauto,user 0 0 #or /dev/sda1 /mnt/ums auto noauto,user 0 0 An off the shelf memory stick has a file system type ID of 6 (= FAT16). See ''fdisk -l'' Also helpful: [[slackmirror>slackware-14.1/usb-and-pxe-installers/README_USB.TXT]] ==== VFAT Renaming == Use [[man>fatlabel]] Old: You can rename e.g. a label in lowercase with mtools: - Plug USB stick into computer and mount it if necessary - Type ''mount'' to see on which device the stick got mounted, this may be something like ''/dev/sdb1'' - Unmount USB stick - Open ''/etc/mtools.conf'' and change the line ''drive a: file="/dev/fd0" exclusive'' to the device where the stick got mounted, e.g. ''drive a: file="/dev/sdb1" exclusive'' - Edit your personal mtools config file: ''%%echo 'mtools_skip_check=1' >> ~/.mtoolsrc%%'' - Rename the stick: ''mtools a:'' and enter desired volume label ==== Linux Formatting == Linux file systems like ext3, ext4 and reiserfs are aware of the Linux protections modes (owner, group, etc.). Use it if you want exchange files between two Linus systems. Example formatting for ''/dev/sdb1'': - Set the file system typ to 83 (= Linux) with ''cfdisk /dev/sdb1''.\\ (It may as well work without this step, but setting the right FS ID cannot harm.) - Format the stick with: ''mkfs.ext3 -L BeckisStick'' /dev/sdb1 Sole renaming the disk label is possible with: ''e2label device new-label''. Source: https://linuxconfig.org/how-to-name-label-a-partition-or-volume-on-linux ==== Floppies == fdformat /dev/fd0 formatiert eine Diskette low level, macht offensichtlich noch kein Dateisystem mkdosfs -v -c /dev/fd0 formatiert eine Diskette mit FAT (8.3 Format, siehe auch man fs) -v verbose, -c vorher überprüfen, bei Slack muß man offensichtlich der Gruppe floppy zugehören (ll /dev/fd0) Slack-Symlink: mkfs.msdos -> mkdosfs badblocks /dev/fd0 Checkt eine Partition (auch Diskette) auf Fehler, die badblocks werden auf stdout geschrieben dosfsck /dev/fd0 - check and repair MS-DOS file systems ==== Misk == mkreiserfs Symlink: mkfs.reiserfs -> mkreiserfs reiserfstune --label labelname /dev/XXX Change the volume name of a Reiser filsystem without destroying data fsck.???? Dateisystemcheck man fs zeigt die vorhandenen Filesystemtypen ===== XML == xmlwf - non-validating xml parser xmllint - xml parser ===== Drucken == lpr datei.txt Druckt die Datei (Formatierungsoptionen nötig) Slack 9.0: /usr/bin/lp -> lpr Slack 9.1 & 10.0: /usr/bin/lp -> lp-lprng (lpr-cups) /usr/bin/lpr -> lpr-lprng (lpr-cups) lpq - zeigt alle Aufträge in der Standard Druckwarteschlange # lprm all - löscht alle Aufträge aus der Standard Druckwarteschlange ===== Sound == See [[sound]] ===== Terminal-Emulatoren == [[Gnu Screen]] mrxvt - with transparency and tabs rxvt - Ressoucensparender Terminalemulator (Subset von xterm) aterm - baut auf rxvt auf, unterstützt Transparenz ~/.Xdefaults Beispiel: XTerm*loginShell: true XTerm*geomtery: 80*48 XTerm*visualBell: true Aterm*scrollBar: false Aterm*transparent: true ===== Burn Cds == Daten-Cds ließt man aus mit dd ([[http://www.linux-user.de/ausgabe/2001/05/015-cdrecord/cdrecord.html|Linux-User]]) oder besser mit readcd ([[http://www.tldp.org/HOWTO/CD-Writing-HOWTO-4.html#ss4.7|CD-Writing-HOWTO]]). Brennen kann man sie dann mit cdrecord. Audio-Cds muß man auslesen mit cdda2wav ([[http://man.linuxquestions.org/?query=cdrecord&type=2§ion=1|man cdrecord]]: "To copy an audio CD...") oder besser cdparanoia ([[http://www.tldp.org/HOWTO/CD-Writing-HOWTO-4.html#ss4.5|CD-Writing-HOWTO]]. Brennen geht auch wieder mit cdrecord (man cdrecord) FIXME Was ist mit SVCDs? Bisher immer cdrdao verwendet. Hier entstehen möglicherweise Qualitätsverluste (Tini's DVD-Player hatte Probleme mit den Kopien). Oder lag das an meinem alten Brenner? Wie sieht der Aufbau einer SVCD aus? ist das eine Daten-Cd oder eine Audio-CD? --- 2006-08-30 16:17 ==== Cdrtools == See [[slack_app_tips#command_line_cd_burning|Command line CD burning]] for cdrecord setup. **readcd [dev=0.0.0] f=cd.iso** - read content of a CD and createt an ISO file from it (''CDR_DEVICE'' should be set in ''/etc/default/cdrecord'') FIXME Is ''readcd'' a better alternative as ''cdrdao'' for copying of CDs? ''xcdroast'' oviously uses this command (see xcdroast -v 1) **mkisofs -r -J -o cd.iso inDir/** - Create the file ''cd.iso'' with ISO9660 filesystem form the content of ''inDir/'' (for later burning) -r:Rockridge-Extensions für Unix -J:Joliet Extensions für Windows -o datei: Output-datei see also: http://www.linux-user.de/ausgabe/2001/05/015-cdrecord/cdrecord.html **mount cd.iso /mnt/test -o loop** - Mount the ISO image which was created with ''readcd'' or ''mkisofs'' for testing purposes **cdrecord -v [-dummy] [-nofix] [dev=0,0,0] [speed=4] cd.iso** - burn ''cd.iso'' on a CD -v: verbose (important, otherwise nothing can be seen during burning); Default values for ''dev'' & ''speed'' should be set in ''/etc/default/cdrecord''. According to the manpage there is no ''~/.cdrecord'' file ==== cdrdao == **cdrdao copy [--speed 8] [--device 0,0,0 --driver generic-mmc]** Eine CD kopieren, d.h einlesen & anschließend brennen (SVCD, auch CDDA?) Es geht auch in 2 Schritten: "read-cd mytoc" & dann "write mytoc" 2004-08-05 21:54 funzt nicht mit aktuellem /etc/cdrdao.conf device von "cdrecord -scanbus"; Angabe von "--device 0,0,0 --driver generic-mmc" generell nur nötig, wenn per --save noch keine Konfigurationsdatei erstellt wurde (man cdrdao) **cdrdao read-cd [--eject] mytoc** - Inhalt einer CD auf Festplatte einlesen. **cdrdao write [--speed 8] [--eject] mytoc** - Vorher mit read-cd eingelesene Kopie auf Rohling brennen --eject oeffnet LW wenn fertig **cdrdao disk-info [--device 0,0,0] [--driver generic-mmc]** Ließt Infos der CD ein, geht auch zum erstellen einer Konfig-datei mit --save === Konfigdateien == * /etc/cdrdao.conf * $HOME/.cdrdao ==== Links == * man cdrdao * http://www.tldp.org/HOWTO/CD-Writing-HOWTO-4.html#ss4.7 * http://cdrdao.sourceforge.net/example.html * CD-Writing HOWTO: cdrecord ships "readcd" (found under misc/). It gives you the same result as dd, but reads sectors on the CD-ROM several times in case of errors * http://www.linux-user.de/ausgabe/2003/01/082-mkisofs/index.html * Musik-Cds kopieren siehe man "cdrecord" ===== Rip DVDs == See [[multimedia]] ===== OpenPGP == See [[OpenPGP]] ===== Networking == ==== nmap == Port scanner and network exploration tool. See [[http://www.linux.com/learn/tutorials/290879-beginners-guide-to-nmap|Beginners guide to nmap]] -- [[http://olex.openlogic.com/wazi/2011/nmap-network-probing-cheatsheet/|Nmap Network Probing Cheatsheet]] -- [[man>nmap|Manpage]] -- [[http://www.unixmen.com/10-practical-examples-linux-nmap-command/|10 Practical Examples Of Linux ‘nmap’ Command]] | -A | Enables OS detection (-O) and Version detection (-sV), Script scanning and Traceroute | | -p- | scan all ports (1-65535) As default only interesting ports are scanned | | -O | Enable OS detection, included by -A | | -sV | Service and version detection, included by -A | | --allports | Only for Service detection (-sV): Don't exclude any ports, also ports which would wast paper on printers for example | ==== netstat == [[man>netstat]] displays a list of open sockets (and more) ''ss'' seems to be a newer alternative to nestat. See https://unix.stackexchange.com/questions/106561/finding-the-pid-of-the-process-using-a-specific-port#106562 ==== nc (netcat) == TCP/IP swiss army knife see http://www.linux.com/article.pl?sid=05/11/07/182200 === Howto copy directory trees with netcat == On the receiving side: ''nc -lv -p 5555 | tar - vxzf -'' On the sending side: ''tar - vczf - directoryToBeSent | nc -v -q 9 targetHostName 5555'' Notes: * The command on the receiving side has to be issued first * ''-q 9'' termitates connection after EOF (seems as any number could be used instead of 9). * This mehtod works better than scp, because I didn't find a way to preserve symlinks with scp (like ''cp -a'') so far. ==== ssh == Replaces rlogin and rsh, and provides secure encrypted communications between two untrusted hosts over an insecure network. See also: [[http://symkat.com/35/ssh-tips-and-tricks-you-need/|SSH: Tips And Tricks You Need]] === Howto copy files and directory trees with ssh == == With scp == ''scp -rp 030809Ibiza/ ilse:fotos/'' secure remote file copy programm over ssh with scp command == With ssh == Alternatively, if scp is not available, a single files and dirs can be copied directly with ''ssh'': ssh user@host "cat > targetfile" < sourcefile # copies a single file from client to server ssh user@host "cat sourcefile" > targetfile # copies a single file from server to client The following command copies a whole directory tree under ''/home/becki'' from the server to the client. It extracts the tree in the current local directory. This means, if you want to have the copied data in the same path as on the server, you have to ''cd'' to '/' (root directory) before you issue the command: ssh [user@]host "tar -cf - /home/becki" | tar -xf - FIXME verify: Copy a directory tree from client to server: tar -cf - /path/to/local/sourcedir | ssh user@host "tar -xf - /path/to/remote/targetdir" === ssh without login == * ''ssh-keygen'' (older versions: ''ssh-keygen -t rsa'') generates private and public keys in homedir of client for client & server (omit passphrase!). * Add the content of the file ''~/.ssh/id_rsa.pub'' from the client to the file ''~/.ssh/authorized_keys'' on the server. * (If necessary create ~/.ssh/config with "Protocol 2" in it.) * Then never use password again :-) === SSH tunneling for secure web surfing == #!/bin/bash ssh -D 1080 -C -N -v $vserver # Firefox config: # Activate "Manual Proxy Configuration" # Socks Host: 127.0.0.1 / Socks Port: 1080 # No further entries in "Manual Proxy Configuration" Especially: # Empty HTTP Proxy / Port 0 # Do NOT activate "Use this proxy server for all protocolls" # No proxy for: localhost, 127.0.0.1 etc [[http://parabing.com/2011/04/01/ssh-tunneling-for-secure-web-surfing/|Source]] === sshfs == mounting: sshfs [user@]host:[dir] mountpoint [options] unmounting: fusermount -u mountpoint === Old == rsh - can execute (one) command on romote host (no login) rlogin - predecessor of telnet? ''ssh -X hostname /path/to/program'' starts graphical program on remote host and display it locally (see also ''xhost'') ==== curl == === Configuration == Config file is ''~/.curlrc''. (Proxy) config example: # PROXY AUTHENTICATION METHOD: proxy-ntlm #proxy-anyauth # PROXY USER AND URL: proxy-user = "user:pass" proxy = "proxyhost:proxyport" === Usage == Download a single file: curl -O http://www.gnu.org/favicon.ico # or: curl http://www.gnu.org/favicon.ico > favicon.ico ==== wget == [[http://www.gnu.org/software/wget/manual/wget.html|Manual]] (better than ''man wget'') === Options == -r --recursive - Turn on recursive retrieving. -l --level=depth - Specify recursion maximum depth level. default=5 -m --mirror - Equivalent to -r -N -l inf --no-remove-listing -k --convert-links - convert absolute links to relative links -E --html-extension - *.php, *.jsp -> *.html; -p --page-requisites - (only necessary if -l != inf) -np --no-parent -N --timestamping - Turn on time-stamping -nd - no dirs -x - force dirs --referer= -U - user agent --user=user - username for FTP and HTTP --password=password - password for FTP and HTTP === Examples == Download a subdirectory of a remote server and make it suitable for local viewing without local webserver. -r is prefered over -m becaus -m does not seem to respect -np: wget -r -k -E -np === Old == Achtung möglicherweise funzt wget nicht richtig, wenn man die einbuchstabigen Optionen direkt aneinander hängt. wget -p seite.html seite.html komplett mit allem Zubehör runterladen wget -k -r -l 2 --no-parent URL 'URL' recursiv (-r) runterladen & absolute Links in relative umwandeln (-k), sodaß man alles offline anschauen kann wget -r -l 1 --no-parent -A.jpg URL nur *.jpg Dateien runterladen (index.html ist auch dabei) ==== Misc == hostname -f - eigenen Host- & Domainnamen anzeigen nslookup (deprecated, Consider using the `dig' or `host' programs instead) host - IpAdresse <-> Hostname über DNS tcpdump - kann Passwörter mitlesen (LinuxUser 04/04 S.38) iptraf - Interactive Colorful IP LAN Monitor netwatch - monitor activity on the network mtr - kombiniert ping & traceroute (LinuxUser 04/04 S.38) traceroute - Routen von Paketen über TCP/IP-Netzwerk anzeigen ifconfig route [-n] ip - vereinigt ifconfig & route ([[http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2004/04/1x1-der-Netzwerktools|LinuxUser 04/04 S.38]] and http://www.tty1.net/blog/2010/ifconfig-ip-comparison_en.html) brctl delbr - remove an network interface (''ifconfig down'' only disables it) netstat [-i] - Infos zum Netzwerk netstat -an - Zeigt offene Ports! (von Grabsch) arping - ping over arp protocol, see also [[http://www.linux.com/article.pl?sid=05/12/14/1645213|linux.com article]] ===== System Commands == ==== Power Management == See [[man>pm-suspend]], [[man>pm-is-supported]] ==== library dependencies == ldd - print shared library dependencies siehe Usenet: Alan Hicks: Re: What is a package mgr: swaret, slap-get, etc. ldconfig - configure dynamic linker run time bindings nm - list symbols from object files, from Program-Library-HOWTO ==== runlevel == poweroff - = telinit 0 (?) shutdown -c - Cancel an already running shutdown. runlevel - find the current and previous system runlevel telinit 1 - go single user mode, administrative state (rc.K) telinit 3 - go Muliuser mit Netz ohne Grafik (see /etc/inittab: [[important_files_and_directories#etc|Important Files and Directories]]) telinit 4 - go Full Multiuser with Network and xdm Quelle Slackware/UPGRADE.TXT reboot ==== Power Management == hdparm -S time /dev/hda - Set the standby (spindown) timeout for the drive hdparm -C /dev/hda - Check the current IDE power mode status apm - query Advanced Power Management apm -s, --suspend - Put the machine into suspend mode if possible. apm -S, --standby - Put the machine into standby mode if possible. ==== at & cron == at, batch, atq, atrm - queue, examine or delete jobs for later execution crontab -l - list crontab for user crontab -e - edit crontab for user 2004-11-26 19:54 hat nicht gefunzt auf ilse/slack10, keine Ahnung warum crontab crontabfile - replace crontab with crontabfile Achtung: Das Slackware crontab erkennt die 7 für Sonntag offensichtlich NICHT an => 0 benutzen! ==== Misc == * top, nice - [[ibm>linux/library/l-lpic1-v3-103-6/|Get and set process execution priorities]] * sensors - print (temprerature) sensors information * lsof - list open files for file recovery, see [[http://www.linux.com/article.pl?sid=06/10/30/1652211|article at linux.com]] * last - show listing of last logged in users * kernelversion - program to report major version of kernel * lsmod - listet alle gerade geladenen Kernelmodule auf * cardctl ident - Zeigt die PCMCIA-Informationen * lspci -vv oder -vt - list all PCI devices (gut!) * sudo - execute a command as another user. See also: [[http://www.ghacks.net/2010/01/06/how-to-add-users-to-etcsudoers/|How to add users to /etc/sudoers]] and [[http://www.go2linux.org/sudoers-how-to|sudoers file explained]] * ''uname -a'' - Systeminformationen, auch Kernelversion anzeigen See also: [[ibm>linux/library/l-10sysadtips/|Lazy Linux: 10 essential tricks for admins]] ===== Slack-spezifisch == * rpm2tgz - Rpm-Paket in ein per installpkg installierbares Slack-Paket umwandeln; von www.slackbook.org * timeconfig - Wählen der Zeitsone und ob Bios-Uhr auf local oder UTC steht. \\ Setzt /etc/hardwarcolock und /etc/localtime * netconfig - Änderungen nach setup sind damit möglich. Afterwards restart netowork with ''rc.inet1 resteart'' * liloconfig - Änderungen nach setup sind damit möglich * makebootdisk - SW-script to create system boot floppies. * pppsetup - Setup modem connection ==== xwmconfig == Erzeugt ein ~/.xinitrc, das von startx aufgerufen wird & einen bestimmten Windowmanger startet. Wenn als root aufgerufen wirkt sich das auf den Systemstandard aus(?). Quelle: [5] ==== Checkinstall == Not supported any more! === Overview == Help in /usr/doc/checkinstall-1.5.3/README, (README.1st). No manpage. Seems to run well without any options for Slack. For quick & dirty packages just follow these steps: ''./configure; make; crate the "doc-pak" directory; # checkinstall'' === Description == * :!: Remove the old package: ''# removepkg oldPackage'' * Extract source tarball as normal user (untarring as root produced weird permissions for dirs on Slack 11.0) * Become root and recursively change owner/group to root, eg: ''# chown -R root:root netcat-0.7.1'' * Type ''./configure --help | most'' to check if something needs to be tweaked in configure script * create a file named "description-pak" with help of [[http://linuxpackages.net/slackcreator.php|slackcreator]] and remove "pkgname: " at start of all lines * Optionally create [[http://www.linuxpackages.net/howto.php?page=doinst|doinst.sh]] * Create a build script called .SlackBuild, customize the DOCFILES :!: & run it. A template: #!/bin/bash # file: netcat.SlackBuild DOCFILES="ABOUT-NLS AUTHORS COPYING ChangeLog NEWS README TODO" # customize! SLKCFLAGS="-O2 -march=i486 -mcpu=i686" if [ ! -d doc-pak ]; then mkdir doc-pak || exit $? ; fi cp $DOCFILES doc-pak || exit $? ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || exit $? CFLAGS="$SLKCFLAGS" make || exit $? # no colon! #checkinstall Notes: The content for ''CFLAGS'' came from [[http://www.linuxpackages.net/howto.php?page=slackbuilds&title=Slackbuilds+HOWTO|Slackbuilds HOWTO]] & [[http://ftp.gwdg.de/pub/linux/slackware/slackware-11.0/source/a/grep/grep.SlackBuild|grep.SlackBuild]]. ''CFLAGS'' ist automatically respected by make. The options for ./configure came from [[http://www.linuxpackages.net/howto.php?page=package&title=Package+Howto|Package Howto]]) * Correct Release field when checkinstall is asking! (add "bec": eg 1 -> 1bec ; see [[http://www.linuxpackages.net/howto.php?page=perfect-package&title=Perfect+Package|Perfect Package]]) * Correct Architecture field when checkinstall is asking! Default is i486, see also Perfect Package -> Misc * Extract the package to a test dir & check if file owner is root:root in whole package. For Slack 10.2 and older the bin areas must be set manually to root:bin, see Perfect Package -> Permissions and Ownerships * Save .SlackBuild and description-pak together with the package for later updates FIXME for info pages: According to [[http://www.linuxpackages.net/upload.php|Package Upload]] info pages must be installed with install-info. I think checkinstall doesn't respect this. It seems that the current /usr/info/dir of the build host is taken, the new entry is added & the resulting file is just added to the Slackpackage (Seen during netcat test creation). Doesn't this destroy the /usr/info/dir of other user who installs that package? Shouldn't this go to doinst.sh? ==== Paketverwaltung == pkgtool - SW: Installierte Pakete einsehen & interaktiv Pakete löschen & installieren installpkg -warn pkg.tgz Generate a report to the standard output about which files and directories would be removed or overwritten if you install the package, but do not actually install it. Necessary to be root. Achtung: nur ein '-' bei 'warn'! removepkg pkg installpkg pkg.tgz upgradepkg --verbose oldPkg.tgz%newPkg.tgz ===== Schriften == Moved to [[xorg]] ===== unsorted == xclip: read text into X selection (clipboard) from standard input gnome-session - Start the window manager php: -C : do not change the current directory to the directory of the executed script -q : start up in quiet mode, i.e suppress http headers -q & -C are only relavant for php-cgi-sapi, for the php-cli-sapi(?) this behaviour already is the default -v : see which sapi is on your System (cli or cgi (?)) bc -l - useful as command line calculator scale=10 : bc auf 10 Nachkommastellen einstellen sqrt(x) : Wurzel aus x ziehen obase=16 : alle Ergenisse hexadezimal ausgeben ibase=2 : alle Eingaben werden als Binärzahl interpretiert file datei - Bestimme den Typ der Datei datei tree - list contents of directories in a tree-like format -p Print the protections for each file (as per ls -l) -u Print the username -g Print the group name alias -p - prints the list of aliases alias name=value exec prog ruft das Programm prog auf & beendet das laufende Script nachdem prog fertig ist. Alle Befehle nach exec werden nicht mehr ausgeführt. sleep 3 - Halte (warte, mach pause) (Skript) für 3s an usleep 300000 - Halte (warte, mach pause) (Skript) für 0.3s an tty - zeigt das Terminal, das gerade verwendet wird (?) fsck - check and repair a Linux file system tee - read from stdin and write to stdout AND to file(s) ginstall, install In Slack install is a Symslink to ginstall ginstall is newer -> use man ginstall for info! locale - Hole Lokale-spezifische Informationen locale -a - Drucke alle in /etc/profile.d/locale.sh einstellbaren locales, wichtig für /etc/profile.d/lang.sh whoami - Wer bin ich wvHtml infile.doc outfile.html convert msword documents to HTML4.0 xlHtml [-te] file.xls > out.html Excel-Datei in Html umwandeln; -te zum unterdrücken von leeren Zeilen/Spalten ghex2 - Hexeditor xxd (, hexdump) - make a hexdump (or do the reverse) md5sum -c paket.md5 In der Checksummen-datei paket.md5 muß eine Checksumme & ein Filename angegeben sein Prüft ob die angegebene Checksumme mit der berechneten Checksumme des Files Filename übereinstimmt startx -- :1 zweiten XServer auf F8 starten kdmctl reserve Alternativ if kdm is the display manager. Found here: http://ubuntuforums.org/showthread.php?t=888139 dialog, xmessage, zenity (gdialog), kdialog display dialog boxes from shell scripts http://developer.kde.org/documentation/tutorials/kdialog/t1.html dmesg - Bootmessages ausgeben rename .JPG .jpg *.JPG alle Dateien, die auf .JPG enden in .jpg umbenennen tr macht sowas ähnliches auf String-Ebene (aus MP3 CD Burning mini-HOWTO) sux, kdesu grafisches Prog als root starten (von Suse Konfigbuch) su -c programm dito, zufällig bei alt.os.linux.slackware gefunden befehl 2>datei.txt stderr nach 'datei.txt' umleiten befehl &>datei.txt stdout & stderr nach 'datei.txt' umleiten befehl >>datei.txt hängt stdout vom Befehl 'befehl' an die Datei 'datei.txt' an lynx -stdin html-Seite von stdin anzeigen lynx -dump [-nolist] url schreibt die Textform der Html-Seite nach Stdout; -nolist um die Links der Seite nicht mit auszugeben xftree4 -> xffm - Dateimanager des Windowmanagers xfce xfm - file manager, nix gscheids! gv, ggv, kghostview - PostScript & PDF Betrachter xpdf - PDF Betrachter ps2ascii, pdftotext - pdf (ps) -> text pdfimages - PDF image extractor, geil! ls -al | egrep ^d nur Verzeichnisse anzeigen ls -C mehrere Spalten anzeigen (für Pipe nach less) ls -1 nur ein(e) Datei/Verzeichnis pro Zeile anzeigen l -t (= ls -alFt) Dateien nach zeit sortiert anzeigen l -d w* Alle Dateien & Verzeichnisse anzeigen, die mit 'w' beginnen, jedoch nicht in Unterverzeichnisse abtauchen dircolors Aufgerufen von /etc/profile Schreibt die Farben für ls nach stdout Schreibt die Aliase d & v nach stdout, bisher keine Möglichkeit gefunden, daß zu konfigurieren /etc/DIR_COLORS ist bisher die einzige Möglichkeit das Verhalten von d & v zu ändern (2005-03-31) Eine Analyse von dircolors.c hat ergeben, daß die Aliase d (=dir) & v (=vdir) fest in dircolors reinprogrammiert sind wc -l datei -l Zeilen (-c Bytes, -m Chars, -w Words) einer Datei zählen, oder ohne Dateiangabe von stdin zählen eject [-t] öffnet [& schließt] das (u.a.) das CdRom Laufwerk updatedb - Suchdatenbank aktualisieren locate -i - schnelles, Suchen in der Suchdatenbank (-i ignore case) find -mmin -10 Alle Dateien ab dem akt. Verzeichnis finden, deren Inhalt sich in den letzten 10' geändert hat (schön zur Kontrolle von "make install" - vorsicht, funzt nicht immer) find -name '*.cpp' | xargs grep -n Alfons | less Zeigt recursiv alle Zeilen in cpp-Dateien in denen 'Alfons' vorkommt find -name '*.cpp' | xargs grep -l Alfons | xargs jedit recursiv alle cpp-Dateien, die 'Alfons' enthaltenn mit Jedit öffnen find -(i)name '*datei*' Listet recursiv alle Dateien mit Namen 'datei' ab dem aktuellen Verzeichnis; i für ignore case grep -ni 'suchwort' * Alle Dateien im akt Verzeichnis nach 'suchwort' durchsuchen; -n zeigt Zeilennumern; -i für ignore case grep -B 30 'suchwort' 30 Zeilen vor dem Treffer auch mit anzeigen, Input hier über stdin grep -E 'pattern' egrep 'pattern' Suche mit 'richtigen' (extented) Regular Expressions egrep -v '^[[:space:]]*$' textfile - Leerzeilen aus Textfile entfernen env export -p zeigt gültige Umgebungsvariablen getopt dient zum Parsen von Argumenten in Scripten, siehe auch /usr/share/misc/getopt info readline zeigt Shell Shortcuts import - screenshot in eine Datei sichern mdir a: zeigt den Inhalt der Diskette im Laufwerk a an, ohne vorher mounten zu müssen mtools siehe file:///usr/share/doc/suse/qconfig_de/html/node229.html []Fx führt auf ein anderes Konsolenfenster. Auf F7 liegt das grafische X-System Auf F10 liegt der console log (= /var/log/warn ?) beendet X-Server <+> schaltet die Bildschirmauflösung um pstree Ausgabe Prozesse in Baumform ps aux Ausgabe Prozesse a alle Prozesse mit Terminal, auch von anderen Benutzern x Prozesse ohne ttys u display user-oriented format (verändert nicht die Anzahl der Ausgabezeilen) fg bg - ??? jobs - alle Prozesse der aktuellen shell anzeigen kill %x - x-ten Hintergrundprozeß der shell killen killall -i java beendet alle Prozesse, die mit java ... gestartet wurden -i für Nachfrage vorher kill -s SIGKILL 4197 wenn der Befehl unten nicht wirkt... kill PID Prozess mit der Prozess-Id PID beenden (Bei Jedit reicht anscheinend der Prozess mit der niedrigsten aller PIDs um alle Jedit-Prozesse zu beenden top zeigt alle Prozesse (interaktiv) type -p programm Bei Suse ist which ein Alias für type -p & damit das echte which verdeckt which programm whereis programm zeigt den (bin)-Ort eines Programmes chsh Shell für einen Benutzer ändern gpm Programm zur Verwendung von drag&drop in virtuellen Konsolen (kein Kommando), wird jedoch nicht unter X gebraucht! (siehe Suse7.3 Referenzhandbuch) help:/ Auflistung aller Kde-Programme groups zeigt die Gruppenzugehörigkeit des Benutzers an du -hs * Speicherplatzbedarf für das aktuelle Verzeichnis nicht recursiv du -h Speicherplatzbedarf für das aktuelle Verzeichnis recursiv df -h [Datei] Anzeige Auslastung Filesystem kdf KDiskFree free - Display amount of free and used memory in the system chown -Rv root:root verzeichnis setzt setzt verzeichnis mit allen Dateien und Unterverzeichnissen auf Besitz root root newgrp - log in to a new group (from intro-linux) id - Display current user and group ID names umask print actual user file-creation mask umask 0037 after this command creating a dir results in drwxr----- (777 ^ !037= 740) creating a file results in -rw-r----- (666 ^ !037= 640) (executable flag for files is suppressed automatically although allowed with umask) Wir wahrscheinlich in /etc/profile gesetzt (intro-linux) ln -s /media/flash flash Erzeugt einen symbolischen Link auf das Verzeichnis /media/flash mit dem Namen 'flash' cp -p Preserve owner, group, permissions, time cp -r Quellverzeichnis Zielverzeichnis kopiert alles mit Unterverzeichnissen # tail -f /var/log/messages zeigt permanent Systemmeldungen, geil!!! # rcinetd zeigt Status vom inetd # rcapache start/status/stop startet Apache/ liefert Stausbericht/ stopt # rcmysql start, # rcmysql status startet mySql/ liefert Stausbericht/ stopt cal -y ===== Important Files & Directories == See [[Important Files and Directories]] ===== todo == * write user [Strg]+[D] * talk user