Bash Oneliners | |
command | action |
---|---|
grep -v "^#" $* | grep -v "^$" | print file contents excluding comments starting with # and empty lines |
netstat -tpauln | print open TCP connections *and* application names |
find . -maxdepth 1 -type d -exec du -sh {} \; | sort -hr | print sorted directory sizes starting with the biggest |
find . -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 du -sh | sort -hr | same as above, but supposedly more efficient for lots of files |
help test | less | does not do much work on itself but it is good reading |
[ -n $SOMEVAR ] && echo "IS_NOT_EMPTY" || echo "IS_EMPTY" | execute first command on empty string, or execute second command otherwise (the Python way) |
mkdir $(echo {01..22}spam) | create folders 01spam, 02spam, 03spam, etc. |
cp filename{,.bak} | create backup of file |
!! | rerun previous command |
sudo !! | rerun previous command as root |
python -m SimpleHTTPServer | run web server for current dir on port 8000 (Python 2.x version) |
python -m http.server | run web server for current dir (Python 3 version) |
:w !sudo tee % | write file in vim as root |
ssh-copy-id remote-machine | copy rsa/dsa key to remote machine for public authentication |
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg | record current desktop to mpeg file |
echo -e ${PATH//\:/\\n} | string replace with bash (the example replaces colon with end-of-line |
curl -O http://rss.timegenie.com/forex.xml | download file to local file forex.xml |
tr -dc ' -~' < /dev/urandom | head -c 20 | generate random string |
echo $(($RANDOM % 100)) | generate random number in range |
sudo find . -user root -exec chown spamneggs {} \; | find all files owned by root and change owner to spamneggs |
function mcd { mkdir ${1} && cd ${1} } | a ~/.bashrc shortcut to make a directory and move into it. |
function catw { cat `which "${1}"` } | a ~/.bashrc shortcut for typing cat `which script` |
function vimw { vim `which "${1}"` } | a ~/.bashrc shortcut for typing vim `which script`; you get the idea... |
Search
M y b r a i n h u r t s ! w e r e a l l y t h i n k w h a t y o u k n o w
30 April 2010
Bash oneliners or helpful aliases for your .bashrc
Useful bash oneliners that might or might not be worth including as aliases in your ~/.bashrc file.
See also:
15 April 2010
Running a command recursively on all files in a directory tree
Windows solution
Here is a script which calls mplayer on every file in a directory including subfolders:The script will work on dirs containing spaces and non-ascii characters since all file names are converted to short dos names (via the `~s` modifier).
set mplayer=z:\path_to_mplayer\mplayer.exe
for /f "delims=" %%f in ('dir /b /s "%cd%"') do (%mplayer% "%%~sf")
Linux bash solution
The bash shell solution is much easier to read than the windows one:#!/bin/sh
cwd=`pwd`
for f in `find $cwd -type f -iname "*.mp3" `; do
mplayer $f
done
A Better Solution
An alternative solution for both Windows and Linux would be to create a playlist file first, and then run a single mplayer instance with the-playlist
switch:
Linux bash
#!/bin/sh
find $pwd -type f -iname "*.mp3" > /tmp/allfiles.m3u
mplayer -playlist /tmp/allfiles.m3u
Windows Batch
set mplayer=z:\path_to_mplayer\mplayer.exe
set playlist=%TEMP%/mp3playlist.m3u
dir /b /s "%cd%" | find /I ".mp3" > "%playlist%"
%mplayer% -playlist "%playlist%"
Shortest solution
mplayer $(find . -iname "*.mp3")
Subscribe to:
Posts
(
Atom
)