author | date |
---|---|
Sandra Parsick |
DD.MM.YYYY |
JUG Schweiz, Zürich
15.06.2023
@SandraParsick
- freiberuflicher Developer und Consultant im Java-Umfeld
- Schwerpunkte:
- Backend-Entwicklung
- Software Craftmanship
- Automatisierung von Entwicklungsprozessen
- Training / Workshop
- Java Champion
- Cyberland
- Podcast: Ready-for-Review.dev
- Homepage: https://www.sandra-parsick.de
- Mastodon:@[email protected]
- Twitter: @SandraParsick
Danke an
- die Weihnachtssessions der Softwerkskammer Ruhrgebiet "Show me your favourite tool"
- die zahlreiche Pair-Programming-Sessions mit Kollegen
- Martin Leyrer für seine Vorträge zu Kommandozeilenwerkzeugen https://martin.leyrer.priv.at/
- Programmmiersprache: Java, manchmal Groovy und Kotlin, sehr selten Go, JavaScript
- OS: Hauptsächlich Linux, manchmal (kastriertes) Windows, kenne Mac nur von Pair Programming
- Plattformen: Kubernetes, Docker
Dieser Vortrag wird im Terminal vorgestellt mit Hilfe von:
Linux:
- Konsole
- Tilix
Mac: iterm2
Weitere Terminals, die angepriesen werden
- Standard: Bash
- Nah an der Bash: zsh
- Alternative zu zsh: Fish
Gründe:
- Umstieg von Bash auf zsh gestaltete sich einfach
- Wegen Framework oh-my-zsh (Framework um zsh Konfiguration zu verwalten)
Sammlung von Themes, Shortcuts und Plugins
$ cat ~/.zshrc
# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
#ZSH_THEME="agnoster"
#ZSH_THEME="simple"
ZSH_THEME="spaceship"
https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
https://github.com/unixorn/awesome-zsh-plugins#themes
# Switching directory
<directory name>='cd <directory name>'
..='cd ..'
...='cd ../..'
# Create directory
md='mkdir -p'
# List directory content
l='ls -lah'
ll='ls -lh'
$ cat ~/.zshrc
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(sdk git jump z extract history web-search history-substring-search
mvn gitignore zsh-autosuggestions kubectl sublime asciidoctor ansible vagrant )
https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins-Overview
https://github.com/unixorn/awesome-zsh-plugins#plugins
- jump - kann Ordner markieren und zu diesen Markierungen springen
- z - autojump
- history-substring-search - zsh Implementierung des Fish shell's history search feature
- git - git alias und Funktionen
- mvn - maven completion und alias
- kubectl - kubectl completion and alias
- zsh-autosuggestions - Fish-like fast/unobtrusive autosuggestions for zsh.
https://github.com/zsh-users/zsh-autosuggestions
jump <mark-name>
mark [mark-name]
unmark <mark-name>
marks
z [-chlrtx] [regex1 regex2 ... regexn]
OPTIONS
-c restrict matches to subdirectories of the current directory
-e echo the best match, don't cd
-h show a brief help message
-l list only
-r match by rank only
-t match by recent access only
-x remove the current directory from the datafile
- zsh Implementierung der the Fish shell's history search feature
https://github.com/zsh-users/zsh-autosuggestions
Empfiehlt Befehle, während man in der CLI tippt, basierend auf history
g
gcl
gl
gco
gaa
gcmsg
gp
mvncv
mvnci
mvncvst
k
kgp
kgpw
kdp
kdel
kdelp
- sdkman
- nvm
- asdf
SDKMAN! hilft bei der Verwaltung mehrerer SDKs aus dem Java Ökosystem
sdk list
sdk list maven
sdk install maven 3.8.6
sdk use java 8.0.282.hs-adpt
sdk env init
nvm hilft bei der Verwaltung verschiedener NodeJS Versionen
nvm install 16
nvm use 16
nvm alias default 8.1.0
asdf verwaltet die Versionen von allen möglichen Runtime Tools
- neofetch
- onefetch
- cloc
- scc
- bat
- watch
- atop/htop
- httpie
System Informations Tool
https://github.com/dylanaraps/neofetch
Neofetch für Git Repositories
https://github.com/o2sh/onefetch
cloc zählt Leerzeilen, Kommentarzeilen und physikalische Zeilen in verschiedenen Programmiersprachen
https://github.com/AlDanial/cloc
scc zählt wie cloc Zeilen, berechnet aber noch zusätzlich die Code Komplexität
cat mit Syntaxhighlighting
https://github.com/sharkdp/bat
- Ein built-in Linux Kommando
- Es lässt benutzer-definierte Befehle im Intervall durchlaufen
- Prozessmanager
top
weitergedacht
Intuitiver HTTP Client
Beispiel API: https://swapi.dev/
- ag
- jq
- yq
- XMLStarlet
- sort
- uniq
Werkzeug, um Code durchzusuchen
- JSON Processor
sed
für JSON Daten
https://stedolan.github.io/jq/
- YAML Processor
- angelehnt an jq
- kann auch JSON und XML
https://mikefarah.gitbook.io/yq/
- Es transformiert, durchsucht, validiert und editiert XML-Dokumente
http://xmlstar.sourceforge.net/
- Sortierer
- Teil der GNU CoreUtils
https://www.gnu.org/software/coreutils/
- Sucht und zählt duplizierte Zeile
- Teil der GNU CoreUtils
https://www.gnu.org/software/coreutils/
- dive
- trivy
- k9s
Werkzeug, um die einzelnen Layer eines Docker Images zu inspektieren
https://github.com/wagoodman/dive
Vulnerability/Misconfiguration/secret Scanner für Container und andere Artifakte
https://aquasecurity.github.io/trivy
K8s Manager für das Terminal
- http://conqueringthecommandline.com/book
- https://explainshell.com/
- https://n.jo-so.de/leyrer-cli-gpn20#
man <command>
<command> -h | --help
@SandraParsick