Domaine public 🅭

CMS minimal
ecrit avec VI

[ /  ^ < ]

shell

langage de commandes

presentation
crontab
ssh
divers
bides
qui fait quoi      26/01/2024
vivre en console      26/01/2024
langue du clavier      14/02/2024
vi - view      31/08/2023
whatis       24/08/2023
tldr       27/05/2022
reprise       09/06/2022
main courrante       26/01/2023
tube nommĂ©       25/07/2021
terminal persistant       06/07/2023
term ligne mediocre      20/03/2023
fdupes       18/05/2022
detox       18/05/2022
shell compiler       14/11/2023
shellcheck       14/11/2023
exa       24/08/2023
monter cle USB      22/01/2024

pour svoir qu'elle programme utilise quel ressource
la commande htop affiche l'activité et permet de trier mais elle n'est pas toujours disponnible.
en revanche  commande top est toujours là
par defaut elle trie les programmes les plus gourmands en processeur
pour decaller vers la droite par exemple pour trier sur l'usage de la memoire : [Maj] [>]

comment bien vivre en console
copie locale

# pour mettre le clavier en français
# en mode console:
sudo loadkeys fr
# en mode graphique X11:
setxkbmap fr

# vi est l'Ă©diteur "geek" qui resiste au "crash"
# il crĂ©e un fichier de travail .nom_fichier.swp dans le mĂȘme rĂ©pertoire
# cela pose deux problĂšmes:
## mise Ă  jour de la date de modification du repertoire
## laisse parfois trainer des fichiers au mauvaise endroit avec de mauvais droits
# Ă©videmment il y une solution avec la commande:

view

# une commande permet d'afficher une fichier de formation qui est lui même éditable vimtutor # pour Ă©diter les fichier en hexadĂ©cimal bvi

# whatis - Afficher une ligne de description des pages de manuel (commande man)

# tldr too long didn't read (dépend d'une connexion internet)
# les pages de la commande man sont parfois trop denses.
tldr {{commande}}   # explique en quelques exemples
https://tldr.ostera.io/ version en ligne.
wget https://raw.githubusercontent.com/raylee/tldr/master/tldr pour recuperer la version "shell" du client.

# tout simple pour relancer un programme qui plante:
while date | tee -a /tmp/relance.prog.$$.txt
do prog
done

# pour arrĂȘter le programme ( depuis une autre console )
chmod -w /tmp/trace.prog.txt

# la commande watch existe aussi
  -e, --errexit          termine si la commande sort avec un code non nul
  -g, --chgexit          termine quand la sortie de la commande change

# main courrante qui note tout
script -f $(mktemp /tmp/main_courrante.XXXX.txt) # option flush sinon envoi par lot
.
.
exit

# problĂšme : ajoute de ^M en fin de ligne

# pour suivre sur un autre Ă©cran:
tail -f $(ls -t /tmp/main_courrante.*.txt | head -1)

# juste pour une fois:
script -c commande

# accumule dans le méecric;me fichier
scrypt -a

# un tube nommé sert à coordonner des programmes
TUBE=$(mktemp -u)
mkfifo $TUBE

# on peut aussi utiliser nc alias netcat via le réseau

# tmux : une commande pour survivre aux deconnexions intempestives
# remplace  la commande screen
# les connexions sont cloisonnées par utilisateur
# le script byobu ajoute une ligne d'informations parametrable en bas de fenêtre

# pour commencer
tmux  [ new -s "nom de session" ]
[Ctrl]B $  # pour renomer la session en cours
.
.
[Ctrl]B d # pour quitter sans deconnecter

[Ctrl]B % # pour ouvrir une seconde sessions dans la même fenêtre

tmux ls   # list-sessions

tmux a [ -t n] # attach n° de sessions vu ci-dessus

# à mettre dans le fichier profile pour forcer l'usage:
test "$TMUX" || tmux a || tmux

# pour partager via une connexion insecure utiliser: tmate qui ajoute du SSL
# à priorie inutle si connexion ssh et semble dépendre d'un serveur

        ===========
# screen : moins pratique que tmux mais plus répendue
# voir aussi dtach

screen -ls   # voir les sessions dĂ©jĂ  ouverte par le mĂȘme utilisateur

screen [-S toto]  # ouvre une nouvelle session

# pour détacher
[ctrl]A d


# pour reconnecet
screen -r [toto]

#un Ă  la fois

dtach permet de partager une session
To create a new session running command and attach to it:

$ dtach -c socket command

For example, to create a new session running bash with the socket located at /tmp/bashsession:

$ dtach -c /tmp/bashsession bash

To create a new session running command without attaching to it:

$ dtach -n socket command

Attach to a session

To attach to an existing session:

$ dtach -a socket
PB reinitalise l'Ă©cran

To attach to an existing session, and if not already existing, create it:
(bug attends une commande en parametre )
$ dtach -A socket nimportnawac

Detach from a session

In an attached session, type Ctrl+\. This key combination can be modified with the -e flag. 

un petit script à mettre dans .bash_profile pour utiliser systématiquement tmux
et retrouver facilement les fenĂȘtres

if test "$TMUX"; then :; else
        CHX="$(tmux ls 2> /dev/null | awk -F ' 1 windows' '{print $1}')"
        CHX=" $(echo $CHX) "
        read -p "$CHX ou rien: "  REP
        test "$REP" && grep " $REP: " <<< "$CHX" && exec tmux a -t "$REP"
        test "$REP" && exec tmux new -s "$REP"
        exec tmux new -s "$(date +%a%Hh%M)"
fi

mobile shell : teminal à distance sur connexion intermitente.

fdupes
commande pour rechercher les fichiers en double
on la trouve dans les dépots sinon :
http://premium.caribe.net/~adrian2/fdupes.html
sur archive.org
copie local de fdupes-1.51.tar.gz

detox
commande pour normaliser les noms de fichiers par exmple hote les espaces
on la trouve dans les dépots sinon :
https://github.com/dharple/detox

# shc ( dans les dépots )
# transforme un script en programme C illisible et le compile
## /z\ le shell doit ĂȘtre dĂ©fini et prĂ©sent lors de l'execution
# uniquement sur le mĂȘme systeme sauf option -r (relax)
# il est possible de mettre une date d'expiration -e jj/mm/aaaa (penser Ă  ajouter -m "")
shc -f monshell.sh


pour verifier si un script est bien Ă©crit:
shellcheck ou dans les dépots

# exa un remplaçant moderne de ls
# l'option --icons est interessante, l'option --git n'est pas implémenté dans la version du dépot ubuntu (22)

# seulement pour periphérique amovible
# sans ĂȘtre "root" aussi pour LUKS
pmount /dev/sdb1

ƒraηcois✉memoρersο.ƒr