🌱 Bash-Oneliner

Source

A collection of handy Bash One-Liners and terminal tricks for data processing and Linux system maintenance.

Things I use

Ctrl + r begins a backward search through command history.(keep pressing Ctrl + r to move backward) Ctrl + a move to the beginning of line. Ctrl + e move to the end of line. Ctrl + k delete all text from the cursor to the end of line.

!! run previous command sudo !! run previous command as sudo chmod +x filename make file executable cal show a calendar ctrl+c delete current bash command clear clean screen tree

Things I want to use

!53 Run history number (e.g. 53)

# foo=bar
echo $foo
# bar
echo "$foo"
# bar
# single quotes cause variables to not be expanded
echo '$foo'
# $foo
# single quotes within double quotes will not cancel expansion and will be part of the output
echo "'$foo'"
# 'bar'
# doubled single quotes act as double quotes making variables expand
echo ''$foo''
# bar

gfactor 50 will give the prime factors

grep -c "^$" count empty lines

grep -c bbo filename Grep and return number of matching line(e.g. ‘bbo’)

grep --color bbo filename add color to the match

grep -R bbo /path/to/directory search all files in a directory

grep -rl bbo /path/to/directory Search all files in directory, output ONLY the filenames with matches

grep -f fileA fileB Grep all content of a fileA from fileB

grep $'\t' grep a tab

sed 1d filename remove the 1st line

sed 1,100d filename Remove the first 100 lines

sed '$d' Delete/remove last line

sed '/^$/d' delete/remove empty lines

sed -s '$a,' *.json > all.json Concatenate/combine/join files with a separator and next line

ls|xargs wc -l Count lines in all file, also count total lines

find mso*/ -name M* -printf "%f\n" Find and output only filename (e.g. “mso”)

find / -type f -size +4G Find large files in the system (e.g. >4G)

find . -type f | wc -l Recursively count all the files in a directory

stat filename.txt Display file status

alias print all alias

look phy Print some words that start with a particular string (e.g. words start with ‘phy’)

printf 'hello world\n%.0s' {1..5} Repeat printing string n times

seq 10 Generate sequence 1-10

rev reverse string

echo {1,2}{1,2} generate combinations

Generate all combination (e.g. A,T,C,G)

#!/bin/bash

set={A,T,G,C}
group=5
for((i=0;i<$group;i++));do
	repetition=$set$repetition;done
	bash -c "echo "$repetition""

split -d -l 1000 largefile.txt Split by line (e.g. 1000 lines/smallfile)

rename s/$/.txt/ * Add file extension to all file(e.g add .txt)

cat -v filename Show non-printing (Ctrl) characters with cat

identify myimage.png describe the format of an image

send mail

echo 'heres the content'| mail -a /path/to/attach_file.txt -s 'mail.subject' me@gmail.com
# use -a flag to set send from (-a "From: some@mail.tld")

speaker-test -t sine -f 1000 -l1 make a beep

cd tmp/ && tar xvf ~/a.tar Run command only if another command returns zero exit status (well done)

cd tmp/a/b/c ||mkdir -p tmp/a/b/c Run command only if another command returns non-zero exit status (not finish)

echo $? check the last exit code

ls -d */ list only directories

Made by Brandon . If you find this project useful you can donate.