====== Useful Commands ====== On this page i am gathering useful GNU/Linux commands that i came across during my work... ===== Sources & External References… ===== These are links to similar pages with lots of Linux notes, simple short HOWTOs, useful one-liners, etc... * http://linux.stoyan.cz/ * http://mindspill.net/computing/linux-notes/ * http://cb.vu/unixtoolbox.xhtml * http://www.addedbytes.com/cheat-sheets/ * http://www.cheat-sheets.org/ * http://bruxy.regnet.cz/web/programming/CZ/jednopapirove-reference/ * http://www.abclinuxu.cz/serialy/unixove-nastroje * http://osa.fiit.stuba.sk/os/prehlad_prikazov/ * http://osa.fiit.stuba.sk/os/html/Obsah.html * http://www.rayninfo.co.uk/vimtips.html * http://grml.org/zsh/zsh-lovers.html * http://successtheory.com/tips/zshtips.html * http://navody.josef.kyrian.cz/ * https://www.safematix.com/ ===== Commands ===== Tuhle stránku prosím nepřekládat do češtiny! FIXME prepsat z http://blog.harvie.cz/useful-gnulinux-commands/ ==== Audio ==== === Convert WAV to MP3 === lame --preset standard in.wav out.mp3 use "%%--preset help%%" for overview on different quality settings... === Batch Re-encode MP3s to Lower Bitrate === I had few audiobooks with stupidly big bitrate and without using VBR, so i made them smaller using this command (launch it in directory with your mp3s): QUALITY=voice; mkdir "lame-$QUALITY"; ls -1 *.mp3 | while read i; do lame --preset "$QUALITY" "$i" "lame-$QUALITY/$i"; done; Note that all ID3 tags will be lost (i preffer good filenames anyway), original files will be preserved... Maybe you need to recode music instead of spoken word, sou you can change QUALITY variable at begining of command. To get list of possible values, check output of **%%lame --preset help%%**. === Extract Audio from mp3 or Video File === export to wav ffmpeg -i input.mp4 out.wav export to 128kb/s mp3 ffmpeg -i input.mp4 -ab 128k out.mp3 ==== Video ==== === Join Multiple Video Files (Same Encodings) === So far, I have tried this command successfully with wmv and mpg files. To join several video files [part1], [part2], etc into a file called [whole], run the following command: mencoder -oac copy -ovc copy -o [whole] [part1] [part2] ... [partn] If the parts are listed in the correct order when you run ls -l [part]*, you don't have to list all parts when you call mencoder: mencoder -oac copy -ovc copy -o [whole] [part]* === Capture (Record) MMS Stream === mencoder 'mms://host/path/video.wmv' -oac copy -ovc copy -o video.wmv (HTTP streams can be captured using wget or curl - like regular downloading. press ^C (in another words ctrl+c) to stop recording). === Join Multiple Video Files (Different Encodings) To Single XVID === Similar as for same encodings (takes longer time) You should adjust bitrate in the xvidencopts... mencoder -oac copy -ovc xvid -xvidencopts bitrate=800 -o [whole] [part]* === Convert Video to 3GP === This one's suitable for older Nokia cellphones (you can decrease sound quality using -ar 8000): ffmpeg -i video.avi -f 3gp -vcodec h263 -b 100000 -s qcif -r 12 -acodec libfaac -ar 16000 -ab 16 -ac 1 outputfile.3gp === HardCode Subtitles Directly to Video === This can be usefull before converting videos to 3gp or mp4 for cellphones or pocket devices without subtitle support. mencoder input.flv -subcp cp1250 -sub subtitles.srt -o output.flv -oac lavc -ovc lavc -lavcopts abitrate=128 vbitrate=1200 you can try "-oac copy" for speedup (didn't worked for me) or manipulate the bitrates. those options can be also usefull for manipulating appearance of subtitles: -subfont-text-scale -subpos -spualign -font -slang (see man mencoder for more...) === Repair Index in Video Files === Rebuild the idx without re-encoding mencoder [file.avi] -forceidx -oac copy -ovc copy -o [fixedfile.avi] You can also remove currupted idx by -noidx option (most players will generate index by self - mplayer with -idx option) mencoder [file.avi] -noidx -oac copy -ovc copy -o [fixedfile.avi] === Convert Between Subtitle Formats or Change Subtitle Timing === echo q | mplayer /dev/zero -rawvideo pal:fps=1 -demuxer rawvideo -vc null -vo null -noframedrop -benchmark -sub input_subtitles.sub -dumpsrtsub See man mplayer for filename of generated subtites (it's dumpsub.srt for srt format). Beside of -dumpsrtsub you can also use those formats: -dumpjacosub -dumpmicrodvdsub -dumpmpsub -dumpsami (check man mplayer for more). You can also change timing of subtitles by adding -subdelay [[-]seconds] option. === Extract thumbnails from video file === mplayer input.avi -ao null -vo jpeg -sstep 32 -frames 23 -vf scale=640:480 Makes 23 thumbnails scaled to 640x480 (optional) with 32 second step between two of them. === Stabilize shaky video using vid.stab === ffmpeg -i SHAKY_INPUT_VIDEO.mp4 -vf vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform_vectors.trf -f null - ffmpeg -i SHAKY_INPUT_VIDEO.mp4 -vf vidstabtransform=input=transform_vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -preset slow -tune film -crf 18 -acodec copy SMOOTH_OUTPUT_VIDEO.mp4 * https://www.epifocal.net/blog/video-stabilization-with-ffmpeg * http://public.hronopik.de/vid.stab/features.php Old way, not very effective: ffmpeg -i input.mov -vf deshake output.mov === Correct video Hue, Saturation and Brightness === ffmpeg -i IN.mp4 -vf hue=h=0:s=2:b=0 OUT.mp4 === Capture screencast using ffmpeg === ffmpeg -video_size 1280x800 -framerate 25 -f x11grab -i :0.0+0,0 output.mp4 with sound: ffmpeg -video_size 1280x800 -framerate 25 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -i default output.mp4 open mirrored webcam: mpv --vf=lavfi="hflip" tv:// ==== CUPS Printing ==== Install CUPS and you get the print server cupsd and the print commands lpstat, lpr and lpq, amongst others. I installed CUPS on two Gentoo boxes, following the Gentoo Printing Guide. On one of these machines I run the cupsd server. To specify the print server on the client machine, edit /etc/cups/client.conf to contain: ServerName the.print.server lpstat can be used to get status information. For example, the following command shows the accepting state of printer queues. If no printers are specified then all printers are listed, in my case my HP LazerJet 1100. localhost # lpstat -a HPLJ1100 accepting requests since Jan 01 00:00 If you want to check a different server: lpstat -h the.other.server -a Print a file: lpr [filename] Specify printer, page size and grayscale (i.e. no colour): lpr -P Epson_stylus_c66 -o PageSize=A4 -o ColorModel=Grayscale [filename] ==== Misc. ==== === Encrypt File Using GPG === Encrypt. This will add an encrypted file called [filename].gpg. gpg --cipher-algo AES -c [filename] Decrypt. This will create the decrypted file called [filename]. gpg -o [filename] -d [filename].gpg === Send Email from Commandline === You can use the mail command. I believe it relies on sendmail by default. echo -e "message body" | mail -s "message subject" email_address === Firefox + Flashplayer blocking ALSA === Note this is only for Flash Player 9 and lower with installed (lib)flashsupport. If you have problems with running Flash Player 10 on (latest) ALSA make sure that you've uninstalled (lib)flashsupport. IMHO you should still need (lib)flashsupport to run latest Flash on OSS, Arts, PulseAudio and others. You have to use proper flashsupport package compiled against this sound server. FlashPlayer <= 9 You need to have alsa-oss installed, then you can try this configuration: cat /etc/firefox/firefoxrc FIREFOX_DSP="aoss" or you can also try: FIREFOX_DSP=auto And you can also try to run firefox like this (and/or update your shortcuts): aoss firefox [args...] === Unix TimeStamp StopWatch === clear; while true; do echo -ne "$(date +%s)r"; sleep 1; done; You can press enter to save actual time or ^C to stop... === Generating Random Passwords and/or Random Data === head -c 1024 /dev/urandom | md5sum | cut -d ' ' -f 1 if you want lot of random passwords you can use this command: for i in $(seq 1 5); do head -c 1024 /dev/urandom | md5sum | cut -d ' ' -f 1; done; (example for generating 5 passwords - you can adjust the second seq argument value) If you want to get random string of specified lenght containing only specified characters, you can use this command: cat /dev/urandom | tr -c -d '01' | head -c 100 example will generate 100 zeroes or ones, but you can also specify different characters or one of tr's character classes instead of '01': * **[:lower:]** for lowercase letters * **[:alpha:]** for all letters * **[:alnum:]** for all letters and numbers * **[:graph:]** for all printable characters === Figlet font overview === ls /usr/share/figlet/fonts/*.flf | cut -d . -f 1 | while read i; do echo "$i:"; figlet -f "$i" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890; done | less === Find broken links at website === wget --spider -nd -o wget.log -e robots=off -r -p http://example.com grep -B 2 '404' wget.log | egrep -o 'https?://.*' | sort -u === Strip comments from C source code === gcc -P -fpreprocessed -dMD -E file.c ==== Set date ==== linux, udev # timedatectl set-ntp 0 # timedatectl set-time 2022-10-01