Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bash 101

Bash 101

16 Mayıs 2015, Istanbul PHP Meetup #008'de yaptığım sunum.

Uğur Özyılmazel

May 16, 2015
Tweet

More Decks by Uğur Özyılmazel

Other Decks in Programming

Transcript

  1. # non interactive shell [ -z "$PS1" ] && return

    export DOTFILES_PATH="$HOME/Dotfiles" source $DOTFILES_PATH/shell/env source $DOTFILES_PATH/shell/alias source $DOTFILES_PATH/shell/ls_colors # Load private files # ------------------------------------------------------ # Loads every file under private/ folder! if [[ -d $DOTFILES_PATH/private ]]; then if [ "$(ls -A $DOTFILES_PATH/private)" ]; then ~/.bashrc
  2. TERM_PROGRAM=Apple_Terminal COMP_WORDBREAKS= "'><;|&(: TERM=xterm-256color SHELL=/bin/bash HISTSIZE=30000 TMPDIR=/var/folders/gz/hvbfjmnx5z3bl6k05bp4w04h0000gn/T/ DOCKER_HOST=tcp://192.168.59.103:2376 Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.PyiyHWlqqs/ Render

    TERM_PROGRAM_VERSION=343.7 TERM_SESSION_ID=59036979-ACF9-409F-9141-9AAA2941844E CDPATH=.:..:../..:/Users/vigo/Desktop/Dropbox SVN_EDITOR=mate -w HISTFILESIZE=30000 USER=vigo DOCKER_TLS_VERIFY=1 PATH=/Users/vigo/.rbenv/shims:/Users/vigo/.rbenv/bin:/usr/local/heroku bin:/usr/local/heroku/bin:/Users/vigo/bin:/usr/local/sbin:/usr/local/ bin:/usr/bin:/bin:/usr/sbin:/sbin PWD=/Users/vigo/Development/Source/sinatra EDITOR=mate -w
  3. gündelik komutlar curl touch mkdir alias man sudo history grep

    xargs less pwd ls cd cp mv rm chown ln find awk cat git ps more chmod
  4. komut ? $ man <KOMUT> $ man ls $ man

    pwd $ man -k "kelime"
  5. h

  6. man help (less) / <kelime ara> n sonraki bulunan kelime

    N önceki bulunan kelime f 1 ekran ileri git b 1 ekran geri git g ilk satıra git G son satıra git q çık
  7. alias $ alias # hepsini göster $ alias XX='<KOMUTLAR>' $

    alias la='ls -al' $ alias la # göster
  8. alias $ alias ls='ls -al' $ \ls # orijinal ls

    ile Ezdiğiniz orijinal komutları \ ön eki ile çağırabilirsiniz!
  9. pipe $ man 5 -t nanorc | open -f -a

    preview nano'nun konfigürasyon dosyası ile ilgili 5.dökümanı pdf haline getirmek. Mac OS X için geçerlidir.
  10. $ find . -iname '*1*.jpg' pipe ./file_1.jpg ./file_10.jpg ./file_11.jpg ./file_12.jpg

    ./file_13.jpg ./file_14.jpg ./file_15.jpg ./file_16.jpg ./file_17.jpg ./file_18.jpg ./file_19.jpg
  11. $ find . -iname '*1*.jpg' | xargs -n 1 echo

    "Bulunan:" pipe Bulunan: ./file_1.jpg Bulunan: ./file_10.jpg Bulunan: ./file_11.jpg Bulunan: ./file_12.jpg Bulunan: ./file_13.jpg Bulunan: ./file_14.jpg Bulunan: ./file_15.jpg Bulunan: ./file_16.jpg Bulunan: ./file_17.jpg Bulunan: ./file_18.jpg Bulunan: ./file_19.jpg
  12. redirection $ ls tmp/ file_1.jpg file_12.jpg file_15.jpg file_18.jpg file_20.jpg file_5.jpg

    file_8.jpg file_10.jpg file_13.jpg file_16.jpg file_19.jpg file_3.jpg file_6.jpg file_9.jpg file_11.jpg file_14.jpg file_17.jpg file_2.jpg file_4.jpg file_7.jpg $ ls tmp/ > dir_list.txt
  13. redirection $ <KOMUT> > dosya
 # yoksa oluştur ya da

    üzerine yaz $ <KOMUT> >> dosya
 # ek yap (append) $ <KOMUT> < dosya
 $ sort -r < dir_list.txt 
 # dosyayı komuta yönlendir
  14. komut kombinasyonu $ <KOMUT> ; <KOMUT> ; <KOMUT>
 # herhangibiri

    hata verse bile diğeri devam eder. $ <KOMUT> && <KOMUT> && <KOMUT>
 # herhangibiri hata verirse diğer işlemler çalışmaz. $ <KOMUT> || <KOMUT> || <KOMUT>
 # komutlar bitince sekans durur.
  15. standart • Değişken tanımlamaları • Fonksiyon tanımlamaları • Kontrol mekanizmaları

    • Döngü mekanizmaları • Hata yakalama mekanizmaları • Regular Expression
  16. değişken A=5 # = ile değişken arası A="5" # bitişik

    olmalı! A=$(date) # date komutunun değeri A=`date` # date komutunun değeri export A="Hello" Default: Global Scope
  17. fonksiyon deneme(){ echo "$@" } deneme2(){ echo "$1" } deneme

    1 2 3 4 # => 1 2 3 4 deneme2 1 2 3 4 # => 1
  18. kontrol if [[ durum ]]; then # kod fi if

    [[ durum ]]; then # kod elif [[ durum ]]; then # kod fi
  19. kontrol # Ubuntu ? if [[ `which lsb_release` ]]; then

    if [[ `lsb_release -i | awk '{print $3}'` == "Ubuntu" ]]; then source $DOTFILES_PATH/shell/ubuntu_specific fi fi # Mac ? if [[ `uname` == "Darwin" ]]; then source $DOTFILES_PATH/shell/mac_specific fi
  20. döngü export DOTFILES_PATH="$HOME/Dotfiles" for file in $DOTFILES_PATH/private/*; do source $file

    done x=0 read_file="/Users/vigo/Desktop/bash101-demo/dummy_text" cat $read_file | while read line; do x=$(($x+1)) echo "Satır: ${x}, ${line}" done
  21. döngü typeset -a test_array test_array=( "username" "vigo" "password" "secret" )

    test_array_count=${#test_array[*]} for ((i=0; i<=$((($test_array_count/2)-1)); i++)); do key="${test_array[(0+($i*2))]}" value="${test_array[(1+($i*2))]}" echo "${i} : ${key} ${value}" done