find -name \*conf -print > /home/ubuntu/myfile   tai: find /path -type f -iname "*.conf" > /home/ubuntu/myfile
Komennon top tulostus näyttöön kotikansion tiedostoon nano.save<numero>: top -b -n 1 | nano . Näyttöä voi rullata hiirellä.
factor 2736572585875324533: 3 3 17 59 127 2387040615577   ; siis laskee alkutekijät
pi=$(echo "scale=10; 4*a(1)" | bc -l) # 2.2.2.2
Suurimmat tiedostot: find OMATSKRIPTIT -printf '%s %p\n'|sort -nr|head tai: tree -isfF OMATSKRIPTIT |grep -v "/$"|sort -k2nr|head -10
find . -inum 74274 -exec rm {} \;  # tiedoston tai koko kansion poistaminen inoden perusteella ?
sudo find / -type f -iname "*Trash"
KaarisulunPaikkaTekstiJonossa=${apu%\)*} # kaarisulun paikalle kirjoita mitä etsitkin. Ensimmäinen edestäpäin ?
Valittavat=(`grep -lr "$hakusana" ~/omatskriptit | grep -v ARKISTO`)
getconf LONG_BIT  # kuinka monibittinen käyttöjärjestelmä on

tiedostojen koodimuunnos: for f in *.KAP ; do bsb2tif "$f" "$f.tif" ; done
tiedostolistaus jättäen pois binääritiedostot: find . -name "*.file" -type f -print | xargs file | grep ASCII | cut -d: -f1  

Tiedoston md5sum:man saa käskyllä: MD5SUM <tiedostonimi>. Jos haluat md5sum:man pelkästä tiedostonimestä niin kirjoita: echo <tiedostonimi> | md5sum  awk 'print $1'}. 
if [[ -d "${DIRECTORY}" && ! -L "${DIRECTORY}" ]] ; then;    echo "It's a bona-fide directory"; fi

skriptin alkuun kun se tahtoo parametreja:   : ${1?"   Skriptin kutsussa tulee olla parametri"} # merkki : kuuluu käskyyn; se on rivin alussa
muuttujan seuranta (trace) tapahtuu kun skriptin alussa on käsky: trap 'echo "MUUTTUJAn seuranta> \$muuttujannimi = \"$muuttujannimi\""' DEBUG
kansion tai tiedoston koon listaaminen: (echo 0; find KohdeTaiKohteet -printf '%s +\n'; echo p) | dc

sudo service bluetooth restart
netstat -np | grep -v ^unix                              # katso masiinasi verkkoliikennettä

