-
Notifications
You must be signed in to change notification settings - Fork 5
Intro to Shell
Costin Grigore edited this page Dec 11, 2021
·
29 revisions
- windows: (cmd, powershell, win10 bash) + toybox + cmder
- linux: (bash, zsh) + toybox
- osx:
- original
- cmd - old DOS commands
- zsh - advanced and modern shell in linux
- bash - ubiquitous shell in linux
- powershell - advanced, modern, objectual but microsoft-lockin for windows
- general dynamic interpreted languages
- perl - cross platform
- python - cross platform
- ruby - cross platform
- grovy - cross platform, on JVM
- new, experimental
- kotlin
-
kscript- best for now 2018-12-01 - https://github.com/holgerbrandl/kscript -
https://discuss.kotlinlang.org/t/executing-kotlin-scripts-in-command-shell/1926/3
sample.ktsto be executed withkotlinc -script sample.kts ..#!/usr/bin/env kotlinc -script import java.io.File val folders: Array<out File> = File(args[0]).listFiles { file -> file.isDirectory }!! folders.forEach { folder -> println(folder) } -
Kotlin version 1.3.10-release-253 (JRE 1.8.0_192-b12)still not supporting - https://github.com/Kotlin/KEEP/blob/scripting/proposals/scripting-support.md - https://kotlinlang.org/docs/tutorials/command-line.html
-
- scala
- kotlin
- https://lucasfcosta.com/2019/02/10/terminal-guide-2019.html
- windows: cmder
- linux: term
- osx: iTerm2
- See https://stackoverflow.com/posts/53572628/revisions
- If not sure what is your shell try:
echo $0
-
minGW - MinGW (Minimalist GNU for Windows), formerly mingw32, is a free and open source software development environment to create Microsoft Windows applications. The development of the original MinGW project was halted in 2013, but an alternative called MinGW-w64 has been created by a different author to include several new APIs and provide 64-bit support.
- https://en.wikipedia.org/wiki/MinGW
- install:
scoop install cmder- comes with
cmder->vendor/git-for-windows->bash
- comes with
- much better and shorter than cygwin
- can run
sdkman- https://sdkman.io/install - can run bash scripts
- no package manager?
- can run
- msys - MSYS is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell. A common misunderstanding is MSYS is "UNIX on Windows", MSYS by itself does not contain a compiler or a C library, therefore does not give the ability to magically port UNIX programs over to Windows nor does it provide any UNIX specific functionality like case-sensitive filenames. Users looking for such functionality should look to Cygwin or Microsoft's Interix instead.
- msys2
- install:
scoop install msys2 - https://github.com/klane/dotfiles/blob/master/install.ps1
- http://www.msys2.org/
- based on minGW and modern cygwin
- uses
pacmanas package managerpacman -S mc
- install:
-
gow - Gow (Gnu On Windows) is the lightweight alternative to Cygwin. It uses a convenient Windows installer that installs about 130 extremely useful open source UNIX applications compiled as native win32 binaries. It is designed to be as small as possible, about 10 MB, as opposed to Cygwin which can run well over 100 MB depending upon options.
- install:
scoop install gow - https://github.com/bmatzelle/gow
- executables list - https://github.com/bmatzelle/gow/wiki/executables_list
- install:
- msysgit
-
git-for-windows - Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike. Git for Windows provides a BASH emulation used to run Git from the command line. *NIX users should feel right at home, as the BASH emulation behaves just like the "git" command in LINUX and UNIX environments.
- official: https://github.com/git-for-windows/git/
- cygwin
- https://stackoverflow.com/questions/25019057/how-are-msys-msys2-and-msysgit-related-to-each-other
- https://stackoverflow.com/questions/40262434/what-are-the-differences-between-msys-git-and-git-for-windows-mingw-w64-x86-64-g
- https://github.com/msys2/msys2/wiki/How-does-MSYS2-differ-from-Cygwin
-
pushdandpopd- push in a stack current directory and then change it, pop from stack current directory - list: http://www.pixelbeat.org/cmdline.html
- Toybox - http://www.landley.net/toybox/
- Toybox combines many common Linux command line utilities together into a single BSD-licensed executable. It's simple, small, fast, and reasonably standards-compliant (POSIX-2008 and LSB 4.1).
- https://en.wikipedia.org/wiki/Toybox
- like toybox but GNU - https://en.wikipedia.org/wiki/BusyBox
- useful linux commands - https://searchdatacenter.techtarget.com/tutorial/77-Linux-commands-and-utilities-youll-actually-use
- http://mywiki.wooledge.org/BashPitfalls
- Read first
- Many programs use a so called HOME variable, like:
-
JAVA_HOMEfor JDK (JRE is not good because you will not have access to the compiler: javac) -
M2_HOMEfor Maven
-
- The format of a HOME variable:
MY_HOME=InstallDirexample- windows
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131 - linux
JAVA_HOME=/usr/local/jdk1.8.0_131
- windows
- To use binaries from those homes, add them to the special PATH variable. The binaries are usually in a
bindirectory- windows
set PATH=%JAVA_HOME%\bin;%PATH% - linux/osx
export PATH=$JAVA_HOME/bin:$PATH
- windows
- Variables changes DO NOT propagate for running programs, so they should be restarted. This is by design.
- configure environment
- see Config Java Tools
- basic linux commands
- Home
- Advices
- Development Algorithm
- Who's who
- Software Books
- Career, salary, salariu, brut, net, Levels
-
Tools
- Health
- Physical Tools
- Environment Tools
- File Tools
- Source Tools
- Information Tools
- Collaboration Tools
- Infrastructure Tools
- Language Tools
-
Concepts as Tools spec maturity
- Classes of Objects, Development Algorithm/mantra/practices
- Streaming Tools
- Process Tools psychology, analytical paralysis
- Special
- fiddler kotlin,javascript,scala
- translator scala->kotlin, java->kotlin
- Guides
- Asking for Help
- Aspects
- Security
- Server & Networking load balancing,
-
Principles & Guidelines
- PLS - Principle of Least Surprise (aka no puzzlers)
- SRP - Single Responsibility Principle
- KISS - Keep It Simple
- YAGNI - You aint gona need it
- DRY - Dont Repeat Yourself
- Fail Fast
- OCP - Open Closed
- POE - Premature Optimization is Evil
- LSP - Liskov Substitution Principle
- DIP - Dependency Inversion Principle / Inversion of Control
- Hollywood Principle - Don't call us We call you
- Tell Don't Ask
- Event sourcing
- NIHS - Not invented here syndrome
- Patterns - idioms, best practices, code smells
-
Intro to Problems - common problems: cache, logging, config, representing date, time, money
- Intro to Libraries - reactive, reactor, commons, collections, apache, guava, logging, config, time, test, junit, vavr, immutable, lombok, mapping, mapstruct, time, joda, cache, Guava, Caffeine, and cache2k
- Intro to DateTime
- Intro to Logging
- Intro to Concurrency - thread, parallelism
- Intro to I18N - internationalization, encoding, unicode, big indian, little indian, ascii, utf, utf8, utf16, formatting, parsing, transliteration, charset, localization, time, timezone, zone id, zone offset, GMT
- Intro to Numbers - rounding, ceil, floor, base, integer, decimal, precision, mantis, exponent, significant, statistics
- Java Idioms
- Concepts
- Code Changes refactor, format, eol, bugfix, newfeature
- Convention Over Configuration
- Continuous Integration
- Continuous Delivery
- Code License
- Fluent Interface
- Semantic Versioning
- Take It Offline
- Flow
- Languages
- Hardening
- Smells
-
Intros
- Intro to Paradigms Object Oriented, Functional, Procedural, Asynchronous
- Intro to Logic
- Intro to Product UX, UI, business, technical, backend, frontend
- Intro to Roles
- Intro to Decision Levels : business, financials, domain, product, architecture, high level design, low level design, coding, debugging, quality, roles, stakeholders
- Intro to Steps
- Intro to Software Architecture
- Intro to Software Design
- Intro to UML state machine diagram, class diagram, sequence diagram
- Intro to Graphical Design
- Intro to Performance bigO, algorithm complexity
- Intro to Agile
- Intro to Scripting
- Intro to Shell execution, environment, registry, powershell, cmd, cmder, linux, bash, ash, csh, zsh, ksh
- Intro to Wiki
-
Intro to Building
- Intro to DevMachine
- Intro to Git
- Intro to Maven
- Intro to Docker
- Intro to Hosting Deploy, nameserver, hostname, registrar, ssl, ddns, dns, naked domain, wildcard domain, email, smtp, pop3, imap, DKIM, SPF, spam
-
Intro to Landscapes Language Environments, Web Landscape
- Intro to JVM Landscape
-
Intro to Javascript Landscape
- Intro to Javascript
- Intro to Typescript binding, implicit, explicit, default (global), callsite, lambda, callback, function, promise, async await
- Intro to Node javascript, npm, yarn
- Intro to DotNet Landscape C# csharp
- Intro to Golang
- Intro to Ruby
- Intro to Python
- Coding Style
- Phases
-
Intro to Quality - QA, Quality Assurance, code quality, bugs, bug levels, metabugs
- Intro to Tests
-
Test Driven Development TDD, mantra
- Domain-and-Test-Driven-Design Advanced topics
- Intro to Coding defensive, offensive, preconditions, postconditions
- Intro to Debugging
- Intro to Profiling, Intro to Performance
- Intro to Code Review
-
Intro to Quality - QA, Quality Assurance, code quality, bugs, bug levels, metabugs
- Intro to Functional
- Intro to Computers memory, cpu, hardware, neuman, computer science, devices
- Intro to OFM
- Intro to Databases Intro to Database Migration ORM, ObjectRelationalMapping, Hibernate, JPA, ebeanorm
- Advanced in Databases - optimistic lock, pessimistic lock
- Intro to WebDevelopment - tcp, http
- Data Structures & money
- Intro to Virtualization
- Admin section
- Intro to Types value, record, case class, alias
- Intro to Layers - frontend,ui,ux
- Intro to Culture - teams, psychology, principles, behaviour
- Intro to 41 - aboriginal linux, google whitepapers
- Intro to Security - ssl, handshake, tsl, https, basic auth, tokens, refresh, jwt tokens, access, refresh
- Intro to Crypto
- Advanced
- Advanced Java
- Circuit Breaker, retry, bulkhead, RateLimit, resilience
- Immutable, purity, pure functions, functional style
- Identification Surrogate vs Natural Keys, database, rest, microservice
- Infrastructure devops, docker, containers, kubernetes, k8s, private cloud, continous deployment
- Resources
- Project Templates
- Ships
- Ship10 - 2021-Aug
- Ship 1 - 2017-May
- Ship 2 - 2017-June
- Ship 3 - 2017-July
-
Ship 4 - 2017-September
- Team 4
- Team 4 Reloaded
- Backlog 4
- Sprint 4.1 old
- Sprint 4.1 Home old
- Sprint 4.2 old
- Sprint 4.2 Home old
- Sprint 4.3 old
- Sprint 4.3 Home old
- Sprint 4.4 old
- Sprint 4.4 Home old
- Sprint 4.5 old
- Sprint 4.5 Home old
- Sprint 4.6 old
- Sprint 4.6 Home old
- Sprint 4.7 old
- Sprint 4.7 Home old
- Sprint 4.8 old
- Sprint 4.8 Home old
-
Non software
- Physical Tools - home tooling

