Programování v shellu
Filesystem

Lukáš Bařinka

Náplň cvičení

Cílem cvičení je praktická práce s souborovým systémem.

  • Informace o souborech a FS
  • Informace o obsahu souborů
  • Vytváření a rušení souborů
  • Linky

Informace o souborech a FS

  • Cesta do aktuálního adresáře:
    pwd, $PWD, $OLDPWD, ~+, ~-
  • Informace o souboru: ls -d -l, stat
  • Informace o obsazeném místu: du, df, quota
  • Zobrazení cesty do aktuálního/předešlého/domovského
    
    									~cd /var/tmp
    									/var/tmppwd
    									/var/tmpprintf '%s\n' "$PWD"
    									/var/tmpprintf '%s\n' ~+
    									/var/tmpprintf '%s\n' "$OLDPWD"
    									/var/tmpprintf '%s\n' ~-
    									/var/tmpprintf '%s\n' "$HOME"
    									/var/tmpprintf '%s\n' ~
    								
  • Přechod mezi adresáři
    
    									/var/tmpcd /etc
    									/etccd -
    									/var/tmpcd
    									~
    								
  • Informace o souborech - ls
    
    									~ls
    									~ls -d
    									~ls -ld
    									~ls -ld /tmp . /etc/passwd
    									~ls -ldt /tmp . /etc/passwd
    									~ls -ldS /tmp . /etc/passwd
    									~ls -ldSr /tmp . /etc/passwd
    									~ls -R /tmp . /etc/passwd
    									~ls -isd /tmp . /etc/passwd
    								
  • Informace o souboru - stat
    
    									~stat /etc/passwd
    									~stat -c %i:%F:%n /etc/passwd
    								
  • Informace o filesystému - disk usage
    
    									~du
    									~du -s ~
    									~du -sh ~
    									~du -s /usr/[a-g]*/
    									~du -sk ~ /tmp . /etc/passwd
    									~du -sh /usr/[a-g]*/ | sort -h
    								
  • Informace o filesystému - disk free
    
    									~df
    									~df -h
    									~df -i
    									~df -k .
    								
  • Informace o přiděleném místě (kvótě)
    
    									fray1:~quota -v
    								
  • Časové značky souboru
    
    									~touch foo; ls foo
    									~touch -c bar; ls bar
    									~touch -t 12312359.59 foo; stat foo
    									~touch -r foo bar; stat bar
    								

Informace o obsahu souboru

  • Typ obsahu souboru podle jeho začátku: file
  • Zobrazení obsahu souboru: less, nl, cat -n
  • Zobrazení binárního souboru: cat -v, od, strings
  • Informace o typu obsahu souboru
    
    									~file "$(type -P ls)"
    									~file -h "$(type -P vi)"
    									~file /etc/passwd /dev/null /tmp /etc
    								
  • Zobrazení obsahu souboru pomocí stránkovače
    
    									~less /etc/passwd
    									~more /etc/passwd
    									~less "$(type -P ls)"
    									~more "$(type -P ls)"
    								
  • Číslování řádků souboru
    
    									~cat -n /etc/passwd
    									~df -h | nl
    								
  • Zobrazení obsahu binárního souboru
    
    									~cat -v "$(type -P ls)"
    									~echo $IFS | od -c
    									~echo "$IFS" | od -c
    									~printf "%s" "$IFS" | od -c
    									~printf "%s" "$IFS" | od -x
    									~printf "%s" "$IFS" | od -x --endian big
    									~man ascii
    
    									~strings "$(type -P ls)"
    								

Vytváření a rušení souborů

  • Různé typy souborů se vytvářejí pomocí různých příkazů
  • Vytváření obyčejných souborů: >, >>, touch
  • Vytváření adresářů: mkdir
  • Vytváření linků: ln
  • Rušení souboru a prázdného adresáře: rm, rmdir
  • Kopírování, přejmenování/přesun souboru: cp, mv
  • Vytváření adresářů
    
    									~mkdir a/b; ls -l
    									~mkdir a; ls -l
    									~mkdir -p a/b/c; cd a; ls -l
    								
  • Vytváření obyčejných souborů
    
    									~/a>s1; ls -l
    									~/a>> s2; ls -l
    									~/atouch s{1..3}; ls -l
    								
  • Vytváření symbolických linků
    
    									~/aln -s /tmp temp; ls -l
    									~/aln -s s3 symlink; ls -l
    								
  • Přejmenovávání /
    přesouvání souborů
    
    									~/amv s3 s4; ls -l
    									~/amv b bb; ls -l
    									~/amv symlink broken; ls -l
    									~/amv s1 bb; ls -l . bb
    
    									~/adf -h . temp
    									~/amv s2 temp; ls -l . temp
    									~/amv s2 "temp/s2.$USER"; ls -l . temp
    								
  • Kopírování souborů
    
    									~/acp s4 s3 s2 s1; ls -l
    
    									~/acp s4 s3; ls -l
    
    									~/acp broken s2; ls -l
    									~/acp -P broken s1; ls -l
    
    									~/aalias fs='find | sort'
    									~/acp bb b; fs
    
    									~/acp -r bb b; fs
    									~/acp -r bb b; fs
    								
  • Mazání souborů
    
    									~/arm b
    									~/armdir b
    
    									~/arm b/s1 b/bb/s1; fs
    									~/armdir -p b/bb/c b/c; fs
    
    									~/acd ..
    									~rm -r a
    									~r\m -r a
    									~mkdir a; touch a/{1..10}
    									~yes | rm -r a