fileName(){ echo ${1##*/}; }                             # basenamen korvike; dirnamen korvike= fileName(){ echo ${1%/*}; } 
Taulukon tulosteen sorttaaminen sarakkkeen mukaan: ps aux | sort -nk 6 
Mitä skriptejä on ajettu:  find /home/petteri/OMATSKRIPTIT -type f -printf '%TY-%Tm-%Td %TT %p\n' | grep -v /ARKISTO/ | sort
cut -d, -f5 ?
laitteen MBR-ID numero:sudo dd if=/dev/sda bs=1 count=4 skip=$((0x1b8)) 2>/dev/null | hexdump -n4 -e '"0x%x\n"'
poista suoritusoikeus kaikilta tiedostoilta: find . -type f -exec chmod -x {} \;
	
cat /etc/modprobe.d/blacklist.conf                       # blacklist-tiedosto on syytä joskus tarkistaa
blacklist usb_storage >> /etc/modprobe.d/blacklist.conf  # kun haluat kieltää koneessasi USB-muistit
Tulosta koneesi MAC-osoitteet: ip li | grep ff
lista niistä paketeista jotka on asennettu asennuksen jälkeen: zgrep --color=always 'get install' /var/log/apt/history.log*
tiedoston määrättävän rivin lukeminen: head -2 < /boot/grub/grub.cfg | tail -1

namei -m $(pwd) # sen kansion oikeudet jossa ollaan ja kaikkien yli-kansioidenkin aina / asti.
find /home/petteri/OMATSKRIPTIT -type f ! -perm /u+x -printf "\"%p\"\n" | xargs file | grep -i executable # lista tiedostoista jotka voisivat olla suoritettavia mutta eivät ole

Viimeiseksiksi käsitelty tiedosto:
echo -n 'viimeksikäsitelty:';find ~/OMATSKRIPTIT -type f  -printf '%T@ %p\n' | grep -v ARKISTO | sort -n | tail -1 | cut --output-delimiter='  ' --complement -c 11-49
echo -n 'viimeksi on käsitellyt 40 kotikansiosi tiedostoa ilman piilotiedostoja:';find ~ -type f  -printf '%T@ %p\n' | grep -v '/\.'| sort -n | tail -40 | cut --output-delimiter='  ' --complement -c 11-$((29+${#USER}))

iconv -c -f utf-8 -t ascii file.txt # poista tiedostosta kaikki ei-ascii merkit
luku=+2; echo ${luku#[-+]}  # tulostaa: 2 (poistaa etumerkin olipa se - tai + eikä tee mitään muuta. tekstijonossa kauenpana oleva + tai - jää paikalleen)
top -b -n 1 | gedit # Tulostaa komennon top (=käyttäjä-rohmut) tulosteen gedit-editoriin. 
factor 2736572585875324533 # tulostaa: 3 3 17 59 127 2387040615577   ; siis laskee alkutekijät
tiedostolistaus jättäen pois binääritiedostot: find . -name "*.file" -type f -print | xargs file | grep ASCII | cut -d: -f1  
Tiedoston sisällön sha1sum:man saa käskyllä: sha1sum <tiedostonimi>. tiedostonimestä sha1sum: echo <tiedostonimi> | sha1sum | awk {'print $1'}. 
if [[ -d ~ && ! -L ~ ]]; then echo '~ on kunnollinen kansio'; fi # tarkoituksena on esittää myös kuinka ja/tai-ehtoja yhdistellään.
[[ "${1:0:1}" != "-" ]] && echo "ensimmäinen parametri taitaa olla optio"
tail() { thbin="/usr/bin/tail"; if [ "${1:0:1}" != "-" ]; then fc=$(($#==0?1:$#)); lpf="$((($LINES - 3 - 2 * $fc) / $fc))"; lpf="$(($lpf<1?2:$lpf))"; [ $fc -eq 1 ] && $thbin -n $lpf "$@" | /usr/bin/fold -w $COLUMNS | $thbin -n $lpf || $thbin -n $lpf...
# Tiedoston lukeminen matriisiin ja tulostaminen: declare -a Matriisi; O=$IFS IFS=$'\n' Matriisi=($(< /boot/grub/grub.cfg)) IFS=$O; echo -e 'Grub.cfg:n sisältö:'"${Matriisi[@]/%/\n}"
epäsuora osoitustapa: muuttujan sisältönä on toisen muuttujan osoite: a=b; b=1; eval echo \$$a # tulostaa: 1    
eval echo \$$a voi merkitä lyhyesti: echo ${#a} tai: echo ${!a}. 
Tulosta kaikki muuttujat jotka alkaa f:llä-> echo ${!f*}
tulostaa ympäristön P-alkuiset muuttujat: for i in ${!P*}; do echo $i = ${!i}; done
# näytön rivi- ja merkkiluvun lukeminen 
RivienLuku=$(($(tput lines)-5)) # montako riviä siinä näytössä on missä tämä toimii. 5 on otsikon viemä tila
RivinPituus=$(tput cols)        # montako merkkiä mahtuu sille näytölle missä tämä toimii.
merkkijono=$( printf "%$(echo 6300)s" | tr ' ' 'a'); echo $merkkijono # pitkän merkkijonon tulostaminen 
[[ $(arch | grep 64) ]] && echo systeemi on 64-bittinen || echo systeemi on 32-bittinen

käyttämättömien kernelien poistaminen käyttäen apt-get:tiä:
sudo apt-get remove $(dpkg -l|awk '/^ii  linux-image-/{print $2}'|sed 's/linux-image-//'|awk -v v=`uname -r` 'v>$0'|sed 's/-generic//'|awk '{printf("linux-headers-%s\nlinux-headers-%s-generic\nlinux-image-%s-generic\n",$0,$0,$0)}')
tai:
sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
- kun painat ctrl-alt niin voit painamisen aikana maalata hiirellä näytöstä nelikulmaisen alueen (tekstitilassa?)

ip-osoite: curl ip.nu     tai:curl ifconfig.me       tai:ip -f inet addr show eth0/wlan0 
Muistin käyttö: watch vmstat -sSM       tai:free -m | awk '/cache:/ {print $4}'
gmailin tarkastaminen komentoriviltä: curl -u username --silent "https://mail.google.com/mail/feed/atom" | perl -ne 'print "\t" if /<name>/; print "$2\n" if /<(title|name)>(.*)<\/\1>/;'     # ainoastaan username muutetaan  
ipv4-osoite: /sbin/ifconfig -a | awk '/(cast)/ { print $2 }' | cut -d':' -f2 | head -1
ipv6-osoite: /sbin/ifconfig -a | egrep 'inet6 addr: |address: ' | cut -d':' -f2- | cut -d'/' -f1 | head -1 | tr -d ' '
date --date="90 days ago"

tar:in ottaminen: sudo tar --one-file-system -czvpf /mnt/palautuspiste/palautuspiste.tgz --exclude={palautuspiste*,*Trash*} /
tarin palauttaminen: sudo tar -xvpzf /mnt/palautuspiste/palautuspiste.tgz -C /mnt/ 
shred -v filename # tuhoaa tiedoston
dd if=/dev/random of=~/tiedosto bs=$(echo $(stat -c%s tiedosto)) count=1; rm tiedosto        # tuhoaa tiedoston
for y in {1..10}; do for x in {1..10}; do echo -n  " "$((y*x)); done; echo; done | column -t # tulosta kertotaulu

echo 67.54% | sed 's/.$//' # tulostaa 67.54 # echo 67.54\& tulostaa 67.54 # chop, poistaa viimeisen merkin
bc <<< 'obase=60;29999' # muuta sekunnit tunneiksi, minuuteiksi, sekunneiksi ... alle 2 vuorokautta ?
cat /etc/passwd | tr " " { | tr : " " | column -t | tr { " " # tiedoston /etc/passwd siisti tulostus
od -t c
< /etc/passwd sed -n "/^bin:/,/^lp:/p"            # tulosta tiedoston /etc/passwd rivistä joka alkaa bin: riviin ja loppuu riviin joka alkaa lp (rivit mukaanlukien)
readlink -f tiedosto                              # tulosta tiedostonimi polkuineen
RiviNo=15; sed -n $RiviNo'p' ttiedosto            # tulosta määrätty rivi
foo="FOO"; foo="${foo,,}"; echo "${foo^}"         # tulostaa: Foo
function whichpkg { dpkg -S $1 | egrep -w $(which $1)$; } # mihin pakettiin käsky kuuluu 
cd polku; dpkg -i random_name.deb                 # paketin vieminen koneen pakettivarastoon
cat /var/log/dpkg.log | grep "install.*"          # listaus koneen asennetuista ja puoliksi-asennetuista paketeista
parallel -a <(seq 0 20) mkdir /tmp/dir1/{}
echo "ls"; `!#:0-$                                # ls * ja ls */* toimii myös niinkuin teoriassa monet muutkin
export PATH=$PATH:`pwd`                           # lisää nykyinen kansio polkuun tämän skriptin toiminta-ajaksi
function expand-tabs() { expand -t 8 "$1" > "$1.expanded"; mv -f "$1.expanded" "$1"; } 
sudo apt-get install pv; cat /dev/sda | pv -r > /dev/null # kovalevyn nopeus ilman että cachet sotkevat
sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync  # kovalevylle kirjoittamisen nope 
find /etc/rc3.d/ | sort -g                        # lista palveluista; luepa README
for _a in {A..Z} {a..z};do _z=\${!${_a}*};for _i in `eval echo "${_z}"`;do echo -e "$_i: ${!_i}";done;done|cat -Tsv # tulosta ymnpäristömuuttujat, myös kätketyt
gnome-open [path]                                 # avaa osoitetun sen oletusohjelmalla
free -m | awk '/buffer/ {print $4}'               # /buffer/ valitsee sen rivin jolta $4 tulostetaan
sdiff -w12 -s ~/testResults1 ~/testResults2       # vertaile tiedostoja rinnakkain. w on tulosteenleveys, -s poista rivit joissa molemmat ovat samoja
xrandr  | grep \*                                 # näytön resoluutio ja virkistystaajuus
setxmap fi                                        # suomi-näppis, suomalaisen näppäimistön asettaminen, suomalainen näppäimistö
declare -F | cut -d ' ' -f 3                      # listaa .bash_profile:ssa ja .bashrc:ssä määritellyt funktiot
grep -Fxv -f file1 file2                          # tiedostojen leikkaus
printf -v row "%${COLUMNS}s"; echo ${row// /#}    # kirjoita merkkiä # näytön poikki
read -sn1 -p "Press any key to continue..."; echo # paina jotain näppäintä
sleep 3 && xdotool type --delay 0ms texthere      # kirjoittaminen näppäimistölle  sudo apt-get install xdotools
xrandr -q | grep -w Screen                        # näytön minimi- tämänhetkinen- ja maksimi-resoluutio
sleeper(){ while `ps -p $1 &>/dev/null`; do echo -n "${2:-.}"; sleep ${3:-1}; done; }; export -f sleeper # kirjoittaa pisteen näytölle niin  kauan kuin taustatehtävä toimii
while read l; do echo -e "$l"; done <1.txt >2.txt # poista välilyönnit rivin alusta ja lopusta
cp -pr olddirectory newdirectory                  # p-säilytä mode, ownership, and timestamps r-recursive
file -i *                                         # tiedostolistaus tyyppeineen
for a in *; do mv $a prefix${a}; done             # liitä jälkiliite kaikkiin kansion tiedostoihin (esim. *.sh)
echo eka toka kolmas neljäs | tr " " "\n" | nl    # sanat omille riveilleen numeroituina
read -t 0.1 -N 255                                # näppäin-bufferin tyhjennys
paste -d ',:' file1 file2 file3                   # liitä tiedostot rivi kerrallaan, ensimmäinen väli=, ja toinen väli=:
lsof -i                                           # Mitä verkossa tapahtuu nyt
nautilus .                                        # avaa tiedostoselain päätteessä (tai: caja .)
sar -r 1                                          # seuraa muistinkulutus
trap cmd 0                                        # Suorita komento bash-logoutin yhteydessä.
watch -n 7 -d 'uptime | sed s/.*users,//'         # pidä silmecho one 22 three | awk -F'[0-9][0-9]' '{print $2}'ällä systeemin kuormitusta
ps aux | grep 'httpd ' | awk {'print $2'} | xargs kill -9 # tapa kaikki nimetyn sovelluksen prosessit
addfunction () { declare -f $1 >> ~/.bashrc ; }   # lisää funktio .bashrc:hen, esimerkiksi: adfunction adfunction -> täytyy lisätä Skriptiajurin alustuksiin 
xmodmap -e "remove Lock = Caps_Lock"              # poista Caps-lock x:ssä oltaessa
printf "\ec"                                      # tyhjää näyttö ja näytön muisti
yes > /dev/null &                                 # yhdelle prosessoriytimelle täysi kuorma -> monta ydintä niin toista käskyä
yes kyllä | skripti                               # kaikkiin skriptin kysymyksiin vastataan: kyllä  
pr -o 5 --width=65 ~/ohje | more -d               # näytä ohje marginaaalit asetettuina ja anna vähän ohjetta   
{ komento;} 2> /dev/null                          # virheviestien uudelleensuuntaus lattian alle vain komennon suorituksen ajaksi  
(time ls) 2>&1 | grep real                        # ilmoittaa ainoastaa time-käskystä real: rivin
date | grep p >/dev/null; echo ${PIPESTATUS[@]}   # no1 on date onnistuminen no2 on grepin onnistuminen ... 
lsblk -do name,model,size,serial 
usermod -G sudo -a jussi                          # tekee uuden sudo-oikeudellisen käyttäjän                             
sudo apt-get install gksu ja:gksudo gedit /etc/hosts # käyttäjänimen muutos. Uusi nimi tulee voimaan vasta boottauksen jälkeen
gksudo /bin/hostname UusiTietokoneenNimi          # tietokoneen nimen vaihtaminen
grep ^Dirty /proc/meminfo                         # tulostaa muistin joka odottaa levylle kirjoittamista
echo -e "\e[3J"                                   # tyhjentää scroll-back bufferit
sync && sudo /sbin/sysctl vm.drop_caches=3        # tyhjentää cacheja ja buffereita. käske: sudo echo; free; sync && sudo /sbin/sysctl vm.drop_caches=3; echo; free  niin näet sen vaikutuksen
                                                  # tai: sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" tai: sync sudo sysctl -w vm.drop_caches=3
sudo sysctl -a | grep vm.swappiness               # katso mikä arvo swappinew:illa on
sudo sysctl vm.swappiness=10                      # aseta swappines; nykykoneilla 10 on hyvä
paste -s -d ' ' tiedosto                          # poista tiedostosta rivinsiirrot
cat /etc/lsb-release                              # tulosta versiotiedot 
xset -dpms                                        # kytkee virransäästön pois päältä
exec 2>&1                                         # Setting global redirection of STDERR to STDOUT in a script 
cancel -a                                         # tyhjennä kirjoitusjono 
array=([2]=val [0]=val [1]=val)                   # jos halutaan muuttaa järjestystä tai tehdä harvaa matriisia 
lsblk -o +serial,label,fstype,uuid                # kaikki tieto kovalevystä ilman sudoa. Listaa mahollisuudet: lsblk /dev/sda -ao     
echo one 22 three | awk -F'[0-9][0-9]' '{print $1 $2}' # tulostaa: one three -> siis välilyönnit ovat mukana $1:ssä ja $2:ssa?
var=bar; [[ $var == @(foo|bar|more) ]] && echo joo     # monivalinta; joku näistä
a=10; b=20; max=$(( a > b ? a : b )); echo $max   # esimerkki ternary-operaattorista. Vain etumerkillisille kokonaisluvuille
sudo fstrim -v /                                  # teoriassa ssd-levyt hidastuvat ajan kuluessa. Tämä käsky palauttaa nopeuden. Saattaa muuten kestää kauan.
sudo hdparm -tT /dev/sda                          # mittaa levyn nopeuden
ps -o comm= $$                                    # ollaanko bash: issa, dash:issa vai jossan muussa
s='*'; ls $s.{ext1,ext2}                          # tämä täytyy tehdä näin
printf "%s\t%s\t%s\n" {1..9} '*' 0 '#'            # muodosta puhelimen keypad
[[ $(jobs -p) ]] && kill $(jobs -p)               # mikäli taustalla pyörii job:eja niin tapa ne  

 
[ -f /sys/module/battery/initstate ] || [ -d /proc/acpi/battery/BAT0 ] && echo läppäri || echo pöytäkone              # koneen tyyppi      

Kirjautumistunnuksen muuttaminen: sudo usermod -l uusitunnus vanhatunnus
Käyttäjänimen muuttaminen: sudo usermod -c "Uusi Nimi" tunnus

PC:n WiFi-kytkimen asento kannattaa tarkistaa myös rfkill-komennolla: rfkill list
Näppäinkoodin näyttö: od -t cecho "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";sleep 2;tput smcup; echo "Doing some things..."; sleep 2; tput rmcup
TiedostonAikaleima=$(stat --printf %y $kanta/"$KansionNimi"/"$ValitunTeksti" | awk '{ print $2 }') 
[[ 'i=5, i+=2' -eq 3+4 ]] && echo joo # tulostaa joo
apu=$( grep VmHWM /proc/$(pgrep -d '/status /proc/' Skriptiajuri)/status); echo ${apu##*:} # Skriptiajurin 
if date -d 2011-2-28 > /dev/null 2>&1; then echo "kunnollinen päiväys"; else echo "kelvoton päiväys+"; fi
wget -O /dev/null ftp://ftp.funet.fi/dev/100Mnull > /dev/null  # luotettava netin nopeustesti
apu='"bfgbgböklmblkm"'; echo "${apu//\"}"  # tulostaa: bfgbgböklmblkm , siis poistaa lainausmerkit
apu=petteri; echo ${apu~~}                      # tulosta PETTERI. Muut Case-mods: ,,  ,  ^^  ^ . purevat myös matriisiin.
echo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";sleep 2;tput smcup; echo "Doing some things..."; sleep 2; tput rmcup # näytön talletus ja palautus
sudo bash <<< 'apt-get update && apt-get -y upgrade'

exec > ~/LOGFILE 2>&1 # laita tämä käsky skriptin alkuun ja kaikki tulostus suuntautuu ~/LOGFILE:en
[[ $(sudo -n uptime 2>&1 | grep "load") ]] && echo 'sudo on vielä voimassa' || echo 'sudo ei ole voimassa'

[[ ! $(grep -B2 ' / '  /etc/fstab | grep mapper) ]] && echo koneessa ei ole LVM:ää || echo koneessa on LVM

uuden salasanan antaminen: shift alhaalla bootatessa, recovery mode, drop to root shell, mount -rw -o remount /, passwd käyttäjänimi

Pakettilistatiedosto on joskus vioittunut. Silloin poista se ja lataa uudelleen: sudo rm -f /var/lib/apt/lists/*; sudo apt-get update

Lohkojen erotus:  cat /boot/grub/grub.cfg | awk '/BEGIN|begin|<</,/END|end|>>/ {print $0}/END|end/{print "\n"}' # lohkojen väliin tulee tyhjärivi

Tulosta muuttujat: apu=$(echo ${!a*}' '${!b*}' '${!c*}' '${!d*}' '${!e*}' '${!f*}' '${!g*}' '${!h*}' '${!i*}' '${!j*}' '${!k*}' '${!l*}' '${!m*}' '${!n*}' '${!o*}' '${!p*}' '${!q*}' '${!r*}' '${!s*}' '${!t*}' '${!u*}' '${!v*}' '${!w*}' '${!x*}' '${!z*}' '${!y*}' '${!A*}' '${!B*}' '${!C*}' '${!D*}' '${!E*}' '${!F*}' '${!G*}' '${!H*}' '${!I*}' '${!J*}' '${!K*}' '${!L*}' '${!M*}' '${!N*}' '${!O*}' '${!P*}' '${!Q*}' '${!R*}' '${!S*}' '${!T*}' '${!U*}' '${!V*}' '${!W*}' '${!X*}' '${!Z*}' '${!Y*}); echo ${apu%%BASH*}

kun skriptissä on jossain käsky jonka optio on skriptin muuttuja saadaan se option paikalle tässä kuvatulla tavalla: apu=a; echo ${apu:+--someoption=$apu}

DATE=20160120; SIMPLEDATE=`echo "$DATE" | sed 's/..\(..\)\(..\)\(..\)/\2-\3-\1/'`; echo "$SIMPLEDATE"
DATE=2016.01.20; SIMPLEDATE=$(echo "$DATE" | sed 's/..\(..\).\(..\).\(..\)/\3-\2-\1/'); echo "$SIMPLEDATE"
DATE=2016.01.20; SIMPLEDATE=$(echo "$DATE" | sed 's/\(....\)\(.\)\(..\)\(.\)\(..\)/\5\4\3\2\1/'); echo "$SIMPLEDATE"

function plot_matrix () { eval echo \${$1[*]} | tr ' ' '\n' | gnuplot -p -e 'plot "/dev/stdin" with lines' ;}; for x in {1..628}; do apu[$x]=$(awk -v x=$x 'BEGIN{print sin(x/100)}'); done; plot_matrix apu # muodosta matriisi ja plottaa se




