# Ligne de commande Je ne connais pas WSL. Mais voici ce que j'attends d'une ligne de commande correctement configurée. - Prompt avec nom de branches + modifications en cours Libre à chacun de choisir s'il souhaite quelque chose de léger ou non. - Autocomplétion Git - Quelques alias Git (lol, st, co...) Ceux-là, ceux de "Oh my zsh", peu importe. ``` [alias] st = status co = checkout lol = log --oneline --decorate --graph lola = log --oneline --decorate --graph --all amend = commit --amend --no-edit last = log -1 HEAD inprogress = branch --no-merged dev changelog = log --format=%s --no-merges --reverse ``` - Alias gti=git ^^ - z/autojump/... N'importe quelle commande qui vous permet de sauter dans un projet sans chercher son chemin. [autojump](https://github.com/wting/autojump) - jenv/fnm|nvm C'est à dire un moyen d'avoir un environnement "souple" et non pas s'appuyer sur l'unique version globale. - Un minimum de configuration/connaissance Vim [On en reparle.] - Connaître des raccourcis clavier ## Raccourcis clavier Unix | Commande | Effet | | ---------- | -------------------------------------------------------------- | | `Ctrl + r` | Recherche dans les commandes précédentes | | `Ctrl + a` | Début de ligne | | `Ctrl + e` | Fin de ligne | | `Ctrl + k` | Supprime jusqu'à la fin de la ligne | | `Ctrl + w` | Supprime le "mot" avant le curseur | | `Ctrl + y` | Colle le texte supprimé avec les 2 commandes précédentes | | `Ctrl + d` | Quitte le shell en cours (utile pour sortir d'une session ssh) | ## Modifier un fichier `vim`, `nano` ou même `ed` pour intervenir sur les serveurs sans UI. L'intérêt de Vim, c'est que les connaissances sont transférables dans less et dans git. ### Configuration Dans le fichier `~/.vimrc` ``` set number " Show current line number set relativenumber " Show relative line numbers ``` Ce qui donne quelque chose comme ça : ``` 4 # Formation pour l'AMSOM 3 2 Dates : 5, 6, 7, 8 Janvier 2020 1 5 ## Thèmes 1 2 - Environnement et outils du développeur Web 3 - Git & Gitlab ``` ### Navigation | Commande | Effet | | -------------------- | -------------------------------------- | | `gg` | Aller au début du fichier | | `Shift + g` | Aller à la fin du fichier | | `:` | Se rendre à un numéro de ligne | | `:` | Se rendre à un numéro de ligne relatif | | `/` | Recherche du pattern | | `n` | Prochaine occurence du pattern | | `:q` | Quitter | ### Edition Attention aux modes ! Avant de taper du texte, pensez à passer en mode "insertion" via `i` et avant d'utiliser les commandes pensez à en sortir via `esc` | Commande | Effet | | --------------------- | ----------------------------------------------------------------------------------------------- | | `:wq` | Sauvegarder et quitter | | `:m` | Déplace la ligne courante sous la ligne citée | | `dd` | Supprime la ligne en cours (et copie) | | `d10` | Supprime 10 lignes | | `u` | Undo | | `ciw` | Supprime le mot (w) en cours et passe en mode insertion (peut-être dérivé en `ci(` par exemple) | | `:%s/Git/Kit` | Remplace toutes les occurences de Git par Kit | Le copier-coller dans Vim est un art que je ne maîtrise pas, ci-dessous les deux commandes de bases. | Commande | Effet | | -------- | ----------------------- | | `yy` | Copie la ligne en cours | | `p` | Colle la copie | [Pour en savoir plus](https://vim.fandom.com/wiki/Copy,_cut_and_paste) ## Les outils Unix ### Lire un fichier ``` less ``` Contrairement à `cat` permet la navigation dans le fichier. Les commandes sont les mêmes que pour `vim`. ### Chercher dans un fichier ``` grep MyException logs/error.log ``` ### Afficher les dernières lignes d'un fichier ``` tail logs/error.log ``` En mode "watch" avec une vue élargie ``` tail -f -n 20 logs/access.log ``` ### Extraire des données `sed` est une commande qui n'est pas évidente, mais il faut l'avoir en tête et ne pas hésitez à "googler" son usage au besoin. ### Combinaisons via `|` Avec le fichier `fake.log` suivant ``` ezorihzeoh numcompte : 12345 oeihroeih reoirhoeirh oiehro ziehrozeflksnlsdb eoirhedcdaz numcompte : 38787 oeihoe oeirh oeihr oeir oihe zepzplcns numcompte : 12345 eeropijpzejk zeorj zepo rzef ozerh z eoiheola numcompte : 38787 sqldkfhzohsdohzeorih eorihonenc numcompte : 98765 ``` ``` grep numcompte fake.log | sed -E 's/.*numcompte : ([0-9]+).*/\1/' | sort | uniq ``` Donne ``` 12345 38787 98765 ``` ## Pour aller plus loin - tmux Personnellement, je n'en suis pas encore là, mais c'est très souvent cité comme "must-have".