Tipy a triky nejenom v shellu nejenom pro programátory

Podobné dokumenty
Úvod do Operačních Systémů

Úvod do Operačních Systémů

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Úvod do Operačních Systémů

Nastroje na zpracovani textu:

Proměnné a parametry. predn_08.odt :00:38 1

Cvičení 3. Plán. Procesy. procesy, jobs Find Wildcards Příklad uživatelé. ZOS 2005, L. Pešička. eryx4> ps x

Úvod. unx-predn_01-uvod.odt :13:43 1

Úvod do Operačních Systémů

PSK3-3. Základní příkazy. Zápis cesty

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Instalace a konfigurace OpenAdmin tool na M$ a Linuxu

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

GIT hands-on. Mgr. Šimon Tóth. 12. dubna () GIT hands-on 12. dubna / 25

Numerické výpočty, komprese a archivace, návratový kód.

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese

PŘIDÁNÍ SOUBORŮ DO OBLASTI PŘIPRAVENÝCH ZMĚN

Evoluce deploye Od FTP po automatický deploy

9. Archivace a verzování svn

Domácí příprava k předmětu YD38UOS Úloha 10 práce s lokálními soubory pokračování

Vladimír

Git. The information manager from hell. Robin Obůrka

BI-AWD. Administrace Webového a Databázového serveru Instalace webového serveru Apache httpd

Téma 9: Administrace systému CentOS. Představení a používání aplikací pro administraci CentOS

PROGRAMOVÁNÍ V SHELLU

P2D Život postgresového serveru bez ručních zásahů. Jakub Jedelský

Jak si ochočit Ansible

Paralelní výpočty na clusteru KMD

Distribuovaný SSH honeypot

Úvod, jednoduché příkazy

1 ÚVOD DO LINUXU 3 2 MANIUPLACE S DATY A TEXTEM 4 3 EDITORY, ARCHIVACE A PŘESMĚROVÁNÍ 5 4 UŽIVATELSKÉ ÚČTY A OPRÁVNĚNÍ + TEST 6 5 PROCESY A SERVISY 7

Úvod do Operačních Systémů

Postup instalace UMTS modemu Huawei K3765 od Vodafone (SalixOS, ZenWalk, Slackware)

eduroam.cz správa a deployment pomocí Ansible

Administrace Unixu a sítí. Tomáš Kouba <

awk programovatelný filtr

Úvod do Operačních Systémů

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Tahák na UOS 2008/2009

Sekvenční a podmíněné provádění

Speciální soubory. Editace příkazové řádky. $ fg mp3blaster $./skript.sh. [2]+ Stopped./skript.sh $ bg [2]+./skript.sh & $ fg 2./skript.

Knot DNS workshop. CZ.NIC Labs Daniel Salzman / daniel.salzman@nic.cz Jan Kadlec / jan.kadlec@nic.cz

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Programovací software Oblast režimů Oblast nástrojů Složka aplikací pro různé funkce: Oblast tlačítek Tlačítko Loading (Načítání)

Nová cesta ip. Stará cesta ifconfig, route. Network address translation NAT

Linux CryptoFS. Petr Novický

Programovani v Maplu Procedura

Intelligent Platform Management Interface (IPMI) Pavel Slavíček

Linux-příkazový řádek

OpenNebula pro začátečníky SUT Tomáš Kukrál

ZOS CV1 Základy operačních systémů

Síť LAN. semestrální práce X32PRS Ondřej Caletka ČVUT V PRAZE, Fakulta Elektrotechnická

UNIXový cheat sheet. Martin mhb Böhm, Pavel PeeJay John 2. června control structures 3. 2 /etc/passwd 5. 3 id 5. 4 /etc/group 5.

Martin Kopta. Unixové shelly. Středisko Unixových Technologií, 2009

Automatizace bootování s novabootem

Uživatelský modul. Modem Bonding

FILTRY V GNU/LINUXU ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

Základní příkazy UNIXu (Linuxu)

Práva a jejich použití, screenujeme, pracujeme v GNU/Linuxu

2. přednáška pro začátečníky

Instalace nvidia Optimus v Ubuntu 14.04

Úvod do UNIXu. Jirka Boháč Gymnázium Jaroslava Seiferta 2003/2004

Git. Milan Rybář

Úvod do Operačních Systémů

Praktikum Směrování Linux

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.

Úvod do UNIXu, cvičení 1. Organizační informace Co je vlastně ten UNIX? Jak to chodí v labech

CZ.1.07/1.5.00/

SQL a XML jako alternativa ke klasickým unixovým nástrojům

Computer Press Brno 2003

Michal Podzimek

Verzovací systémy. Pořádek především!

PSK3-9. Základy skriptování. Hlavička

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Metody zabezpečeného přenosu souborů

ČVUT FIT: BI-SKJ: Perl

