Bash

From CleanPosts

Jump to: navigation, search

Contents

Convert .avi video files to smaller .mp4 format

ffmpeg -i 'U2 - New Years Day.avi' 'U2 - New Years Day.mp4'

Convert GIFs from Twitter that download as MP4s back into uploadable GIFs again

ffmpeg -y -i input.mp4 -filter_complex "scale=320:-1:flags=lanczos[x];[x]split[x1][x2]; [x1]palettegen[p];[x2][p]paletteuse" output.gif

Convert man page to text file

man concalc | col -bx >concalc.txt

Convert RPM package to DEB package

alien file.rpm

Convert text files from MS-DOS format to UNIX format

tr -d '\r' <MULE.ASC >mule.txt

Convert WordStar files to plain text

cat rubymae.ws | tr -c '[:print:]\t\r\n' '[ *]' >rubymae.txt

Copy a file

cp INFILE OUTFILE

Create a custom command to list files

alias l = 'ls -l --color=auto'

Create a directory using today's date

mkdir $(date +%Y%m%d)

Create a file and a directory with unique names from the system clock

touch "$(date +"%y%m%d%H%M%S")";sleep 1; mkdir "$(date +"%y%m%d%H%M%S")"

Create a link

ln -s /initrd/mnt/dev_ro2 HOME

Remove empty directories under the working directory

find . -empty -exec rm -rf {} \;

Display all subdirectories in a tree format

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//----/g' -e 's/^//' -e 's/-/|/'

Display time since boot

uptime

Display unique lines in a sorted file

uniq <FILE1 >FILE2

Download streaming videos and convert them to MP3s

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl sudo chmod a+x /usr/local/bin/youtube-dl youtube-dl --title --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=L3FmBjX-p0I

Extract audio from any video file

ffmpeg -i Pet-Shop-Boys---West-End-Girls.mp4 -vn west-end-girls.ogg

Extract gzip compressed tar archives

gunzip progs.tar.gz tar xvf progs.tar

Extract pages from a PDF to build a new PDF

ps2pdf -dFirstPage=4 -dLastPage=8 input.pdf output.pdf

Extract tarball

tar -xvf /dev/hda/FILE

Find duplicates on your filesystem

duff -r *

Find files by name

find . -name *wav -print

Find man page for a command

whereis -m genisoimage genisoimage: /usr/share/man/man1/genisoimage.1.gz

Find ten biggest hogs of disk space under a directory

