Ένας γρήγορος οδηγός για την κονσόλα (γραμμή εντολών) σε *nix (και linux).

Ένα προσωπικό σημειωματάριο υπενθυμίσεων.

Έγγραφα

Έλεγχος ορθογραφίας


aspell -l en text

Σύστημα

Αλλαγή ώρας

sudo date --set=5:49pm

Ως root (υπερχρηστης), θα αλλάξει την ώρα σε 17:49. Με ntpdate gr.pool.ntp.org ή άλλο server, διορθώνεται αυτόματα η ώρα από το internet. (λίστα με servers εδώ).

Αλλαγή ημερομηνιας

date -s '21 Dec 2007'

Connect to WiFi via wicd

wicd-cli -y -c -n 0 Assuming network #0 is our network.

Χρονοδιακόπτης για κλείσιμο οθόνης

xset dpms 50 60 0

Δώσε μηδενικές τιμές για να μην κλείσει ποτέ.

Dual Head με xrandr

Dual Head με επέκταση (δοκιμασμένο με Intel open source driver)
xrandr --output VGA1 --right-of LVDS1

Για ακύρωση οθόνης.
xrandr --output VGA1 --off

Διαχείρηση αρχείων

Αποσυμπίεση από Windows Encoding

unzip -O cp737 FILE.zip

LANG=C 7z x FILENAME.zip
recursive rename = -r, ask for confirmation = -i convmv -f cp737 -t utf8 --notest -i -r .
Μπορείς να ελέγξχεις τα ονόματα των αρχείων με (only for verification, no file rename) find . -maxdepth 1 -type f | iconv -f cp737 -t utf8

Αν δεν έχετε το convm τότε

Συμπίεση

tar -cvjf file.tar.bz2 /folder or files

Για συμπίεση.

Αποσυμπίεση

tar -xvjf file.tar.bz2

x = eXtract

Αποσυμπίεση + split

tar -c - FILE_FOLDER | split -b 4350m - backup.tar

Εύρεση αρχείου αλλά και ενέργεια σχετικά μ' αυτό!

Πατήστε man locate ή καλύτερα man slocate, τώρα αν επίμενετε στην εντολή find..

find /folder_to_search/ -name file_or_folder

Μην ξεχάσετε την δεύτερη κάθετο από τον φάκελλο προς διευρεύνηση!

xargs

Αυτό φαίνεται ανούσιο, αλλά το χρησιμοποίησα για να μετατρέψω προϋπάρχοντα absolute (απόλυτα) soft link σε relative (σχετικά) ls *.tiff | xargs -l -t -i ln -sf ../{} ./

Find με βάση τον χρόνο

find / -mount -cmin -120

Find και εκτέλεση

find /mp3 -type f -name \*.mp3 -mtime -30 -exec mpg321 {} \;

Find with various wildcards

find cd0[6-9]*/ -maxdepth 1 -name \*.odt ! -name \*I_dont_want_this\*.odt

bash read line