Unix je víceuživatelský a víceúlohový OS

Operační systéme II cvičení

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Java/QE Akademie - Osnova

Konfigurace Nagios. Zadání: Příprava a prvotní problémy: Instalace a konfigurace serveru:

apt-get install freeradius

Operační systémy 2. Firewally, NFS Přednáška číslo 7b

Bc. Hynek Chmela - 1. přednáška o systému Debian Linux

LINUX ADRESÁŘOVÁ STRUKTURA. Co to, hrome, je? V této lekci se budeme brouzdat adresáři. SPŠ Teplice - 3.V

Přednáška 6. Procesy a vlákna (vznik, stavy, atributy). Signály. Nástroje pro práci s procesy a vlákny. Úvod do Operačních Systémů Přednáška 6

Základy programování (IZP)

Příkazová řádka. predn_02.odt :55:55 1

TME. ethernetový teploměr. teploměr s přenosem dat po Ethernetu. protokoly ASCII, HTTP (WEB), SMTP ( ), SNMP

Vzdálená plocha z macos

Téma 11: Firewall v CentOS. Nastavení firewallu

Raspberry Pi - security system

Regulární výrazy a grep

Jak importovat profily do Cura (Windows a

Řešení pro audit činnosti administrátorů UNIX/Linux serverů

Rychlý instalační manuál pro. IP systém videovrátných

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Architektura systému GNU/Linux. Bohdan Milar

Vychytávky v iptables

Transkript:

Tipy a triky nejenom v shellu nejenom pro programátory Karel Kočí 8.10.2017 1/1

O čem to bude? sed 's/[^\;]*\;//' hist tr ' ' '\n' \ grep -ve '^(- \ $)' sort uniq -c \ sort -nr > notes/tatnppvl.result 3004 ls 2391 cd 2225 git 1350 v 911 sudo 608 tig 458 emerge 410 push 405 ssh 393.. 381 gst 372 ci 320 add 303 vim 285 make 285 grep 282 rm 247 man 203. 191 co 189 sed 172 @world 159./build_repo.sh 156 omnia 150 updater 148 mpv 140 turris/openwrt 138 mount 124 cp 120 test 119 pull 112 ip 109 turtetris/makefile 2/1

3/1

MAN MAN MAN MAN MAN man man man exit man 3 exit Z man man: 1. Spustitelný program nebo shell příkaz 2. Volání systému (funkce z kernelu) 3. Knihovní volání (funkce poskytované knihovnami) 4. Speciální soubory (obvykle soubory z /dev) 5. Souborové formáty a konvence (například /etc/passwd) 6. Hry 7. Různorodé (Konvence, makra a pod.) 8. Příkazy pro systémovou administraci (obvykle sbin) 4/1

Náhled na soubory ll Pro přístupová práva, vlastníky i velikost. alias ll='ls -lh' tree Pro stromovou strukturu. 5/1

Připisované soubory tail -f sudo tail -f /var/log/messages 6/1

Opakované spuštění while true; do sleep 1; command; done Pro sledování a pod. Například ip address. dorepeat dorepeat() { while true; do "$@" sleep 1 echo done } 7/1

Hledání souborů find -name -delete find -name *elf* find -name *.orig -delete 8/1

Hledání souborů podle obsahu grep -Rn PATTERN grep -Rn elfutils grep -RnE 'elf-?utils' 9/1

Hledání podle obsahu ve specifických souborech find -name Makefile xargs grep -Rn elfutils 10/1

Náhodné heslo genpasswd genpasswd() { local l=$1 [ -n "$l" ] l=16 tr -dc A-Za-z0-9_ < /dev/urandom \ head -c "$l" xargs } 11/1

12/1

Clipboard xclip -selection clipboard cat.ssh/id_rsa.pub xclip -selection clipboard clip clip() { # Note: printf is magic to remove trailing new lines printf %s "$(cat)" xclip -selection clipboard } 13/1

Screenshot xshot xshot() { import -window "$(xdotool selectwindow)" \ ~/xshot_$(date +%F_%H%M%S_%N).png } 14/1

15/1

Git aliases git co ci br wt ~/.gitconfig [alias] gst co = checkout ci = commit st = status br = branch wt = worktree alias gst='git status' 16/1

Verbose commits ~/.gitconfig [commit] verbose = true # Changes to be committed: # modified: utils/localrepo # ------------------------ >8 ------------------------ diff --git a/utils/localrepo b/utils/localrepo HELP_DESCRIPTION = """ - Local opkg repository management script. + Local opkg repository management tool. """ 17/1

git worktree git worktree add git branch work-todo git worktree add../project-work-todo work-todo git worktree prune rm -rf../project-work-done git worktree prune 18/1

Git hash clipboard gitclip gitclip() { [ -n "$1" ] && local CMT="$1" local CMT=HEAD git rev-parse "$CMT" clip } gitmclip gitmclip() { [ -n "$1" ] && local CMT="$1" local CMT=HEAD git log --format=%b -n 1 "$CMT" clip } 19/1

gitbmerge gitbmerge() { ( set -e local WT="$(git worktree list \ sed -ne "/\[$1\]/{s/([^ ]+).*/\1/p}")" if [ -n "$WT" ]; then rm -r "$WT" git worktree prune fi git merge --ff-only "$1" && \ git push && git branch -d "$1" \ && git push origin :"$1" ) } 20/1

21/1

Zpracování obsahu pomocí shellu curl HREF tar -xzf - curl http://repo.turris.cz/turris/openwrt-sdk.tar.bz2 \ tar -xzf - curl -s HREF grep -n curl -s http://repo.turris.cz/turris/lists/base.lua \ grep -n updater-ng Nikdy! curl HREF sh -s 22/1

Stažení všeho ze serveru wget -r no-parent (-l1) wget -r --no-parent \ http://repo.turris.cz/turris/packages/ 23/1

24/1

Spuštění příkazu na několika hostech ROUTERS="1 159 189 156 104 199 135 171 244 172" I=0 for R in $ROUTERS; do echo "=== Runnining on 192.168.1.$R ===" ssh -i ~/router root@192.168.1.$r -- $@ #scp -i ~/router user.lua \ # root@192.168.1.$r:/etc/updater/user.lua #ssh -i ~/router root@192.168.1.$r \ # -- uci set turtetris.line=$i #I=$(expr $I + 1) done 25/1

Port forward ssh host -L 8484:localhost:8384 26/1

SOCKS proxy ssh host -D 8123 27/1

Trvalé připojení cmd ssh host -o ControlMaster=auto \ -o ControlPath=$MCNF_DIR/.ssh_access/%r@%h:%p \ -o ControlPersist=600 ssh config Host * ControlMaster auto ControlPath.cache/ssh/%r@%h:%p ControlPersist 600 28/1

29/1

Prompt a exit code PROMPT_COMMAND=' EC=$? if [[ $EC < 0 ]]; then echo -e "\e[1;31m"exit: $EC"\e[0m" elif [[ $EC > 0 ]]; then echo -e "\e[1;33m"exit: $EC"\e[0m" fi' 30/1

Xterm (urxvt) title function settitle { echo -ne "\033]0;`whoami`@`hostname`:`pwd`\007" } case "$TERM" in xterm* *rxvt*) trap 'settitle' DEBUG ;; esac 31/1

Zsh upozornění od dlouho-běžícího procesu lrbell_duration=15 lrbell_timestamp=$epochseconds lrbell_window_id=0x0 lrbell_active_window_id() { xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW cut -f 2 } lrbell_begin() { lrbell_timestamp=$epochseconds lrbell_message="`pwd`: $1" if [ -n "$DISPLAY" ]; then lrbell_window_id=$(lrbell_active_window_id) fi } lrbell_end() { (( $EPOCHSECONDS - $lrbell_timestamp < $lrbell_duration )) && return 0 print -n '\a' if [ -n "$DISPLAY" ] && [ -n "$lrbell_window_id" ]; then if [ "$(lrbell_active_window_id)"!= "$lrbell_window_id" ]; then notify-send "Command finished" "$lrbell_message" fi fi } add-zsh-hook preexec lrbell_begin add-zsh-hook precmd lrbell_end https://github.com/rcaloras/bash-preexec 32/1

33/1

Jednoduchý příklad _sterm() { local cur prev _init_completion return COMPREPLY=() local ops="-h --help -c -d -e -n -r -s -v" case "$prev" in -d -r) ;; -s) local speeds="2400 4800 9600 19200 38400 57600 115200 230400" COMPREPLY+=($(compgen -W "${speeds}" -- ${cur})) ;; *) COMPREPLY+=($(compgen -W "${ops}" -- ${cur})) ;; esac } complete -o default -F _sterm sterm 34/1

gitbmerge doplňování _gitbmerge() { local cur prev _init_completion return [ $COMP_CWORD -gt 1 ] && return # Complete only single dependency COMPREPLY=() local GDIR="$(pwd)" while [! -d "$GDIR/.git" ]; do [ -z "$GDIR" ] && return GDIR="${GDIR%/*}" done GDIR="$GDIR/.git" [ -f "$GDIR" ] && GDIR="$(cat "$GDIR")" [ -d "$GDIR/refs/heads" ] return local ops="" for B in "$GDIR"/refs/heads/*; do ops="$ops ${B#$GDIR/refs/heads/}" done COMPREPLY+=($(compgen -W "${ops}" -- ${cur})) } complete -F _gitbmerge gitbmerge 35/1

A jaké tipy máte vy? Děkuji za pozornost. 36/1