Accueil du site > Les articles > Utiliser QSH
Version à imprimer Enregistrer au format PDF

Utiliser QSH

Shell Unix sur AS400

mercredi 1er septembre 2004, par Serge Gomes Visites  11690

QSH (Shell UNIX) permet d’exécuter des commandes UNIX à partir d’un AS400.

Vous pouvez utilisez la commande QSH (ou STRQSH) pour exécuter directement des commandes ou appeler l’interpréteur de commande à partir d’un CL (la variable d’environnement QIBM_QSH_CMD_OUTPUT permet d’orienter la sortie NONE STDOUT FILE FILEAPPEND).


QSH exemples

Lister, à partir d’un CL, tous les fichier de type xls présent dans un répertoire de l’IFS dans un membre AS400. Le fichier BIB/FICAS doit exister

STRQSH CMD('cd home/xls ;ls *.XLS *.xls'>
/QSYS.LIB/SERGE.LIB/FICAS.FILE/FICAS.MBR)

- A noter
— le ; qui permet d’enchainer plusieurs commande.
— le > qui permet d’orienter la sortie vers un fichier.

Il est possible d’orienter la sortie par défaut vers un fichier : Extrait source CL Serge GOMES

/* -----------------------------------------------------
DCL        VAR(&WK) TYPE(*CHAR) LEN(1) VALUE('''')
DLTF       FILE(QTEMP/W_IMPORT)
MONMSG     MSGID (CPF0000)
CRTPF      FILE(QTEMP/W_IMPORT) RCDLEN(100)
          TEXT('Export AS => XLS')<BR>                
OVRDBF     FILE(STDOUT) TOFILE(QTEMP/W_IMPORT)
MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL ERREUR)
CHGVAR     VAR(&CMD) VALUE('cd ' *CAT &WK *CAT &CHEM  
         *TCAT &WK *CAT ';ls -t')                        
STRQSH     CMD(&CMD)                        
/* --------------------------------------------------------

Quelques commandes QSH utiles :

Zipper un fichier de l’IFS

compress home/xls/toto.xls

le résultat renomera le fichier en toto.xls.z

Dézipper un fichier

uncompress home/xls/toto.xls

Exécuter un ordre SQL !

db2 "SELECT * FROM bib.fichier"

Cela permet notemment d’orienter directement la sortie d’une requête SQL vers un fichier exploitable sur un PC.

Lister tous les fichiers qui commence par F

find /home/ -name 'F*' -exec basename {} \;

Cette commande est capable de passer la limite de LS.