%
Puffy image/svg+xml Puffy 2019-06-14 Stéphane HUC OpenBSD Team Inkscape Puffy OpenBSD https://www.openbsd.org/art4.html English "Puffy", it's a symbol of OpenBSD

KSH : Korn shell

Article publié, le et modifié le
3 minutes de lecture

Cet article contient 541 mots.
Source brute de l'article :
Commit version : b516097

Description

ksh est le shell par défaut sous OpenBSD - exactement pdksh : Public Domain Korn Shell, qui est l’équivalent du ksh88.

Info

Configuration

  • Le fichier de configuration principal : /etc/ksh.kshrc
  • Votre fichier de configuration personnel : ~/.kshrc

Les autres fichiers de configuration liés à l’usage de ksh sont (cf : le manpage ksh) :

  • le fichier profil de la session utilisateur : ~/.profile
  • celui relatif au système : /etc/profile
  • la base de données shell : /etc/shells
  • et, enfin, le fichier de profil shell privilégié : /etc/suid_profile
    • ATTENTION, aux conséquences relatives aux modifications de ce fichier sensible.

Préférez modifier votre fichier de configuration personnel, en ajoutant les déclarations principales, tel que :

. /etc/ksh.kshrc

Ajout du fichier .profile

Sourcez votre fichier personnel ~/.profile dans lequel vous déclarez toutes vos variables d’environnement, vos alias, de manière généraliste.

Préférez l’usage de la variable HOME plutôt que du tilde ~, tel que :

. $HOME/.profile

Activer l’historique

Ajoutez ceci :

HISTFILE=~/.hist
HISTSIZE=3000

Si vous ne voulez pas garder de doublons si une même commande est lancée plusieurs fois de suite :

HISTCONTROL=ignoredumps

PS1 : un prompt en couleur

⇒ PS1 user : PS1="\e[0;36m\u@\h: \e[0;32m\w \e[0;36m\$ \e[m"

⇒ PS1 root : PS1="\e[0;31m\u@\h | \e[0;32m\w | \e[0;31m\# \e[m"

Astuce

En fonction du code de sortie de la commande

Il peut être intéressant d’avoir un prompt couleur, d’une part pour se repérer dans son terminal, d’autre part, ça devient intéressant visuellement si ce dernier change de couleur en fonction du code de retour de la commande qui vient d’être lancée.

Pour cela, voici un bout de config à ajouter :

escape=$(print '\033')
ctrla=$(print '\001')
PS1=$(print '\001\015')
PS1=$PS1$ctrla$escape'[$(($? ? 31 : 32))m'$ctrla
PS1=$PS1'[\u@\h \w]'
PS1=$PS1$ctrla$escape'[0m'$ctrla' '

Exemples

Un .kshrc minimal

. /etc/ksh.kshrc
. $HOME/.profile

HISTCONTROL=ignoredumps
HISTFILE=~/.hist
HISTSIZE=3000

# Préférez paramétrer les variables PS1, LC_* dans .profile
export PS1="\u@\h:\w\$ "
export LC_CTYPE=fr_FR.UTF-8
export LC_MESSAGES=fr

export TOP='-s 1'
export PAGER=less

Informations Systèmes

Gestion de dates

⇒ Obtenir une date au format timestamp :

$ date +%s

⇒ Transformer un timestamp en date :

$ date -r $timestamp +"%x %X"

⇒ Obtenir la date de maintenant :

$ date +"%x %X"

⇒ Obtenir la date du jour :

$ date +'%Y-%m-%d_%H-%M-%S'

⇒ Obtenir la date d’hier :

date -r $(($(date -j $(date +%Y%m%d1200) +%s) - 86400)) +%F

Informations de fichiers

Dates de fichier

⇒ date de création : $ stat -f "%c" nom-fichier

⇒ date de modification : $ stat -f "%m" nom-fichier

⇒ date du dernier accès : $ stat -f "%c" nom-fichier

Attention

Taille d’un fichier

Obtenir la taille d’un fichier :

$ stat -f "%z" nom-fichier

Type d’un fichier

Obtenir le type du fichier :

$ stat -f "%T" nom-fichier

Utilisateur et groupe d’un fichier

⇒ Obtenir l’utilisateur ayant les droits sur le fichier :

$ stat -f "%u" nom-fichier

⇒ et le groupe :

$ stat -f "%g" nom-fichier


Historique

J’ai écrit historiquement cette documentation de manière collaborative sur le wiki de la communauté “OpenBSD Pour Tous”.