Obsah
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…
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
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