xzz@carnetderoot.net"La simplicité est la sophistication suprême" - Léonard De Vinci
samedi 14 février 2026
:: Nextcloud en ligne de commande ::
Commandes occ
Rappel
Les commandes occ sont des commandes php et doivent donc être lancées via php.
D'autre part, elles doivent être lancées avec les droits de l'utilisateur propriétaire du répertoire Nextcloud (ici 'www-data').
Par exemple, pour lister les commandes occ disponibles :
# sudo -u www-data /usr/bin/php occ list
[...]
Available commands:
check check dependencies of the server environment
completion Dump the shell completion script
help Display help for a command
list List commands
setupchecks Run setup checks and output the results
status show some status information
upgrade run upgrade routines after installation of a new release. The release has to be installed before.
activity
activity:send-mails Sends the activity notification mails
admin-delegation
admin-delegation:add add setting delegation to a group
admin-delegation:remove remove settings delegation from a group
[...]
Maintenance du système
Vérification des mises à jour
# sudo -u www-data php occ update:check
Nextcloud 32.0.6 is available. Get more information on how to update at https://docs.nextcloud.com/server/32/admin_manual/maintenance/upgrade.html.
Update for calendar to version 6.2.0 is available.
Update for contacts to version 8.3.2 is available.
Update for cookbook to version 0.11.6 is available.
Update for files_automatedtagging to version 3.0.3 is available.
Update for groupfolders to version 20.1.10 is available.
Update for mail to version 5.6.12 is available.
Update for spreed to version 22.0.9 is available.
8 updates available
Mise à jour des applications
Mise à jour d'une application spécifique
# sudo -u www-data php occ app:update calendar
calendar new version available: 6.2.0
calendar updated
Mise à jour de toutes les applications
# sudo -u www-data php occ app:update --all
spreed new version available: 22.0.9
spreed updated
contacts new version available: 8.3.2
contacts updated
cookbook new version available: 0.11.6
cookbook updated
groupfolders new version available: 20.1.10
groupfolders updated
files_automatedtagging new version available: 3.0.3
files_automatedtagging updated
quicknotes new version available: 0.8.40
quicknotes updated
mail new version available: 5.6.12
mail updated
notes new version available: 4.13.0
notes updated
Gestion des utilisateurs
Commandes disponibles
user
user:add adds an account
user:auth-tokens:add [user:add-app-password] Add app password for the named account
user:auth-tokens:delete Deletes an authentication token
user:auth-tokens:list List authentication tokens of an user
user:clear-avatar-cache clear avatar cache
user:delete deletes the specified user
user:disable disables the specified user
user:enable enables the specified user
user:info show user info
user:keys:verify Verify if the stored public key matches the stored private key
user:lastseen shows when the user was logged in last time
user:list list configured users
user:profile Read and modify user profile properties
user:report shows how many users have access
user:resetpassword Resets the password of the named user
user:setting Read and modify user settings
user:sync-account-data sync user backend data to accounts table for configured users
user:welcome Sends the welcome email
group
group:add Add a group
group:adduser add a user to a group
group:delete Remove a group
group:info Show information about a group
group:list list configured groups
group:removeuser remove a user from a group
:: Utilisation de la commande find sous Linux ::
Syntaxe générale
find <chemin> <options>
Utilisation
Options fréquemment utilisées
Option
Signification
-name
Recherche du nom de fichier suivant le motif indiqué
-iname
Semblable à '-name', mais sans différenciation de la casse
-type
Recherche selon le type de fichier
-size
Recherche par taille
-empty
Fichier vide (fichier normal ou répertoire)
-ctime, -mtime, -atime
Recherche par date de création, date de dernière modification ou date de dernier accès (n*24h)
-cmin, -mmin, -amin
Recherche par date de création, date de dernière modification ou date de dernier accès (n minutes)
-user, -group
Recherche par propriétaire ou par groupe
-perm
Recherche par permissions
Type de fichier (option '-type')
Type
Signification
b
Mode bloc
c
Mode caractère
d
Répertoire
p
Tube nommé
f
Fichier normal
l
Lien symbolique
s
Socket
Unité de taille (option '-size')
Unité
Signification
b
bloc de 512 octets (défaut)
c
octet
W
mot de deux octets
k
kilooctet (KiO)
M
mégaoctet (MiO)
G
gigaoctet (GiO)
Options combinées
Il est possible de combiner plusieurs options de recherche, ces éléments étant séparés par des opérateurs :
Opérateur
Signification
-and, -a
ET logique (permet d'utiliser plusieurs options)
-or, -o
OU logique (si la 1ère expression est vraie la suivante n'est pas exprimée)
-not, !
Exception
Note : En cas d'absence d'opérateurs, '-and' est appliqué par défaut
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
[...]
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Commandes principales
Lister les conteneurs
conteneurs actifs
$ docker ps
conteneur ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dbec964fa3a nginx:latest "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp agitated_dubinsky
Tous les conteneurs
$ docker ps -a [--all]
conteneur ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dbec964fa3a nginx:latest "/docker-entrypoint.…" 6 minutes ago Up 7 minutes 80/tcp agitated_dubinsky
882f5d50bdab nginx:latest "/docker-entrypoint.…" 13 minutes ago Exited (0) 12 minutes ago dreamy_yalow
[...]
Lancer un conteneur
$ docker run nginx:latest
Options
-d : lance le conteneur en arrière-plan (detached)
-ti : mode interactif (text interactive)
--rm : supprime le conteneur lorsqu'il est stoppé
--name : assigne un nom au conteneur
--hostname : modifie le hostname du système dans le conteneur
--dns : précise le serveur DNS à utiliser dans le conteneur
Lors de la connexion à un système distant depuis un terminal Alacritty, par exemple via SSH, il peut arriver que le système n'ait pas d'entrée pour Alacritty dans sa base de données terminfo/termcap. Par conséquent, toutes les fonctionnalités du terminal interactif ne fonctionnent pas.
Pour résoudre ce problème, appliquer les instructions ci-dessous en fonction du cas rencontré (terminfo ou termcap).
Terminfo
Génération du fichier terminfo et copie sur l'hôte distant
:: Installation Calculate Directory Server sur un hôte KVM/qemu ::
Création de la machine virtuelle
La machine virtuelle est créée via virt-manager, avec la configuration suivante :
Disque virtio 40Go
Volume virtio de 5.5To
Note : ce volume est créé directement sur l'hôte et se compose de 4 disque de 2To en RAID5 sur lequel un seul volume logique a été défini (volume logique 'data' sur raid5)
Image iso montée sur le lecteur cdrom
Ordre de démarrage : cdrom puis disque
Installation de Calculate Directory Server
Partitionnement automatique
Note : pour que le partitionnement automatique fonctionne, le disque doit avoir une taille minimale de 40Go.
L'objectif est d'avoir la partition racine la plus grande possible montée sur le disque vda de 40Go et /var/calculate sur le volume virtio vdb de 5.5To. Cela implique de se passer de la partition de mise à jour.
Dans ce cas, le partitionnement doit être effectué avant de lancer l'installation :
# gdisk /dev/vda
Partitionnement cible :
Number Start (sector) End (sector) Size Code Name
1 2048 83865599 40.0 GiB 8300 Linux filesystem
2 83865600 83886046 10.0 MiB EF02 BIOS boot partition
Une fois le partitionnement terminé, lancer l'installation en précisant le point de montage de la partition racine :
Renseigner les éléments demandés tels les mots de passe de l'utilisateur à créer et de root.
Redémarrer la machine virtuelle à la fin de l'installation.
$ eix terme_de_recherche
$ eix iftop
* net-analyzer/iftop
Available versions: 1.0_pre4-r2 ~1.0_pre4-r3
Homepage: http://www.ex-parrot.com/pdw/iftop/
Description: display bandwidth usage on an interface
Installation
# emerge category/application
Serveur LDAP
Configuration
# cl-setup ldap
* WARNING: Executing of the program will change the configuration files and database of LDAP service.
If you are ready to continue executing the program, input 'yes', if not 'no': yes
* Erased LDAP Database ... [ ok ]
* Added ldif file ... [ ok ]
* LDAP service configured ... [ ok ]
Integration authentification LDAP à PAM
# cl-setup unix
* WARNING: Executing of the program will change the configuration files and database of LDAP service.
If you are ready to continue executing the program, input 'yes', if not 'no': yes
* Added ldif file ... [ ok ]
* Unix service configured ... [ ok ]
Gestion des utilisateurs
Après avoir configuré l'annuaire LDAP comme base de comptes Unix, utiliser les commandes alternatives suivantes pour gérer les utilisateurs :
Commande
Alternative
useradd (adduser)
cl-useradd [options] user unix
userdel
cl-userdel [options] user unix
usermod
cl-usermod [options] user unix
passwd
cl-passwd [options] user unix
groupadd
cl-groupadd [options] user unix
groupdel
cl-groupdel [options] user unix
groupmod
cl-groupmod [options] user unix
A noter le service qui doit être indiqué à la fin de la commande, avec comme services possibles :
liste non-exhaustive
unix
unix group
samba
samba group
mail
mail group
jabber
jabber group
proxy
proxy group
Serveur Samba
Configuration
# cl-setup -n hostname -w WORKGROUP samba
* WARNING: Executing of the program will change the configuration files of Samba service.
If you are ready to continue executing the program, input 'yes', if not 'no': yes
* Added ldif file ... [ ok ]
* Starting Samba ... [ ok ]
* Added user client in Unix service
* Added user client in Samba service
* Added user admin in Unix service
* Added user admin in Samba service
* Samba service configured ... [ ok ]
Mot de passe administrateur Samba
L'administrateur Samba est utilisé pour ajouter/supprimer des machines du domaine
# cl-passwd --smb admin samba
New password:
Retype new password:
* Samba password of user admin is changed
Administrateur de domaine
Créer un administrateur de domaine pour gérer les machines Windows et l'ajouter au groupe "Administateurs du domaine" (Domain Admins).
# cl-setup -t pop3,imap mail
* WARNING: Executing of the program will change the configuration files of Mail service (programs Postfix and Dovecot).
If you are ready to continue executing the program, input 'yes', if not 'no': yes
* Generating DH. This is going to take a long time ... [ ok ]
* Generating DH. This is going to take a long time ... [ ok ]
* Added ldif file ... [ ok ]
* Starting Postfix ... [ ok ]
* Starting Dovecot ... [ ok ]
* Mail service configured ... [ ok ]
Serveur Jabber
Configuration
# cl-setup jabber
* WARNING: Executing of the program will change the configuration files of Jabber service (program Ejabberd).
If you are ready to continue executing the program, input 'yes', if not 'no': yes
Enter the admin@willy.greenbee.lan password
New password:
Retype new password:
* Added user in Jabber service
* Added ldif file ... [ ok ]
* Generating DH. This is going to take a long time ... [ ok ]
* Starting Ejabberd ... [ ok ]
* Jabber service configured ... [ ok ]
Serveur FTP
Configuration
# cl-setup ftp
* WARNING: Executing of the program will change the configuration files of FTP service (program proftpd).
If you are ready to continue executing the program, input 'yes', if not 'no': yes
* Added ldif file ... [ ok ]
* Starting Proftpd ... [ ok ]
* FTP service configured ... [ ok ]
Serveur DNS
Configuration
# cl-setup dns
* WARNING: Executing of the program will change the configuration files of DNS service (program bind).
If you are ready to continue executing the program, input 'yes', if not 'no': yes
* Added ldif file ... [ ok ]
* Starting Named ... [ ok ]
* DNS service configured ... [ ok ]
Zone DNS maître
# cl-dns-zoneadd -n domain.lan --server hostname.domain.lan --ipserver 192.168.10.20
* Appended DNS master zone domain.lan [ ok ]
* Added A-record in LDAP
* localhost.domain.lan --> 127.0.0.1
*
* Appended DNS master zone 10.168.192.in-addr.arpa [ ok ]
* Added A-record in LDAP
* hostname.domain.lan --> 192.168.10.20
*
* Added PTR-record in LDAP
* 192.168.10.20 --> hostname.domain.lan
*
Enregistrement MX
# cl-dns-zonemod -n domain.lan --mx mail.domain.lan
* Modified MX hosts in zone domain.lan
* domain.lan --> mail.domain.lan
*
* Modified zone "domain.lan"
Note : un enregistrement A pour le serveur mail.domain.lan doit exister au niveau de la zone
$ lsblk | grep disk
sda 8:0 0 119,2G 0 disk
sdb 8:16 0 931,5G 0 disk
sdc 8:32 0 149,1G 0 disk
Vérification de la santé d'un disque
smartmontools
Afficher les informations du disque
Entre autres informations, cette commande permet de vérifier si le disque supporte S.M.A.R.T.
$ sudo smartctl -i /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
[...]
SMART support is: Available - device has SMART capability.
SMART support is: Disabled
Ici, on voit que le disque supporte S.M.A.R.T. mais qu'il est désactivé. Pour l'activer :
$ sudo smartctl -s on /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
Lancer un test court
$ sudo smartctl -t short /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Sun Oct 3 11:18:14 2021 CEST
Use smartctl -X to abort test.
Consulter les résultats du test
Pour vérifier si le test s'est bien déroulé :
$ sudo smartctl -H /dev/sdc
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.14.8-arch1-1] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Afficher un rapport complet du disque
Ici, les paramètres à regarder sont Reallocated_Sector_Ct et Current_Pending_Sector au niveau de la colonne RAW_VALUE.
Si la colonne RAW_VALUE contient une valeur différente de zéro, il est temps de penser à sauvegarder votre disque.
Pour information, le paramètre Reallocated_Sector_Ct correspond au nombre de secteurs défectueux ayant été réalloués et le paramètre Current_Pending_Sector au nombre de secteurs défectueux en attente de réallocation.
Toutes les opérations décrites ci-dessous ont été faites à partir d'un portable sous Archlinux et du reader/writer eMMC se branchant sur le port SD (via un adaptateur micro-SD).
La commande lsblk permet de récupérer le nom du périphérique, ici /dev/sdb :
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
[...]
sdb 8:16 1 116,5G 0 disk
Préparation du module eMMC
Remise à zéro
$ sudo dd if=/dev/zero of=/dev/sdb bs=1M count=8
Partitionnement
$ sudo fdisk /dev/sdb
Créer une nouvelle partition primaire vide, en tapant les commandes suivantes :
o : crée une nouvelle table de partition DOS
n : crée une nouvelle partition avec les paramètres suivants :
p : type de partition primaire
ENTER : numéro de partition (1 par défaut)
4096 : premier secteur
ENTER : dernier secteur (par défaut)
w : écrit la table de partition et quitte
Création du système de fichiers ext4
$ sudo mkfs.ext4 /dev/sdb1
Montage du système de fichiers
$ mkdir root
$ sudo mount /dev/sdb1 root
Téléchargement et extraction du système de fichier root
Attention : Aucun assistant AUR n'est officiellement supporté par les développeurs d'Arch Linux pour la simple raison qu'AUR est un dépôt de paquets non officiellement supportés.
Trizen
trizen est un client pour AUR, léger et écrit en Perl.
Installation de trizen
$ git clone https://aur.archlinux.org/trizen.git
$ cd trizen
$ makepkg -si
# vi /etc/hostname
cloudshell
# vi /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 cloudshell.domaine.lan cloudshell
Adresse IP
Comme il s'agit d'un serveur installé dans mon réseau local, j'utilise DHCP pour lui assigner une adresse IP (bail statique sur le routeur) et pour diffuser différentes options. Par sécurité, un profil statique est créé dans le cas où le routeur ne serait pas disponible.
# vi /etc/dhcpcd.conf
Ajouter/modifier les lignes suivantes :
# Allow users of this group to interact with dhcpcd via the control socket.
controlgroup wheel
# Inform the DHCP server of our hostname for DDNS.
hostname
# Persist interface configuration when dhcpcd exits.
persistent
# vendorclassid is set to blank to avoid sending the default of
# dhcpcd-<version>:<os>:<machine>:<platform>
vendorclassid
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu
# Most distributions have NTP support.
option ntp_servers
# Rapid commit support.
option rapid_commit
# A ServerID is required by RFC2131.
require dhcp_server_identifier
# Generate Stable Private IPv6 Addresses based from the DUID
slaac private
noipv4ll
# Static profile
profile static_eth0
static ip_address=192.168.0.2/24
static routers=192.168.0.254
static domain_name_servers=192.168.0.254 1.1.1.1
# Fallback to static profile
interface eth0
fallback static_eth0
Installation du gestionnaire de RAID du controleur JMS56X
# wget https://wiki.odroid.com/_media/accessory/add-on_boards/xu4_cloudshell2/raidmgr_static_cloudshell2.zip
# unzip raidmgr_static_cloudshell2.zip
# chmod a+x raidmgr_static
# ./raidmgr_static
JMS56X HW RAID Manager V8.0.0.1
(C) 2008~2011 JMicron Tech, Corp. Command Line Interface RAID Manager For JMS56X.
JMS56X>
Valid commands set are:
=======================
GC ------------------------------------- Get avail JMS56X
DC C[n] -------------------------------- Display controller info
SR C[n] -------------------------------- Show avail RAID info
SS C[n] -------------------------------- Show avail SATA info
SM C[n] D[n] --------------------------- Show disk S.M.A.R.T. info
CR C[n] D[0,..,2] R0|R1|JBOD ----------- Create RAID
DR C[n] R[n] --------------------------- Delete RAID
SF C[n] -------------------------------- Show firmware version
SA C[n] -------------------------------- Set alarm mute
GR C[n] R[n] --------------------------- Get rebuilding percentage
ID C[n] D[n] --------------------------- Identify disk
ST C[n] R[n] timer --------------------- Set standby timer
AS C[n] D[n] R[n] ---------------------- Add spare disk
DS C[n] D[n] R[n] ---------------------- Delete spare disk
EX ------------------------------------- Exit
JMS56X>
#!/bin/bash
REFRESH="1"
DISK_TEMP_THRESHOLD="45"
CPU_TEMP_THRESHOLD="60"
FAN_CHANGED="*"
get_disk_dev_info() {
# Pull disk info from /dev/sd*
fdisk -l > disks.txt 2>/dev/null
SATA=($(awk '/^\/dev\/sd/ {printf "%s ", $1}' disks.txt))
rm disks.txt
}
get_disk_temperature() {
for i in "${!SATA[@]}"
do
# declare and assign variable seperately to avoid masking return value
DISK_TEMP[$i]=" (IDLE)"
local t
t=$(smartctl -a "${SATA[$i]}" -d sat | grep "Temp")
if (( $? == 0 ))
then
local temp=$(echo $t | awk '{print $10}')
DISK_TEMP[$i]="$temp"
else
DISK_TEMP[$i]=""
fi
done
}
get_cpu_temperature() {
for i in {0..4}
do
_t=$(($(</sys/class/thermal/thermal_zone${i}/temp) / 1000))
CPU_TEMP[$i]="$_t"
done
}
fan_on() {
i2cset -y 1 0x60 0x05 0x00
}
fan_off() {
i2cset -y 1 0x60 0x05 0x05
}
handle_fan() {
for i in "${!DISK_TEMP[@]}"
do
if (( "${DISK_TEMP[$i]}" > "${DISK_TEMP_THRESHOLD}" ))
then
if [ "${FAN_CHANGED}" != "1" ]
then
echo "Turning fan on because disk $i has hit the threshold"
fi
FAN_CHANGED="1"
fan_on
return
fi
done
for i in "${!CPU_TEMP[@]}"
do
if (( "${CPU_TEMP[$i]}" > "${CPU_TEMP_THRESHOLD}" ))
then
if [ "${FAN_CHANGED}" != "1" ]
then
echo "Turning fan on because CPU $i has hit the threshold"
fi
FAN_CHANGED="1"
fan_on
return
fi
done
# No fuss, fan is off
if [ "${FAN_CHANGED}" != "0" ]
then
echo "All temps nominal, turning fan off"
FAN_CHANGED="0"
fi
fan_off
}
while true; do
get_disk_dev_info
get_disk_temperature
get_cpu_temperature
handle_fan
sleep ${REFRESH}
done
On rend le script exécutable :
$ sudo chmod a+x /bin/cloudshell-fan
Service systemd
$ sudo vim /etc/systemd/system/cloudshell-fan.service
Le CloudShell2 permet de connecter deux disques SATA au format 3.5" par défaut (et 2.5" avec adaptateur), et supporte les technologies RAID0, RAID1, SPAN ainsi que l'accès direct (mode PM).
Dans ma configuration, j'ai branché deux disques SATA 2To en 2.5" et configuré le 'DIP switch' en accès direct (mode PM).
Ces deux disques seront configurés via LVM pour former un volume logique unique de 4To.
Note : Sur un serveur on devrait dans l'idéal créer un volume RAID1 avec deux disques, mais ici on est limité au niveau matériel, en effet le CLoudshell2 connecte les deux disques SATA en USB via UART et à l'heure actuelle la synchronisation des deux disques provoque de nombreuses erreurs fatales, jusqu'à rendre USB indisponible. Les solutions de contournement consistent à limiter la taille et la bande passante allouée à la synchronisation, ce qui induit des pertes de performances non négligeables. Je préfère donc pour le moment sauvegarder les données de manière régulière sur un autre mini-serveur de mon réseau dédié à la sauvegarde (un raspberry Pi avec un disque externe de 4To).
Préparation des disques
$ sudo gdisk /dev/sda
Supprimer toutes les données GPT et MBR du disque, en tapant les commandes suivantes :
x : accéder aux fonctionnalités avancées
z : détruire les données GPT et MBR
Partitionnement
$ sudo gdisk /dev/sda
Créer une nouvelle partition de type 'Linux LVM' (8e00) sur le disque, en tapant les commandes suivantes :
n : créer une nouvelle partition avec les paramètres suivants :
Partition number (1-128, default 1):
First sector (34-3907029134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-3907029134, default = 3907029134) or {+-}size{KMGTP}:
Hex code or GUID (L to show codes, Enter = 8300): 8e00
w : appliquer les changements et quitter
Répéter l'opération sur le 2ème disque (/dev/sdb).
Vérification
$ sudo fdisk -l
[...]
Disk /dev/sda: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Device Start End Sectors Size Type
/dev/sda1 2048 3907029134 3907027087 1.8T Linux LVM
Disk /dev/sdb: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Device Start End Sectors Size Type
/dev/sdb1 2048 3907029134 3907027087 1.8T Linux LVM
for color in {0..255}; do
tput setab $color
echo -n "$color "
done
tput sgr0
echo
~/.bashrc
Equivalence de couleurs
Couleur
Code
Black
0;30
Blue
0;34
Green
0;32
Cyan
0;36
Red
0;31
Purple
0;35
Brown
0;33
Light Gray
0;37
Dark Gray
1;30
Light Blue
1;34
Light Green
1;32
Light Cyan
1;36
Light Red
1;31
Light Purple
1;35
Yellow
1;33
White
1;37
Eléments basiques
Code
Elément affiché
\a
Echappement
\d
Date (Sun Jun 20)
\e
Caractère 'Bell'
\h
Nom d'hôte (hostname)
\H
Nom d'hôte complet (hostname.domain.tld)
\j
Nombre de process lancés par le shell
\l
Nom du terminal
\n
Retour à la ligne
\r
Retour chariot
\u
Nom d'utilisateur
\v
Version de Bash
\w
Répertoire courant
\W
Chemin complet du répertoire courant
!
Numéro d'historique de la commande en cours
Exemples
Couleur du prompt en rouge
PS1='\[\033[31m\][\u@\h \W]\$\[\033[0m\] '
Couleur du prompt en bleu
PS1='\[\033[34m\][\u@\h \W]\$\[\033[0m\] '
Bashrc
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
####################
# SHELL OPTS
###############
#PS1='[\u@\h \W]\$ '
PS1='\[\033[34m\][\u@\h \w]\$\[\033[0m\] '
####################
# ENV
###############
# Editor
export EDITOR=vim
####################
# ALIAS
###############
# Colorization of outputs
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias ip='ip --color=auto'
alias dmesg='dmesg --color=always'
# Commands alias
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
alias vi='vim'
# Tricks & Useful aliases
alias cd..='cd ..'
alias env='env | sort'
# -> if the second argument is an alias, it will get expanded prior to passing to sudo
alias sudo='sudo '
alias keygen='keygen -C "$(whoami)@$(uname -n)-$(date -I)"'