du -s /usr/share/* | sort -nr | head

Find text in a file

awk 'chevy' cars.txt

Format floppy disk

fdformat /dev/sde

Generate a pdf from a man page

man -t vim | ps2pdf - > vim.pdf

Generate a random password

openssl rand -base64 12

FRYSkfIikVA7AuNm

openssl rand -base64 24

l8Ht0b83wCAnH95izexZStOW73IqH/Mz

Get a weather forecast for your city

curl wttr.in/seattle

Get information about all files of a certain type

find . -name *com -exec file {} \;

Get the sizes of all subdirectories under a directory

du -sh MYDIR

Get your public IP address

curl ifconfig.me; echo

Grab a copy of a website

wget -w9 -r --random-wait -l3 -np -E https://rosettacode.org/wiki/Rosetta_Code


List primes between 2 and any number

#!/bin/bash
for (( i=2; i<=$1; i++ ));do
l=$(factor $i | cut -d : -f 1)
r=$(factor $i | cut -d : -f 2 | sed 's/ //g')
if (( $l == $r ));then
echo $i
fi
done

List the misspelled words in a file

enchant -l matthew

Make a file executable for all users

chmod u+x FILE

Make a file lowercase

cat FILE1.TXT | tr '[A-Z]' '[a-z]' > FILE2.TXT

Make all filenames in a directory lowercase

#!/bin/bash 
for x in `ls` 
do 
if [ ! -f $x ]; then 
continue 
fi 
lc=`echo $x | tr '[A-Z]' '[a-z]'` 
if [ $lc != $x ]; then 
mv -i $x $lc 
fi 
done 

paste into file called lowerit chmod u+x lowerit ./lowerit

Make a new file of the individual words in another file

tr ' ' '\012' <INFILE >OUTFILE

or

for WORD in `cat FILE`
do
echo $WORD
done

Make an image of a CD on your hard drive

dd if=/dev/sr0 of=image.iso

Make archive

tar -c DIRECTORY | bzip2 > DIR.TAR.BZ2

Make directories for 36 months using brace expansion:

mkdir {2021..2023}-{01..12}

Make ISO from temp directory

genisoimage -r -joliet-long -o files1.iso temp

Make the ls command print in a tree format

alias tree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^//' -e 's/-/|/'"

Make the ls command useful for a change

alias ls='ls -lhGpt --color=always'

Make the text in a file all uppercase

cat testa.txt | tr '[a-z]' '[A-Z]' > testb.txt

Mount that image on your system to use it

(The mount point must already exist) mount -o loop image.iso /mnt/temp

Mount your SquashFS file

mount -o loop -t squashfs PUP_412.SFS /mnt/pup


Move all files starting with "B" into the b subdirectory

find -name "B*.*" -exec mv {} b \;

Move all the .jpg images from one folder to another folder, recursively

find www.cleanposts.com -type f -name *.jpg -exec mv '{}' /home/teresita/Downloads \;

MP3 to WAV conversion

madplay --output=wave:OCEANLAB.WAV OCEANLAB.MP3

Perform a ROT 13 conversion

#!/bin/sh
echo "$1" | tr '[A-Za-z]' '[N-ZA-Mn-za-m]'

Prime factors of first 100 integers

echo {1..100} | factor

Print a complete date-time group

date '+%Y-%m-%d/%k:%M:%S'


Print the current month in Julian dates

cal -j


Recursively move mp3 files in many directories to a single target directory

find -name '*.mp3' -exec mv -i {} /home/minix/Desktop/music \;

Rename all files with extension .OUT with the extension .txt

rename 's/\.OUT$/.txt/' *

Rename in bulk

OLD=xxx
NEW=yyy
for F in $OLD*
do
SUFFIX=`expr $F : '$OLD\(.*\)'`
mv $OLD$SUFFIX $NEW$SUFFIX
done

Replace spaces in a filename with hyphens

find . -name "* *mp3" -exec rename 's/\ /-/g' {} \;

Replace spaces in the filename of all the files in a directory with hyphens

find . -name "* *mp3" -exec rename 's/\ /-/g' {} \;


Return pi to the number of digits specified on the command line (Answer grows more accurate the longer the fractional part)

#!/bin/bash 
echo "scale=$1;a(1)*4" | bc -l

Return the name of the most-recently modified file in a directory

$ ls -t | head -1

Run the last command again as root

sudo !!

Send a man page to the terminal minus the embedded backspace characters

man genisoimage | col -b | less

Tally up a column of figures

#! /bin/sh
case "$1" in 
[1-9]*) colnum="$1"; shift;; 
*) echo "Usage: `basename $0` colnum [files]" 1>&2; exit 1;; 
esac 
awk '{sum += $col} 
END {print sum}' col=$colnum OFMT='%.2f' ${1+"$@"}

Turn a directory into a SquashFS file

mksquashfs /tmp/merge PUP_412.SFS

Turn the capslock key into a second ESC key

setxkbmap -option caps:escape

Upload a file to your webspace

wput MYFILE ftp://username:password@web.host.com

Use imagemagick to take a screen shot

import screenshot.jpg

Use CUPS printer management system

localhost:631 (in a browser address bar)

Use the command line as a quick calculator

echo $((145+5))
echo $((145-5))
echo $((145*5))
echo $((145/5))
echo $((145%5))
echo $((145**5))
Personal tools
Strangers In Paradise