Memo KSH

jeudi 20 août 2009
par  Jerome ROBERT
popularité : 4%

AIDE-MEMOIRE BOURNE ET KORN SHELL

 

NB: Le Korn-shell constitue un sur-ensemble du Bourne-shell.

Les aspects valides uniquement en environnement ksh sont, soit signalés en gras dans certaines rubriques, soit évoqués explicitement.

sh ksh sh [-c ligne_cde] [-iprs ] [arg...]

ksh [-c ligne_cde] [-iprs ] [arg...]

 

Fichiers d'initialisation

/etc/profile puis $HOME/.profile

puis fichier $ENV pour le ksh (traditionnellement .kshrc)

 

Options

-c

Lancement d'une ligne de commande

-s

Lecture des commandes sur l'entrée standard (défaut)

-r

Choix de la forme restreinte du shell

-i

 Choix du mode interactif (défaut)

-p

 Non utilisation du bit set_uid

 

Les options de la commande interne "set" peuvent également être précisées

 

Caractères spéciaux

<

 Redirection de l'entrée standard

> et >>

 Redirection de la sortie standard

2> et 2>>

 Redirection de l'erreur standard

<< chaîne

Entrée standard entre deux apparitions de la chaîne

<<-chaîne Idem
 "<<chaîne"

 (tabulations autorisées en début de ligne)

<&n

 Redirection de l'entrée standard vers le fichier de descripteur n

>&n

 Redirection de la sortie standard vers le fichier de descripteur n

>&-

 Fermeture de la sortie standard

<&-

 Fermeture de l'entrée standard

>&p

 Redirection de la sortie standard vers l'entrée du coprocessus

<&p

 Redirection de la sortie du coprocessus vers l'entrée standard

;

 Enchaînement de commandes

|

Mécanisme du "pipe"

&

 Commande en arrière plan

(...)

 Groupement de commandes dans un shell fils

{...}

 Groupement de commandes dans le shell courant

&&

 Enchaînement conditionnel de commandes (ET logique)

||

Enchaînement conditionnel de commandes (OU logique)

*

Chaîne quelconque (éventuellement vide) dans le nom d'un fichier

?

Un caractère quelconque dans le nom d'un fichier

[...]

Un caractère défini dans l'ensemble

[!...]

Un caractère non défini dans l'ensemble

?(liste_motif)

Une apparition ou non d'un des motifs

*(liste_motif)

Un nombre quelconque d'apparitions d'un des motifs (évent. 0)

+(liste_motif)

Au moins une apparition d'un des motifs

@(liste_motif)

L'apparition exacte d'un des motifs

!(liste_motif)

Une apparition non définie par les motifs

\

Banalisation d'un caractère spécial