Read FILE_LIST line-by-line and link the files. while read line; do ln -s ../*$line* ./; done < ../FILE_LIST

Mount iso cd / dvd image

mount -o loop file.iso /mnt/folder

Δεν χρειάζεται ειδικό πρόγραμμα όπως το daemonTools για Windows.

Αλλαγή ταχύτητας

readcd dev=/syskeyh sectors=0-1 speed=4 f=/dev/null

Αντιγραφή κατάτμησης (partition)

CD

dd if=/dev/hdc of=~/mycd.iso bs=2048 conv=notrunc

ΠΡΟΣΟΧΗ: Επικίνδυνη εντολή, αν δεν ξέρετε τί κάνετε.

Σκληρού δίσκου

Με συμπίεση (προσοχή στην παύλα): dd if=/dev/sda | gzip -c | split -b 650m - /mnt/arxeio.image

Αν ο προορισμός είναι μικρότερος: dd if=/dev/πηγή skip=1 of=/dev/προορισμός seek=1 bs=4k conv=noerror

Αντιγραφή MBR (master boot sector)

dd if=/dev/hda of=~/MBR.image bs=446 count=1

Partition (κατάτμηση) σε αρχείο ΜΕ συμπίεση

dd if=/dev/sda | gzip -c | split -b 650m - /mnt/file

ntfsclone -s -o - /dev/sda1 | gzip -c | split -b 650m - /mnt/file

Από συμπιεσμένο αρχείο σε partition (κατάτμηση)

cat /mnt/file* | gzip -dc | dd of=/dev/sda

Συχνότητα ελέγχου partitions

tune2fs -c 100 /dev/partition

monitor αρχείων

inotifywait --recursive --monitor --format "%w%f %e" /tmp/
Πηγή.

Χειροκίνητο "monitor" αρχείων

stat -t /* > stat0

stat -t /* > stat1

diff stat0 stat1

Συνέχισε σύμφωνα με το... μυαλό σου :-)

Διαγραφή cd/dvd

cdrecord dev=/syskeyh blank=fast

Εγγραφή audio-cd

cdrecord dev=/syskeyh -pad -audio ~/tracks/*.wav -speed 8

Εγγραφή dvd

dvd+rw-mediainfo /dev/syskeyh

Έλεγχος ταχύτητας.

Φάκελο

growisofs -Z /dev/syskeyh -R -J -speed=x /directory

Iso Image

growisofs -Z /dev/DEVICE=/folder/.iso -dvd-compat -speed=2

Εγγραφή cd

cdrecord -scanbus

Έλεγχος διαύλου.

cdrecord -inq dev=/dev/devx

mkisofs -r -R -J -l -input-charset iso8859-7 /home/user1 | cdrecord dev=0,4,0 -v --eject fs=8m speed=4 -tao -

(μην ξεχάσεις την παύλα στο τέλος!)

Κάποια drives θέλουν να ξέρουν πρώτα το μέγεθος των sectors. Τότε γράφουμε επακριβώς το mkisofs + τα εξής: -quiet -print-size. Παράδειγμα mkisofs -R -l -J -r -quiet -print-size /fakelos. Θα μας δώσει τον αριρθμό των sectors, θα τα γράψουμε στο cdrecord ως tsize=45345s (μην ξεχάσετε το "s") στο τέλος.

Εγγραφή bootable cd

mkisofs -b /bootfiles/boot.ima -c /bootfiles/boot.catalog -r -R -J -l -L /home/user1 | cdrecord dev=0,4,0 -v --eject speed=4

Bootable USB

Salix example.

cd /salixfolder/; mkisofs -o /mnt/tempfs/salix.clv-test-modules.iso -v -J -R -D -A "slax.clv" -V "Slax optical" -no-emul-boot -boot-info-table -boot-load-size 4 -b boot/syslinux/isolinux.bin -c boot/syslinux/isolinux.boot .

Χρήσιμα για δίκτυο

Δικτυακό backup

dd if=/dev/hda | gzip -cf | nc 192.168.1.10 -p 8000

Οπου βάζεις την ip του pc που θέλεις να το στείλεις.

nc -l -s 192.168.1.10 -p 8000 | gunzip -cf | dd of=/dev/hda

Διαγραφή routing table (επικύνδινο!)

ip route flush table main

Κατέβασμα ιστοχώρου

wget --output-file=wget_site.log -r -L -k --limit-rate=10000 http://site.com

Κατέβασμα ιστοσελίδας με περιορισμούς

wget --convert-links -p -r -L -l 1 -P test/ http://site.com/page

Κατέβασμα με λίστα αρχείων

wget -i /h_lista_me_ta_arxeia -x --cut-dirs=x --limit-rate=10000

Επανεκίνηση Samba

smbcontrol smbd reload-config

smbcontrol nmbd reload-config

Find Samba Share

smbtree -N

nmblookup (e.x.) MYBOOK

Bittorrent

bittorrent-console

bittorrent-console --max_upload_rate 3 --minport 16882 --maxport 16882 --save_in Φάκελλος --display_interval 5 --no_spew [Bittorrentfile]

ctorrent

ctorrent -e 24 -E 1 -p 6882 -s /home/shared/ -D 45 -U 10 file.torrent

Irssi (IRC)

Window Management

/win show x

/win size x

Log

/log open -targets #slackbuilds ~/.irssi/SBo-%Y-%m-%d

Σύστημα

temp disable ccache

export CCACHE_DISABLE=1

Δημιουργία Kernel

Πρώτα το patching!

cd /usr/src/linux/

bzcat patch-xxxx.bz2 | patch -p1

Έτοιμοι για ρύθμιση και compile

cd /usr/src/linux

make mrproper

cp myconfig .config

make oldconfig

make xconfig

(load myconfig eg: file > open)

vi Makefile

(σημαντικό! για να γίνουν τα modules σωστά, συμπληρώνουμε το όνομά μας (παράδειγμα) στο extra version)

make bzImage ή make CC=distcc -j 8 bzImage

make modules

make modules_install

cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage2.6.myconfig

cp System.map /boot/System.map2.6myconfig

ln -sf /boot/System.map2.6myconfig /boot/System.map

vi /etc/lilo.conf

lilo

Δημιουργία συγκεκριμένου module

make menuconfig (xconfig)

make prepare

make module SUBDIRS=sound/pci

make modules_install SUBDIRS=sound/pci

Αλλαγή της συχνότητας επεξεργαστή τύπου SpeedStep

Προϋπόθεση ο kernel 2.6.

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

echo 500000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

Βλέπουμε την τρέχουσα συχνότητα με cat /proc/cpuinfo

Ramdisk

ls /dev/ram*


Έλεγχος για ύπαρξη των συσκευών.

less /var/log/dmesg | grep RAMDISK


Έλεγχος για μέγεθος RAMDISK.

mke2fs -m 0 /dev/ram0


Format το Ramdisk mkdir /mnt/rd0

mount /dev/ram0 /mnt/rd0

chown xxxxx.root /mnt/rd0

Link

ln -s /πηγή /link

bmon

bmon -o null -O html:path=/mypath/ -i proc -p eth0 &

Udev

udevadm monitor

vi /etc/udev/rules.d/udev.rules

BUS=="xxx", KERNEL=="yyy(ex.sd[a-z]1", SYSFS{xxxxxx(ex.product)}=="xxxxxx", NAME="%k%n", SYMLINK+="xxx/xxx(ex.usb/ondioFM)"

Για usb βοηθάει το lsusb -v

Λειτουργίες για κείμενο

Συγχώνευση (join) γραμμής

tr '\n' ' '

vi replace (το ξεχνάω συνέχεια αυτό :-)

:%s/old_text/new_text/g

g = global

:%s/tothelw/&kai_kati_allo/gc

To & συμπληρώνει (append) και το c για confirmation

:%g!/tothelw/d

Σβήνει όλες τις γραμμές ΔΕΝ (!) έχουν "tothelw"

:%s/kati/\r/g

\r = newline

:10,40s/this/that/g

10,40 = range

vi replace με μεταβλητές

\(κάτι\) = μεταβλητή 1 (συμβολίζεται με \1)

sed αντικατάσταση με μεταβλητή

echo test | sed 's/test/&_abc/' test_abc

Vim -d

gawk -F'\"' '{ print $4 }'

Εκτύπωση της 4ης στήλης που προσδιορίζεται με το delimiter ".

gawk -F'\"' '{ print $4 }'

Ροή δικτύου (Traffic Shaping)

tc qdisc del dev eth0 root

Διαγραφή κανόνα

Νέα σύνδεση σε γραφικό περιβάλλον

startx -- :1

(τιμές από 0 έως 5)

Γραφικό περιβάλλον από άλλον υπολογιστή

Στον host: xhost IPtoyALLOY
Σύνδεση στον remote: με ssh -X, αν είναι με screen cp .Xauthority file from original user.

Xine με συγκεκριμένους υπότιτλους

Κανονικά οι υπότιτλοι πρέπει να έχουν το όνομα της ταινίας, αλλά με διαφορετική "επέκταση". Έτσι, αν η ταινία είναι η movie.avi οι υπότιτλοι: movie.srt

xine file.avi::file.srt

Δημιουργία traffic στο δίκτυο για δοκιμή bandwidth

boxA netcat -l -p 1234 > /dev/null

boxB netcat boxA 1234 < /dev/zero

Απομακρυσμένη οθόνη σε τοπικό δίκτυο

xhost +client_ip_or_name

Στον server.

export DISPLAY=server:0

Στον πελάτη.

ocr

Για βάση δεδομένων χρειάζεται φάκελο στο home με όνομα db (mkdir ~/db)

gocr -i file_image.pbm -o output_text -f UTF8 -m 130 -m 256 -m 32 -a 90

Ηχογράφηση

arecord -D plughw:0,0 file.wav

arecord -f cd | lame -r -V 3 --vbr-new - > my-sound-card-mix.mp3

Αν θες να ηχογραφήσεις την μίξη (ότι παίζει η κάρτα ήχου) και έχεις τον σύστημα pulse (υπάχει το Alsa και το Jack) τότε φορτώνεις:
pacmd load-module module-loopback latency_msec=50

και μετά:
arecord -D pulse -f cd | lame -r -V 3 --vbr-new - > my-sound-card-mix.mp3

split mp3

mp3 split - αυτόματο, με την σίγαση (-40 = dB) mp3splt -s -p th=-40,trackjoin=20,rm=1_1 file.mp3
th = threshold of -80 db to split
rm = keep 1 second
trackjoin = seconds for minimum duration

mp3 split με διάρκεια mp3splt file.mp3 -o file__trimmed mm.ss mm.ss

Αντιγραφή σε άλλον υπολογιστή με ssh

scp arxeio user@domain:/fakelos

Προχωρημένη / αρρωστημένη κατάσταση, φαντασία να έχεις...

cat arxeio | ssh "cat > arxeio"

Magic SysReq Key

echo s > /proc/sysrq-trigger

chroot

One-liner DEV=/dev/sdb1 mkdir /mnt/$DEV; mount /dev/$DEV /mnt/$DEV; mount -t proc none /mnt/$DEV/proc; mount -o bind /dev /mnt/$DEV/dev; chroot /mnt/$DEV
mount -t proc none /mnt/mountpoint/proc

mount -o bind /dev /mnt/mountpoint/dev

chroot /mnt/mountpoint/

mpeg4 (xvid)

Πρώτa με lsdvd, βλέπουμε chapters κ.ο.κ.

Αντιγραφή στον σκληρό δίσκο με vobcopy -l

Κάποιες φορές καλύτερα για να τραβήξουμε μόνο ένα angle tccat -t dvd -i /mnt/dvd -T 1,-1,1 -d 2 > dvd.vob

mencoder FILE.vob -o file.mp4 -profile x264 -of lavf

~/.mplayer/mencoder.conf
[x264]
profile-desc="X264 encoding"
channels=2
oac=mp3lame=1
lameopts=vbr=4
ovc=x264=yes
x264encopts=preset=veryfast:crf=23:tune=film

ffmpeg -i ./FILE.vob -vcodec libx264 -crf 23 -preset veryfast -tune film -vf setsar=16:9 -vf setdar=16:9 -acodec libmp3lame -aq 4 -y ./FILE.mp4

Ταινία παραμορφωμένη όπου τραβήχτηκε από 16:9 σε 4:3

transcode -i tainia.vob -T 1,-1 -Y 0,32 -B 32,0 ffmpeg -w 800 -F mpeg4 -b 160,0,5,0 --nice 19 -y ffmpeg -o tainia.avi

Επανασυμπίεση video κινητού για μικρότερο μέγεθος

ffmpeg -i ./file.3gp -itsoffset 0.5 -vcodec libx264 -crf 23 -preset veryfast -acodec copy ./file.3gp.mp4
crf = 23 είναι η ποιόητα, όσο μικρότερος αριθμός τόσο καλύτερη ποιότητα. Μην επιλέξετε κάτω από 18!
preset = veryfast, έχει άμεση σχέση με την ποιότητα, εγώ δεν διακρίνω διαφορά με faster, fast, medium.
itsoffset = μισό δευτερόλεπτο νωρίτερα ο ήχος.

Ενσωμάτωση υποτίτλων ως εικόνα

ffmpeg -i file.mp3 -vf "subtitles=file.srt" -y output.mp4

side-by-side video

ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS, pad=iw*2:ih[bg]; [1:v]setpts=PTS-STARTPTS[fg]; [bg][fg]overlay=w" side_by_side.mp4

Διαμοιρασμός αρχείων τοπικά

mediatomb -m /mediafiles/ -a /mediafiles Ωραίος τρόπος να περάσετε ταινίες και mp3 στο iPhone (VLC)

Μετατροπή video σε dvd

ffmpeg -i file.avi -target dvd -aspect 16:9 -crf 23 outputfile.mpg
Περισσότερη λεπτομέρεια εδώ:

# ffmpeg version 0.8.7
nice ffmpeg -i ../video-file.avi -f dvd -deinterlace -b 3000k -maxrate 5000k -minrate 0 -bufsize 1835008 -packetsize 2048 -muxrate 10080000 -g 15 -trellis 1 -vf crop=720:576 -acodec copy -fs 4.3G -ss 00:00:05.560 -t 00:01:00.000 -s 720x576 -y dvd-file.vob

Portrait (κάθετο) video to landscape (οριζόντιο)

Δοκιμασμένο με iPhone. ffmpeg -i IMG_0906.MOV -c:v libx264 -preset ultrafast -profile:v main -vf rotate=PI/2 -crf 23 -acodec libmp3lame -ab 96k -y ./IMG_0906.MOV.mp4

Muxing (merge) of video and audio

Αντικατάσταση ήχου σε video. avimerge -i video.avi -p audio.mp3 -A 0 -o video-new-audio.avi ... and with ffmpeg for mp4 (merge new audio on video) ffmpeg -i video.mp4 (whatever) -i audio.mp3 -vcodec copy -acodec copy -map 0:0 -map 1:0 -y video-new-audio.mp4
One video, multiple audio channels. ffmpeg -i VIDEO.mp4 -i AUDIO1.mp3 -i AUDIO2.mp3 -i AUDIO3.mp3 -acodec copy -vcodec copy -map 0:0 -map 1:0 -map 2:0 -disposition:a:0 default -disposition:a:1 none -disposition:a:2 none -y NEW-VIDEO-with-3-audio-channels.mp4
-disposition = ορισμός default track.

Εγγραφή σε DVD

dvdauthor -o dvd -t -f dvd-file.vob dvdauthor -T -o dvd/
Η δεύτερη εντολή ετοιμάζει το απαραίτητο αρχείο VIDEO_TS.IFO mkisofs -dvd-video -udf -o dvd.iso dvd/ cdrecord speed=2 dev=/dev/YOURDEVICE dvd.iso

Some tutorial.

Εξαγωγή ήχου και συμπίεση

tccat -t dvd -i /media/dvd | tcdemux -a 0 -x ac3 | tcextract -t vob -x ac3 | tcdecode -x ac3 | lame -x -h -b 160 - arxeio.mp3

ffmpeg: μετατροπή σε divx με το ζόρι

Αυτή η τεχνική χρησιμοποιείται γιατί κάποια standalone players βλέπουν tag xvid και δεν παίζουν τα video, ενώ μπορούν! ffmpeg -i input -vtag divx -b 600k -acodec libmp3lame -ab 128k output.avi

ffmpeg: κράτημα μόνο του mp3 stream.

for i in *.flv; do ffmpeg -acodec copy -i $i $i.mp3; done

Screen Capture (ffmpeg)

You can also try recordmydesktop. ffmpeg -y -r 25 -s 1020x760 -f x11grab -i :0.0+0,0 -crf 23 -preset veryfast /mnt/tempfs/screencapture.mp4
-preset ultrafast for slow processors, or if you are in hurry.

Extract problematic stream (subtites)

mencoder FILEWITHSUBS -nosound -ovc frameno -o /dev/null -vobsuboutindex 0 -sid 0 -vobsubout SUBFILE

Extract problematic strem (audio)

Verify, found the aid of sound streams with mplayer -v FILE then...

Encode multiangle dvd

HandBrakeCLI -i DVD_FOLDER -c 1-17 --angle 1 -e x264 -E mp3 -q 23 -a 3,1 -Q 4 -6 stereo -o /mnt/tempfs/test.mp4

Hints
-a 3,1 = audio tracks 3 and 1
-c 1-17 = chapters

mplayer FILE -dumpaudio -dumpfile FILE.stream -aid STREAMINDEX [ex. 128]
more info

Screen Capture (image)

You can also try ksnapshot or print screen button! import -window root ~/myscreen.png

Synchronize

Local

rsync -avn --delete /source /dest

Απομακρυσμένα

rsync -av --delete /source user@host:/dest

Εικόνα

Βρες τις φωτογραφίες "portrait"

Οι SLR μηχανές γράφουν ενα tag για τον προσανατολισμό της φωτογραφίας, η παρακάτω εντολή βρίσκει όλες τις φωτογραφίες με κάθετο προσανατολισμό (portrait) και δημιουργεί μία λίστα στο αρχείο portraits.

for i in *.JPG; do exiv2 -pa $i | grep Orientation.*bottom && echo $i; done > portraits

Για φωτογραφικές που δεν χρησιμοποιούν το exif tag (όπως οι compact) ίσως γράψω tutorial :)

Αλλαγή μεγέθους

Χρησιμοποιώ το convert από την σουίτα προγραμμάτων του ImageMagick
convert -resize 800x600 image.jpg image_resized.jpg

Μετατροπή σε ασπρόμαυρο

convert -white-threshold 50% -black-threshold 100% -rotate 90 -quality 100 test.jpg -colors 2 test_xv.png


or
convert -threshold 50% -rotate 90 -quality 100 test.jpg -colors 2 test_xv.png

convert -rotate -90 -white-threshold 80% -fill white -draw 'rectangle 1300,0 1500,2150' -crop '2640x1960+60+112' -resize '1920x1080^'


Εικόνες σε pdf ή σε multipage tiff

convert *.jpg -stretch-contrast 0% -density 150 together.pdf (instead of pdf write tiff for tiff and add -compress LZW)


density = dpi 150

pdf σε εικόνα

Για ασπρόμαυρο convert -colorspace Gray -density 150 -trim FILE.pdf -alpha deactivate FILE.png

Labeling

convert -pointsize 18 -resize 512x288 input_file.jpg -fill '#0008' -draw 'rectangle 5,1,96,48' -fill white -annotate +10+40 'label' output_file.jpg

diff / patch

diff -U 0 originaldirectory/ targetdirectory > my_patch.diff

patch -p0 < my_patch.diff

suspend proccess

kill -s tstp proccess

ionice

ionice -c3 -ppid

kill -s tstp proccess

static ip for testing

ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255


route add default gw 192.168.0.1 dev eth0

PDF merge


gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=finished.pdf *my_sorted_files*.pdf
Or use pdfconcat

PDF crop

pdfcrop --margin '-40 -40' file_pdfcrop_prepared.pdf file_cropped-40.pdf

mySQL / mariaDB

add column / field ALTER TABLE mytable ADD field varchar(40) AFTER otherfield; UPDATE table SET field = 'newdata' WHERE column_or_field = 'olddata';

CREATE USER 'finley'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON database.* TO 'finley'@'localhost' WITH GRANT OPTION;
show variables like '%ssl%';

admin

Wireless admin

list connections: rfkill list

Geotagging

nmea se gpx gpsbabel -i nmea -f yourNMEA.file -o gpx -F convertedGPX.file

Ubuntu upgrade via console

do-release-upgrade

git

git status git pull git commit -m "message" git push

git advance

git checkout BRANCH git checkout -b BRANCH git remote -v git remote add upstream http://github.com/adafruit/TinyLora git fetch upstream git merge upstream/master git push

git tag

git tag -a 1.2 git push origin

Network monitor commands

nethogs, iftop, tcpdump, netstat, iptraf

GUI

Xfce4 keyboard shortcuts. Compare system setting with user setting.

vim -nd /home/krg/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

Τυχαία εικόνα

1954_12_Soft Watch at the Moment of First Explosion.jpg

You are here with: CCBot/2.0 (https://commoncrawl.org/faq/)
Your IP: 35.175.107.142

Made in Linux :)

Hits: 4899
Hello robot CCBot!

Φόρτος CPU: 0.16 | 0.11 | 0.06