'...'

 Banalisation de tous les caractères spéciaux (sauf ')

"..."

Banalisation de tous les caractères spéciaux (sauf $ \ ` ")

`cde`

Substitution de commande

#

Début de commentaire

$(cde)

Substitution de commande

Affectations et substitutions de variables

var=valeur

 Affectation de variable

$var ou ${var}

Substitution de variable

${var:-valeur}

"var" si non nulle, sinon "valeur"

${var:=valeur}

 Idem ":-" avec éventuelle affectation de "var"

${var:?msg}

"var" si non nulle sinon affichage d'un message

${var:+valeur}

"valeur" si "var" non nulle sinon "chaîne vide"

${#var}

Taille de la variable

${#tab[*]}

Nombre d'éléments du tableau

${var#motif}

Suppression du motif en début de variable

${var%motif}

Suppression du motif en fin de variable

 

Valeurs de paramètres

$n

nième paramètre ( 0 < n < 10 )

${n}

nième paramètre ( n > 9 )

$0

Nom de la procédure

$*

Liste complète des paramètres

$@

Liste complète des paramètres

$#

Nombre de paramètres

$?

Code retour de la dernière commande invoquée

$$

PID du shell interpréteur

$!

 PID du dernier processus invoqué en arrière plan

$-

 Valeur courante des options du shell

 

Variables système sh

CDPATH

Chemin de recherche pour la commande cd

HOME

 Répertoire de connexion

IFS

 Séparateur interne de champs (espace, tabulation et line-feed par défaut)

MAIL

Nom du fichier boîte aux lettres

MAILCHECK

Période de scrutation de la boîte aux lettres

MAILPATH

Chemin de recherche des fichiers boîte aux lettres

PATH

Chemin de recherche pour les commandes

PS1

Prompt principal ($ par défaut)

PS2

Prompt secondaire (> par défaut)

SHACCT

Fichier de comptabilité des procédures SHELL

SHELL

Nom du shell

TERM

Type de terminal

 

Variables système ksh supplémentaires

COLUMNS 

Nombre de colonnes pour l'instruction "select"

EDITOR 

Chemin d'accès à l'éditeur intégré

ENV 

Fichier d'environnement utilisateur

ERRNO 

Numéro d'erreur système

FCEDIT 

Chemin d'accès à l'éditeur de la commande "fc"

HISTFILE 

Chemin d'accès au fichier historique

HISTSIZE 

Nombre de commandes accessibles par l'historique

LINENO 

Numéro de ligne courante

LINES 

Nombre de lignes pour l'instruction "select"

OLDPWD 

Précédent répertoire de travail

PPID

PID du processus père

PS3 

Prompt de la commande "select"

PS4 

En-tête de ligne de commande en mode trace

PWD 

Répertoire courant

RANDOM 

Nombre aléatoire

REPLY 

Réponse utilisateur dans une commande "select"

SECONDS 

Temps ecoulé depuis l'appel de ksh (secondes)

TMOUT 

Délai d'inactivité avant déconnexion (0 -> infini)

 

Instructions de contrôle

 

for var [ in liste_val ]
do
...
done

case var in
motif1)
... ;;
motif2 | motif3)
... ;;
*)
... ;;
esac

if liste
then
...
[ else
... ]
fi

if liste
then
...
[ elif liste
then
...
[ else
... ] ]
fi

while liste_cde
do
...
done

until liste_cde
do
...
done

select var [ in liste_val ]
do
...
done

fonct () function fonct
{ {
... ...
} }

Expressions conditionnelles pour [[ expr ]] 
(commande test intégrée du ksh)

-a fic 

Fichier existant

 

-b fic

  Fichier spécial bloc

-c fic

  Fichier spécial caractère

 

-d rep 

Répertoire

-f fic

Fichier ordinaire

 

-g fic

Bit set_gid positionné

-k fic

Sticky bit positionné

 

 -n chaîne

Chaîne non nulle

-o option

Option positionnée

 

-p fic

Tube nommé

-r fic

Fichier accessible en lecture

 

-s fic

Fichier de taille non nulle

-u fic

Bit set_uid positionné

 

-w fic 

Fichier accessible en écriture

-x fic 

Fichier accessible en exécution

 

-z chaîne 

Chaîne vide

-L fic 

Lien symbolique

 

-O fic

 Fichier appartenant à l'utilisateur

 -G fic

Fichier appartenant au groupe de l'utilisateur

 

-S fic 

Fichier "socket"

fic1 -nt fic2

Fic1 plus récent que fic2

 

fic1 -ot fic2

Fic1 plus ancien que fic2

 fic1 -ef fic2

Fic1 et fic2 sont deux liens

 

str1 = str2

Egalité de chaînes

str1 != str2

Deux chaînes différentes

 

str1 < str2

Comparaisons suivant le code ASCII

exp1 -eq exp2

exp1 est égal à exp2

 

str1 > str2 

Comparaisons suivant le code ASCII

( Autres opérateurs : -ne , -lt , -gt , -le , -ge )

 

 

 

Commandes internes

:

Commande vide. Retourne la valeur 0

 

continue [n] 

Saut de la fin du corps de boucle (n niveaux)

fichier Exécution de la procédure par le shell courant

 

eval [arg...]

Evaluation de commandes

break [n]

Sortie de (n) boucle(s)

 

exec commande

Exécution d'une commande en remplacement du shell courant

exit [n]

Fin avec code retour

 

export [var...]

Mise dans l'environnement

read var...

Lecture d'une ligne sur l'entrée standard

 

getopts [optstr] [nom] 

optstr 
nom 

Analyse des options données à une procédure

Options autorisées 
Option courante (positionne OPTARG , OPTIND)

readonly var... 

Variables non modifiables

 

return [n] 

Sortie d'une fonction avec code retour

set [options] [arg...] 

Sans option -> Affichage de toutes les variables

Options -> Paramétrage de l'interpréteur (set -x -> mode trace)

Arguments -> Repositionnement de l'ensemble des paramètres

 

 set -o [option...]

 

set -A tab valeur...

Paramétrages spécifiques ksh 
(set -o -> liste des options courantes )

 

Affectation de tableau

shift [n]

Décalage des paramètres de n positions (défaut 1)

 

trap [arg] [sig] 

Traitement des signaux

times 

Temps d'exécution cumulés

 

ulimit [options] [val] 

Choix de limitations de ressources

type commande

Type de commande

 

unset var...

Suppression de variables

wait [n]

Attente de processus en arrière plan

 

#

tout ce qui suit le # est un commentaire

 

 

Commandes internes du ksh

alias [-tx] [nom[=valeur]]...

Sans arguments, Liste des alias définis

-t 

-x 

nom = valeur 

Liste des alias suivis

Liste des alias exportés

Définition d'un alias

 

fc [-e edit] [-nlr] [n1 [n2]]

Gestion de l'historique

-l 

-e 

-n 

-r 

Liste des dernières commandes n1 à n2 (défaut 16 dernières)

Appel d'un éditeur autre que $FCEDIT

Liste des commandes sans les numéros

Ordre inverse

 

bg [job]

Reprise d'un travail en arrière plan

 

history 

Alias intégré pour "fc -l"

fg [job]

 Reprise d'un travail en premier plan

 

let exp

Evaluation d'une expression arithmétique

Alias intégré pour "fc -e -" -> Relancer des commandes

jobs [-lnp] [job...] 

Informations sur les travaux en cours

 

(( exp ))

 idem "let" -> permet les espaces

 

print [options] [arg...]

Affichage sur la sortie standard (nouvelle version de echo)

-n

-p

-s 

-u [n] 

 Pas de saut de ligne final

 Redirection vers le co-processus

Redirection vers le fichier historique ($HOME/.sh_history)

Redirection vers le fichier de descripteur n

Caractères conventionnels

\a

\b

\c

\f

\n

\r 

\t 

\v

\\ 

\0x

 

 Signal sonore

 Backspace

 Suppression du saut de ligne final

 "form-feed"

 Saut de ligne

Retour chariot

Tabulation

 Tabulation verticale

Caractère Backslash

 Code ASCII en octal

 

read [options] [nom?prompt] [nom...]

demande la saisie pour alimenter une variable

-n 

-p

-s 

-u [n] 

nom?prompt

nom...

Pas de saut de ligne final

Lecture depuis le co-processus

Sauvegarde dans le fichier historique ($HOME/.sh_history)

Lecture depuis le fichier de descripteur n

Choix d'un message avant lecture

Variables concernées (REPLY par défaut)

 

typeset [±options[n]] [nom[=valeur]]...

positionner un type à un variable

Options

-L

-R 

-i

-l

-r

-u

-x

 

Justification à gauche (n est la longueur du champ)

Justification à droite (n est la longueur du champ)

Définition d'une variable de type entier (Idem alias intégré "integer")

Conversion MAJUSCULES en minuscules

Variable non modifiable

Conversion minuscules en MAJUSCULES

Mise dans l'environnement automatique

 

unalias nom...

Suppression d'alias

 

unset [-f] nom...

Suppression de variable ou de fonction [-f]

 

whence [-pv] nom... 

Type de commande

-p 

-v 

Recherche du chemin

Rapport plus détaillé



Commentaires  forum ferme

Logo de behess
mardi 11 mai 2010 à 13h21 - par  behess

On peut aussi noter le ". espace" pour lancer un script au sein du processus courant plutôt que dans un shell fils (pratique pour définir des variables qui resteront accessibles à la sortie du script).

Statistiques

Dernière mise à jour

mercredi 5 juillet 2017

Publication

264 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

190 aujourd’hui
353 hier
537606 depuis le début
7 visiteurs actuellement connectés