diff --git a/docs/Divers/bash/basename.md b/docs/Divers/bash/basename.md
new file mode 100644
index 0000000..173251e
--- /dev/null
+++ b/docs/Divers/bash/basename.md
@@ -0,0 +1,85 @@
+
+
+#### basename
+
+Récupérer la dernière partie d'un chemin (nom du fichier):
+
+```bash
+$ basename /usr/local/etc/php/8.0/conf.d/ext-apcu.ini
+ext-apcu.ini
+```
+Récupérer la dernière partie d'un chemin (dossier):
+
+```bash
+$ basename /usr/local/etc/php/8.0/conf.d/
+conf.d
+```
+
+Récupérer le nom de fichier sans l'extension
+
+```bash
+$ basename -s .ini /usr/local/etc/php/8.0/conf.d/ext-apcu.ini
+ext-apcu
+```
+
+Sur plusieurs chemins:
+
+```bash
+$ basename -a -s .ini /usr/local/etc/php/8.0/conf.d/ext-apcu.ini /usr/local/etc/php/7.3/conf.d/ext-ssh2.ini
+ext-apcu
+ext-ssh2
+```
+
+
+
+#### dirname
+
+Récupérer le chemin (sans le nom du fichier):
+
+```bash
+$ dirname /usr/local/etc/php/8.0/conf.d/ext-apcu.ini
+/usr/local/etc/php/8.0/conf.d
+```
+
+Si le chemin n'est pas indiqué:
+
+```bash
+/usr/local/etc/php/7.3/conf.d
+$ dirname ext-apcu.ini
+.
+```
+
+
+
+#### $0
+
+Récupérer le chemin du script courant:
+
+
+
+```bash
+$ nano chemins.sh
+
+#!/usr/local/bin/bash
+
+echo "Chemin du script: " $0
+echo "Le script exécuté a comme basename `basename "$0"`, dirname `dirname "$0"`"
+echo "Le répertoire courant est `pwd`"
+```
+
+
+
+```bash
+$ ./chemins.sh
+Chemin du script: ./chemins.sh
+Le script exécuté a comme basename chemins.sh, dirname .
+Le répertoire courant est /Users/bruno/Documents/shell_scripts
+```
+
+```bash
+$ /Users/bruno/Documents/shell_scripts/chemins.sh
+Chemin du script: /Users/bruno/Documents/shell_scripts/chemins.sh
+Le script exécuté a comme basename chemins.sh, dirname /Users/bruno/Documents/shell_scripts
+Le répertoire courant est /Users/bruno/Documents/shell_scripts
+```
+
diff --git a/docs/Divers/bash/commandes.md b/docs/Divers/bash/commandes.md
index fa3b7d0..7e19105 100644
--- a/docs/Divers/bash/commandes.md
+++ b/docs/Divers/bash/commandes.md
@@ -34,6 +34,8 @@ $ history
+#### Commandes:
+
```bash
$ history | grep 'chmod'
250 sudo chmod -R 755 gallery/
@@ -49,6 +51,71 @@ $ history | grep 'chmod'
526 history | grep 'chmod'
```
+Excécuter une commande de l'historique d'après son nombre (!#):
+
+```bash
+$ !507
+cd .ssh/
+drwx------ 1 bruno users 124 Mar 15 19:23 .
+drwxr-xr-x 1 bruno users 812 Mar 16 09:31 ..
+-rw------- 1 bruno users 5325 Mar 31 2020 _authorized_keys.bak
+-rw------- 1 bruno users 8200 Mar 11 14:30 authorized_keys
+-rw------- 1 bruno users 3326 Nov 19 2019 id_rsa
+-rw-r--r-- 1 bruno users 734 Nov 19 2019 id_rsa.pub
+-rw-r--r-- 1 bruno users 550 Mar 15 11:00 known_hosts
+bruno@DS916:~/.ssh $
+```
+
+Excécuter 2 commandes en arrière:
+
+```bash
+$ !-2
+
+# 10 commandes en arrière
+$ !-10
+```
+
+Ré-excécuter la dernière commande (!!):
+
+```bash
+$ cat .npmrc
+#prefix=/var/services/homes/bruno/.npm-packages
+tmp=/tmp
+
+$ !!
+cat .npmrc
+#prefix=/var/services/homes/bruno/.npm-packages
+tmp=/tmp
+
+# !! est équivalent à !-1
+```
+
+Relancer la dernière commande avec sudo comme préfixe:
+
+```bash
+$ nano /etc/fstab
+
+$ sudo !!
+sudo nano /etc/fstab
+
+```
+
+Relancer la dernière commande avec 'keygen':
+
+```bash
+$ !keygen
+ssh-keygen -t rsa -b 1024
+```
+
+Rechercher la dernière commande avec 'keygen' sans l'exécuter:
+
+```bash
+# on ajoute :p après
+
+$ !keygen:p
+ssh-keygen -t rsa -b 1024
+```
+
```bash
@@ -73,7 +140,7 @@ $ history
5039* 916e
```
-
+Grep:
```bash
$ history | grep mas
@@ -86,3 +153,7 @@ $ history | grep mas
```
+
+
+#### Arguments:
+
diff --git a/docs/Divers/bash/strings.md b/docs/Divers/bash/strings.md
index 04c87c0..c6a3ef6 100644
--- a/docs/Divers/bash/strings.md
+++ b/docs/Divers/bash/strings.md
@@ -113,7 +113,7 @@ $ echo ${string:7}
$ echo ${string:7:3}
23A
-# Obtenir les 2 premieres caractères:
+# Obtenir les 2 premiers caractères:
$ echo ${string:0:2}
ab
echo "$string" | awk '{print substr($0,0,2)}'
diff --git a/docs/Divers/docker/applications.md b/docs/Divers/docker/applications.md
index 375fd2a..812caca 100644
--- a/docs/Divers/docker/applications.md
+++ b/docs/Divers/docker/applications.md
@@ -395,8 +395,6 @@ drwxr-xr-x 1 root root 196 Mar 15 09:35 public
-## emby
-
https://github.com/mickael-kerjean/filestash/wiki/Release-0.2:-Photo-Management
diff --git a/docs/Divers/docker/docker.md b/docs/Divers/docker/docker.md
index 946eb7a..6b11e3a 100644
--- a/docs/Divers/docker/docker.md
+++ b/docs/Divers/docker/docker.md
@@ -15,7 +15,7 @@ https://docs.docker.com/
| hoobs | hoobs/hoobs:latest | | |
| photonix | damianmoore/photonix:latest | | |
| PiHole | pihole/pihole:latest | | |
-| f | linuxserver/photoshow:latest | | |
+| photoshow | linuxserver/photoshow:latest | | |
#### Portainer:
@@ -49,13 +49,13 @@ uid=1026(bruno) gid=100(users) groups=100(users),101(administrators)
```
```bash
-❯ id
+$ id
uid=501(bruno) gid=20(staff) groups=20(staff),12(everyone)...
-❯ id -u
+$ id -u
501
-❯ id -g
+$ id -g
20
```
@@ -70,7 +70,7 @@ chown 1000:1000 /volume1/docker/personal/ghost/ghost
Créer un fichier **docker-compose.yml** dans **/volume1/docker/personal/ghost**
(pas de TAB)
-```
+```bash
/volume1/docker/personal/ghost $ sudo docker-compose up -d
```
@@ -93,20 +93,22 @@ Stopping photoprism_photoprism_1 ... done
Pour mettre à jour le container, supprimer le container dans la GUI et relancer `docker-compose up -d`
-```
+```bash
/volume1/docker/personal/ghost $ sudo docker-compose pull
/volume1/docker/personal/ghost $ sudo docker-compose up -d
```
-```
-docker-compose up --force-recreate --build -d
+```bash
+$ docker-compose up --force-recreate --build -d
```
http://tonylawrence.com/posts/unix/synology/free-your-synology-ports/
-
Arreter un container:
- docker-compose down
+
+```bash
+$ docker-compose down
+```
@@ -116,15 +118,15 @@ Arreter un container:
**Liste des containers qui tournent:**
```bash
-❯ docker ps (Docker <1.13)
-❯ docker container ls
+$ docker ps (Docker <1.13)
+$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
104f0c7e80a1 postgres:11.1-alpine "docker-entrypoint.s…" About an hour ago Up About an hour 5432/tcp photonix-postgres
4c66e278fd6d gitlab/gitlab-ce:latest "/assets/wrapper" 9 months ago Up 2 hours (unhealthy) 0.0.0.0:922->22/tcp, 0.0.0.0:81->80/tcp, 0.0.0.0:444->443/tcp gitlab
```
```bash
-❯ docker container ls --format 'table {{.Names}}\t{{.Status}}'
+$ docker container ls --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
watchtower Up 38 minutes
portainer Up 2 hours
@@ -133,7 +135,7 @@ homebridge Up 2 days
bizmodeller-mymediaforalexa-amd641 Up 13 days
PiHole Up 3 weeks (healthy)
-❯ docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}\t{{.Networks}}\t{{.Mounts}}"
+$ docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}\t{{.Networks}}\t{{.Mounts}}"
CONTAINER ID IMAGE COMMAND CREATED AT STATUS PORTS NAMES NETWORKS MOUNTS
18fba7e277be portainer/portainer-ce "/portainer" 2020-11-09 22:22:47 +0100 CET Up 15 hours 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp portainer bridge portainer_data,/run/host-serv…
@@ -142,8 +144,8 @@ CONTAINER ID IMAGE COMMAND CREATED AT
**Liste des containers stoppés:**
```bash
-❯ docker ps --filter "status=exited"
-❯ docker container ls -f "status=exited"
+$ docker ps --filter "status=exited"
+$ docker container ls -f "status=exited"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
842cbbada398 damianmoore/photonix:latest "/bin/sh -c ./system…" About an hour ago Exited (137) 50 minutes ago photonix
23c90981855b redis:3.2.8 "docker-entrypoint.s…" About an hour ago Exited (0) 50 minutes ago photonix-redis
@@ -154,8 +156,8 @@ d2b481b91f10 portainer/portainer "/portainer" 9 mon
**Liste de tous les containers:**
```bash
-❯ docker ps --all
-❯ docker container ls --all
+$ docker ps --all
+$ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
842cbbada398 damianmoore/photonix:latest "/bin/sh -c ./system…" About an hour ago Exited (137) 54 minutes ago photonix
104f0c7e80a1 postgres:11.1-alpine "docker-entrypoint.s…" About an hour ago Up About an hour 5432/tcp photonix-postgres
@@ -168,43 +170,56 @@ d2b481b91f10 portainer/portainer "/portainer" 9 mon
**Liste des ID des containers qui tournent:**
```bash
-❯ docker ps -q
-❯ docker container ls -q
+$ docker ps -q
+$ docker container ls -q
104f0c7e80a1
4c66e278fd6d
```
+**Démarrer un container:**
+
+```bash
+# Démarre un container déjà crée mais arrêté.
+
+$ docker start photoprism_photoprism_1
+photoprism_photoprism_1
+$ docker start 4beabb9fd090
+4beabb9fd090
+```
+
**Stopper un container:**
```bash
-❯ docker stop gitlab
-❯ docker stop 4c66e278fd6d
+$ docker stop gitlab
+gitlab
+$ docker stop 4c66e278fd6d
+4c66e278fd6d
```
**Stopper tous les containers:**
```bash
-❯ docker container stop $(docker container ls -aq)
+$ docker container stop $(docker container ls -aq)
```
**Stopper tous les containers associés à une image:**
```bash
-❯ docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
+$ docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
```
**Supprimer un container:**
```bash
-❯ docker container rm d2b481b91f10 9763d849e8b1
+$ docker container rm d2b481b91f10 9763d849e8b1
d2b481b91f10
9763d849e8b1
```
```bash
-❯ sudo docker rm b5576f445729
+$ sudo docker rm b5576f445729
Error response from daemon: You cannot remove a running container b5576f44572913f1154e429b2bc84f84e696f4006adbaf8c2fb44f9dc1ff013a. Stop the container before attempting removal or force remove
$ sudo docker rm b5576f445729 --force
@@ -214,21 +229,37 @@ b5576f445729
**Supprimer tous les containers:**
```bash
-❯ docker container rm $(docker container ls -aq)
+$ docker container rm $(docker container ls -aq)
```
**Exécuter une commande dans un container:**
-```
-❯ sudo docker container ls --format 'table {{.ID}}\t{{.Names}}'
+```bash
+$ sudo docker container ls --format 'table {{.ID}}\t{{.Names}}'
CONTAINER ID NAMES
700a2cd00cba lychee
-❯ sudo docker container exec 700a2cd00cba hostname
+$ sudo docker container exec 700a2cd00cba hostname
700a2cd00cba
-❯ sudo docker container exec 700a2cd00cba hostname -I
+$ sudo docker container exec 700a2cd00cba hostname -I
172.18.0.3
```
+**Créer et démarrer un container:**
+
+```bash
+$ docker container run
+```
+
+```bash
+$ docker run
+```
+
+**Renommer un container:**
+
+```bash
+$ docker rename photoprism_photoprism_1 photoprism_1
+```
+
## Images:
@@ -236,7 +267,7 @@ CONTAINER ID NAMES
**Liste des images:**
```bash
-❯ docker image ls
+$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oznu/homebridge latest 3fa073f20624 4 days ago 625MB
hoobs/hoobs latest c35c2f7222f3 4 days ago 558MB
@@ -251,7 +282,7 @@ v2tec/watchtower latest 3069a9fb302a 2 ye
Changer le [format de la sortie](https://docs.docker.com/engine/reference/commandline/images/#format-the-output):
```
-❯ docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}\t{{.Size}}"
+$ docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}\t{{.Size}}"
REPOSITORY TAG IMAGE ID CREATED AT SIZE
oznu/homebridge latest 3fa073f20624 2020-11-06 07:05:24 +0100 CET 625MB
hoobs/hoobs latest c35c2f7222f3 2020-11-05 15:17:26 +0100 CET 558MB
@@ -272,19 +303,19 @@ Sur une connection ssh: `ssh foo@bar docker images --format "$(jq .imagesFormat
**Supprimer une image:**
```bash
-❯ docker image rm 75835a67d134
+$ docker image rm 75835a67d134
```
**Supprimer toutes les images non référencées par un container existant:**
```bash
-❯ docker image prune -a
+$ docker image prune -a
```
Infos sur une image:
```bash
-❯ docker image inspect 79aeacedba12
+$ docker image inspect 79aeacedba12
[
{
"Id": "sha256:79aeacedba12f180af279aa030c7a64a0b2a9dc428a1dc1c4c074caafa05426d",
@@ -301,7 +332,7 @@ Infos sur une image:
# Date de création d'une image:
-❯ docker image inspect 79aeacedba12 | grep 'Created'
+$ docker image inspect 79aeacedba12 | grep 'Created'
"Created": "2020-10-24T08:06:20.266765865Z",
```
@@ -313,7 +344,7 @@ Infos sur une image:
**Liste des volumes:**
```bash
-❯ docker volume ls
+$ docker volume ls
DRIVER VOLUME NAME
local 4a0cb49ef186f5b6b920cb783e9c7a3d80065d13575dbe956a0875451490e009
local 9d1fbf38c96c6474e159d512ff218c67ff7307c42f46cb01724358db854f3dd9
@@ -324,15 +355,15 @@ local portainer_data
**Supprimer un volume:**
-```
-❯ docker volume rm 4a0cb49ef186f5b6b920cb783e9c7a3d80065d13575dbe956a0875451490e009
+```bash
+$ docker volume rm 4a0cb49ef186f5b6b920cb783e9c7a3d80065d13575dbe956a0875451490e009
4a0cb49ef186f5b6b920cb783e9c7a3d80065d13575dbe956a0875451490e009
```
**Supprimer tous les volumes inutilisés:**
-```
-❯ docker volume prune
+```bash
+$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
@@ -344,8 +375,8 @@ Total reclaimed space: 0B
**Liste des réseaux:**
-```
-❯ docker network ls
+```bash
+$ docker network ls
NETWORK ID NAME DRIVER SCOPE
cb8db3bfdaa8 bridge bridge local
5a1ec0a7d634 host host local
@@ -356,14 +387,14 @@ a522745b92b7 pixapop_default bridge local
**Supprimer tous les réseaux inutilisés:**
-```
-❯ docker network prune
+```bash
+$ docker network prune
```
**Supprimer tous les réseaux crées il y a plus de 12h:**
-```
-❯ docker network prune --filter "until=12h"
+```bash
+$ docker network prune --filter "until=12h"
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
```
@@ -373,7 +404,7 @@ Are you sure you want to continue? [y/N] y
## Stats:
```bash
-❯ docker stats
+$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDSCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
18fba7e277be portainer 0.00% 11.86MiB / 1.941GiB 0.60% 773kB / 6.04MB 287kB / 3.53MB 12
```
@@ -383,7 +414,7 @@ CONTAINER ID NAME CPU % MEM USAGE / LIMIT
## Prune:
```bash
-❯ sudo docker system prune
+$ sudo docker system prune
Password:
WARNING! This will remove:
- all stopped containers
@@ -513,11 +544,11 @@ b47b4299cc38 bizmodeller-mymediaforalexa-amd641 0.0.0.0:52050-52051->52
```bash
~/Documents/docker master* ⇡
-❯ docker volume create portainer_data
+$ docker volume create portainer_data
portainer_data
~/Documents/docker master* ⇡
-❯ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
+$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Unable to find image 'portainer/portainer-ce:latest' locally
latest: Pulling from portainer/portainer-ce
d1e017099d17: Already exists
@@ -644,16 +675,16 @@ Entry | Description | Equivalent
-```
-docker top
+```bash
+$ docker top
-❯ docker service ls
+$ docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
-❯ docker node ls
+$ docker node ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
-❯ docker config ls
+$ docker config ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
```
diff --git a/docs/Divers/joplin.md b/docs/Divers/joplin.md
new file mode 100644
index 0000000..d809952
--- /dev/null
+++ b/docs/Divers/joplin.md
@@ -0,0 +1,101 @@
+# Joplin
+
+
+
+## Joplin server
+
+#### Docker:
+
+`docker-compose.yaml`
+
+```yaml
+version: '3'
+
+services:
+ db:
+ image: postgres:13.1
+ ports:
+ - "5432:5432"
+ restart: unless-stopped
+ volumes:
+ - /Users/bruno/Documents/docker/joplin-data:/var/lib/postgresql/data
+ environment:
+ - APP_PORT=22300
+ - POSTGRES_PASSWORD=joplin
+ - POSTGRES_USER=joplin
+ - POSTGRES_DB=joplin
+ app:
+ image: joplin/server:latest
+ depends_on:
+ - db
+ ports:
+ - "22300:22300"
+ restart: unless-stopped
+ environment:
+ - APP_BASE_URL=https://silverbook.local/joplin
+ - DB_CLIENT=pg
+ - POSTGRES_PASSWORD=joplin
+ - POSTGRES_DATABASE=joplin
+ - POSTGRES_USER=joplin
+ - POSTGRES_PORT=5432
+ - POSTGRES_HOST=db
+
+```
+
+
+
+#### Apache:
+
+Activer les modules dans`httpd.conf`
+
+```http
+LoadModule proxy_html_module lib/httpd/modules/mod_proxy_html.so
+LoadModule proxy_module lib/httpd/modules/mod_proxy.so
+LoadModule proxy_http_module lib/httpd/modules/mod_proxy_http.so
+LoadModule ssl_module lib/httpd/modules/mod_ssl.so
+LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so
+```
+
+Editer le fichier`httpd-vhosts.conf`
+
+```http
+
+ DocumentRoot "/Users/bruno/Sites"
+ ServerName silverbook.local
+
+ Order deny,allow
+ Allow from all
+
+ ProxyPass "/joplin" http://localhost:22300
+ ProxyPassReverse "/joplin" http://localhost:22300
+ ProxyPreserveHost On
+ ProxyRequests off
+ SSLEngine on
+ SSLProxyEngine On
+ SSLCertificateFile "/usr/local/etc/httpd/server.crt"
+ SSLCertificateKeyFile "/usr/local/etc/httpd/server.key"
+
+```
+
+Joplin server sera accessible à https://silverbook.local/joplin
+
+
+
+Pour rendre Joplin server disponible à https://joplin.silverbook.local, modifier le fichier`httpd-vhosts.conf`
+
+```http
+
+ ...
+ ServerName joplin.silverbook.local
+ ProxyPass "/" http://localhost:22300
+ ProxyPassReverse "/" http://localhost:22300
+ ...
+
+```
+
+et le fichier `docker-compose.yaml`
+
+```yaml
+- APP_BASE_URL=https://joplin.silverbook.local
+```
+
diff --git a/docs/Divers/wordpress.md b/docs/Divers/wordpress.md
new file mode 100644
index 0000000..ce2496a
--- /dev/null
+++ b/docs/Divers/wordpress.md
@@ -0,0 +1,348 @@
+# WordPress sur Debian / nginx
+
+
+
+#### Installation nginx/php/mariadb
+
+Ajouter le dépôt PPA pour PHP 7.4
+
+```bash
+$ sudo apt-get install apt-transport-https lsb-release ca-certificates
+$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
+$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" >> /etc/apt/sources.list.d/php.list
+apt-get update
+```
+
+Installer nginx, mariadb, php7.4 et ses modules
+
+```bash
+sudo apt-get install nginx mariadb-server mariadb-client unzip wget git -y
+
+sudo apt-get install php7.4-fpm php7.4-cli
+sudo apt-get install php7.4-{bcmath,bz2,curl,imagick,intl,gd,mbstring,mcrypt,memcache,mysql,redis,xdebug,xml,zip}
+```
+
+Démarrer nginx et mariadb
+
+```bash
+sudo systemctl start nginx.service
+sudo systemctl enable nginx.service
+sudo systemctl start mariadb.service
+sudo systemctl enable mariadb.service
+```
+
+
+
+#### PHP
+
+Voir les logs:
+
+```bash
+sudo nano /etc/php/7.4/fpm/php.ini
+```
+
+
+
+#### mariadb
+
+Sécuriser mariadb
+
+```bash
+$ sudo mysql_secure_installation
+```
+
+Créer la base de donnée wordpress
+
+```bash
+$ sudo mysql -u root -p
+```
+
+```mysql
+# Supprimer une ancienne base:
+# DROP DATABASE wordpress;
+
+CREATE DATABASE wordpress;
+GRANT ALL ON wordpress.* TO 'adm_wp'@'localhost' IDENTIFIED BY 'Kpm!65YU';
+```
+
+
+
+#### Installation WordPress
+
+Télécharger WordPress
+
+```bash
+cd /var/www/html
+sudo wget https://wordpress.org/latest.tar.gz
+sudo tar -xzvf latest.tar.gz
+```
+
+Corriger les autorisations
+
+```bash
+#$ sudo chown -R $USER:$USER /var/www/html/wordpress/
+$ sudo chown -R www-data:www-data /var/www/html/wordpress/
+$ sudo chmod -R 755 /var/www/html/wordpress/
+$ find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
+$ find /var/www/html/wordpress/ -type f -exec chmod 644 {} \;
+```
+
+Configurer WordPress
+
+```bash
+$ curl -s https://api.wordpress.org/secret-key/1.1/salt/
+define('AUTH_KEY', 'nqx$&&2@.PlOv:R-@D5O@1J!fxBV).%}|4$E,<]3V6wK:>s;N*_qZgX1v%Clj.nY');
+define('SECURE_AUTH_KEY', 'k/iGx=P!Q,I=-f-_JhI-hNNlvL]036/W;h@,-a>l:DN#w}@.RdqehTDC>Da{$`v,');
+define('LOGGED_IN_KEY', 'e!2g+-jFty5(}j>Oxtdt1+krNu&[TIrP}|)G&0jt%Z+q#+?TTP1mM+MVTH-zD5#w');
+define('NONCE_KEY', '9 @VoZ.-OVd!wy5mT$?&-$RHIX%xImw]M2jKK+vUet+pImeiNYGx~Jm>shu}p0B7');
+define('AUTH_SALT', ':pyo`{Fk*YNww+V-]-8Oy|}daBoedBnlO?AWKw;Gj+X9n|qm#Ndk~?R-d`N!I21v');
+define('SECURE_AUTH_SALT', ' +dgn@u/e#rZ.4(t}#.3d<)Y2>d)3c)t$j>_C^}sEwSK&VZ+]C=b2/.gzyA#.$Kz');
+define('LOGGED_IN_SALT', 'q1},|Tm|kBb!?H*T`PkGt;}>JF/8fHRRzGaVPB[Et!#gjbm4rjG-}-J`jlzZI*rW/[3?d[@/jg$=95NqWDdBMf{N>o: G!R fp10Ynyoq-^Hw>-7|LEK');
+
+```
+
+```bash
+$ cp wp-config-sample.php wp-config.php
+$ nano wp-config.php
+```
+
+```php
+### Modifier les réglages de base de donnée ###
+
+// ** MySQL settings - You can get this info from your web host ** //
+/** The name of the database for WordPress */
+define( 'DB_NAME', 'wordpress' );
+
+/** MySQL database username */
+define( 'DB_USER', 'adm_wp' );
+
+/** MySQL database password */
+define( 'DB_PASSWORD', 'Kpm!65YU' );
+
+/** MySQL hostname */
+define( 'DB_HOST', 'localhost' );
+
+/** Database Charset to use in creating database tables. */
+define( 'DB_CHARSET', 'utf8' );
+
+/** The Database Collate type. Don't change this if in doubt. */
+define( 'DB_COLLATE', '' );
+
+
+### Remplacer la section Authentication Unique Keys and Salts. ###
+
+define('AUTH_KEY', 'nqx$&&2@.PlOv:R-@D5O@1J!fxBV).%}|4$E,<]3V6wK:>s;N*_qZgX1v%Clj.nY');
+define('SECURE_AUTH_KEY', 'k/iGx=P!Q,I=-f-_JhI-hNNlvL]036/W;h@,-a>l:DN#w}@.RdqehTDC>Da{$`v,');
+define('LOGGED_IN_KEY', 'e!2g+-jFty5(}j>Oxtdt1+krNu&[TIrP}|)G&0jt%Z+q#+?TTP1mM+MVTH-zD5#w');
+define('NONCE_KEY', '9 @VoZ.-OVd!wy5mT$?&-$RHIX%xImw]M2jKK+vUet+pImeiNYGx~Jm>shu}p0B7');
+define('AUTH_SALT', ':pyo`{Fk*YNww+V-]-8Oy|}daBoedBnlO?AWKw;Gj+X9n|qm#Ndk~?R-d`N!I21v');
+define('SECURE_AUTH_SALT', ' +dgn@u/e#rZ.4(t}#.3d<)Y2>d)3c)t$j>_C^}sEwSK&VZ+]C=b2/.gzyA#.$Kz');
+define('LOGGED_IN_SALT', 'q1},|Tm|kBb!?H*T`PkGt;}>JF/8fHRRzGaVPB[Et!#gjbm4rjG-}-J`jlzZI*rW/[3?d[@/jg$=95NqWDdBMf{N>o: G!R fp10Ynyoq-^Hw>-7|LEK');
+
+
+### Activer les mises à jour ###
+
+define( 'FS_METHOD', 'direct' );
+```
+
+
+
+#### Configurer nginx
+
+
+
+```bash
+$ sudo nano /etc/nginx/sites-available/test.conf
+```
+
+```nginx
+server {
+ listen 80;
+ server_name localhost;
+ #return 302 https://$server_name$request_uri;
+
+ root /var/www/html;
+ index index.php index.html index.htm index.nginx-debian.html;
+
+ location / {
+ if ($request_uri ~ ^/(.*)\.html$) {
+ return 302 /$1;
+ }
+ }
+
+ location /wordpress {
+ try_files $uri $uri/ /wordpress/index.php?$args;
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+ location ~ \.php$ {
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+ #include snippets/fastcgi-php.conf;
+ fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ include fastcgi_params;
+ }
+
+}
+```
+
+```bash
+sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/default
+```
+
+Vérifier la configuration et redémarrer PHP/nginx.
+
+```bash
+$ sudo /usr/sbin/nginx -t
+nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
+nginx: configuration file /etc/nginx/nginx.conf test is successful
+
+$ sudo systemctl restart nginx php7.4-fpm
+```
+
+Aller à http://localhost/wordpress/ pour terminer l'installation de WordPress.
+
+
+
+#### Échec d’installation : Impossible de créer le dossier » dans WordPress
+
+Aller dans Outils -> Santé du site
+
+```bash
+$ sudo chown -R www-data:www-data wordpress/
+```
+
+
+
+#### SSL
+
+Générer clé et certificat auto-signés:
+
+```bash
+$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
+```
+
+Créer un groupe Diffie-Hellman:
+
+```bash
+$ sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
+```
+
+Créer un snippet contenant les fichiers des clés et certificats:
+
+```bash
+$ sudo nano /etc/nginx/snippets/self-signed.conf
+```
+
+```nginx
+ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
+ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
+```
+
+Créer un snippet contenant les réglages SSL:
+
+```bash
+$ sudo nano /etc/nginx/snippets/ssl-params.conf
+```
+
+```nginx
+ssl_protocols TLSv1.2;
+ssl_prefer_server_ciphers on;
+ssl_dhparam /etc/nginx/dhparam.pem;
+ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
+ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
+ssl_session_timeout 10m;
+ssl_session_cache shared:SSL:10m;
+ssl_session_tickets off; # Requires nginx >= 1.5.9
+ssl_stapling on; # Requires nginx >= 1.3.7
+ssl_stapling_verify on; # Requires nginx => 1.3.7
+resolver 8.8.8.8 8.8.4.4 valid=300s;
+resolver_timeout 5s;
+# Disable strict transport security for now. You can uncomment the following
+# line if you understand the implications.
+# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
+add_header X-Frame-Options DENY;
+add_header X-Content-Type-Options nosniff;
+add_header X-XSS-Protection "1; mode=block";
+```
+
+Modifier la config nginx pour gérer SSL:
+
+```bash
+$ sudo cp /etc/nginx/sites-available/test.conf /etc/nginx/sites-available/test.conf.bak
+
+$ sudo cp /etc/nginx/sites-available/test.conf
+```
+
+```nginx
+server {
+ #listen 80;
+ listen 443 ssl;
+ listen [::]:443 ssl;
+ include snippets/self-signed.conf;
+ include snippets/ssl-params.conf;
+
+ server_name localhost;
+ #return 302 https://$server_name$request_uri;
+
+ root /var/www/html;
+ index index.php index.html index.htm index.nginx-debian.html;
+
+ location / {
+ if ($request_uri ~ ^/(.*)\.html$) {
+ return 302 /$1;
+ }
+ }
+
+ location /wordpress {
+ try_files $uri $uri/ /wordpress/index.php?$args;
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+ location ~ \.php$ {
+ fastcgi_split_path_info ^(.+\.php)(/.+)$;
+ #include snippets/fastcgi-php.conf;
+ fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ include fastcgi_params;
+ }
+
+}
+
+server {
+ listen 80;
+ listen [::]:80;
+
+ server_name localhost;
+
+ # redirection provisoire
+ #return 302 https://$server_name$request_uri;
+
+ # redirection permanente
+ return 301 https://$server_name$request_uri;
+
+}
+```
+
+https://slacker.ro/2019/07/15/how-to-create-a-self-signed-ssl-certificate-for-nginx-on-debian-10/
+
+
+
+```
+bruno / MHxhNZ2Ax*@@cvy6XM
+```
+
+
+
diff --git a/docs/Linux/awk.md b/docs/Linux/awk.md
index d9467b3..738abff 100644
--- a/docs/Linux/awk.md
+++ b/docs/Linux/awk.md
@@ -20,6 +20,8 @@ snowleopard macOS
+### Colonnes:
+
Afficher la 1ere colonne d'un fichier:
```bash
@@ -186,6 +188,28 @@ snowleopard
+### Lignes:
+
+Afficher la 3eme ligne:
+
+```bash
+$ awk 'NR==3' test.txt
+mint
+```
+
+Afficher les ligne 2 à 4:
+
+```bash
+$ awk 'NR>=2 && NR<=4' test.txt
+ubuntu
+mint
+debian
+```
+
+
+
+### Divers:
+
Passer un argument à awk:
```bash
diff --git a/docs/Linux/grep-options-fr.md b/docs/Linux/grep-options-fr.md
new file mode 100644
index 0000000..9cc58ad
--- /dev/null
+++ b/docs/Linux/grep-options-fr.md
@@ -0,0 +1,63 @@
+# grep --options
+
+
+
+| **grep (BSD)** | **grep (GNU)** |
+| ------------------------------------------------------------ | ------------------------------------------------------------ |
+| **-A** num, -**-after-context**=num Affiche les lignes numériques du contexte de fin après chaque correspondance. Voir aussi les options **-B** et**-C**. | **-A** NUM, **--after-context**=NUM Affiche les lignes NUM du contexte de fin après avoir fait correspondre les lignes. Place une ligne contenant un séparateur de groupe (--) entre des groupes contigus de correspondances. Avec l'option **-o** ou **--only-matching**, cela n'a aucun effet et un avertissement est donné. |
+| **-a**, **--text** Traitez tous les fichiers comme du texte ASCII. | **-a**, **--text** Traiter un fichier binaire comme s'il s'agissait de texte ; c'est équivalent à l'option **--binary-files**=text. |
+| **-B** num, **--before-context**=num Affiche le nombre de lignes de contexte principal avant chaque correspondance. Voir aussi les options **-A** et **-C**. | **-B** NUM, **--before-context**=NUM Affiche les lignes NUM du contexte principal avant de faire correspondre les lignes. Place une ligne contenant un séparateur de groupe (--) entre des groupes contigus de correspondances. Avec l'option **-o** ou **--only-matching**, cela n'a aucun effet et un avertissement est donné. |
+| **-b**, **--byte-offset** Le décalage en octets d'un motif correspondant est affiché devant la ligne correspondante respective. | **-b**, **--byte-offset** Affche le décalage d'octets basé sur 0 dans le fichier d'entrée avant chaque ligne de sortie. Si **-o** (**--only-matching**) est spécifié, imprimez le décalage de la pièce correspondante elle-même. |
+| **-C**[num, **--context**=num] Imprimez des lignes numériques de contexte de début et de fin entourant chaque correspondance. La valeur par défaut est 2 et équivaut à **-A** 2 **-B** 2. | Affiche les lignes NUM du contexte de sortie. Place une ligne contenant un séparateur de groupe (--) entre des groupes contigus de correspondances. Avec l'option **-o** ou **--only-matching**, cela n'a aucun effet et un avertissement est donné. |
+| **-c**, **--count** Seul un nombre de lignes sélectionnées est écrit sur la sortie standard. | **-c**, **--count** Supprimez la sortie normale ; imprimez plutôt un nombre de lignes correspondantes pour chaque fichier d'entrée. Avec l'option **-v**, **--invert-match** (voir ci-dessous), comptez les lignes non correspondantes. |
+| **--colour**=[when, **--color**=[when]] Marquez le texte correspondant avec l'expression stockée dans la variable d'environnement GREP_COLOR. Les valeurs possibles de when peuvent être *never*, *always*, ou *auto*. | **--color**[=WHEN], **--colour**[=WHEN] Entourez les chaînes (non vides) correspondantes, les lignes de contexte, les noms de fichiers, les numéros de ligne, les décalages d'octets et les séparateurs correspondants (pour les champs et les groupes de lignes de contexte) de séquences d'échappement pour les a-cher en couleur sur le terminal. Les couleurs sont définies par la variable d'environnement GREP_COLORS. La variable d'environnement obsolète GREP_COLOR est toujours prise en charge, mais son paramètre n'a pas la priorité. WHEN est *never*, *always*, ou *auto*. |
+| **-D** action, **--devices**=action Spécifiez l'action demandée pour les périphériques, les FIFO et les sockets. L'action par défaut est *'read',* ce qui signifie qu'ils sont lus comme s'il s'agissait de fichiers normaux. Si l'action est définie sur *'skip'*, les périphériques seront ignorés silencieusement. | **-D** ACTION, **--devices**=ACTION Si un fichier d'entrée est un périphérique, une FIFO ou un socket, utilisez ACTION pour le traiter. Par défaut, ACTION est *read*, ce qui signifie que les périphériques sont lus comme s'il s'agissait de fichiers ordinaires. Si ACTION est *skip*, les périphériques sont ignorés en silence. |
+| **-d** action, **--directories**=action Spécifiez l'action demandée pour les répertoires. Il est *"read"* par défaut, ce qui signifie que les répertoires sont lus de la même manière que les fichiers normaux. Les autres valeurs possibles sont *'skip'* pour ignorer silencieusement les répertoires, et *'récurse'* pour les lire récursivement, ce qui a le même effet que l'option **-R** et **-r**. | **-d** ACTION, **--directories**=ACTION Si un fichier d'entrée est un répertoire, utilisez ACTION pour le traiter. Par défaut, ACTION est *read*, c'est-à-dire lire les répertoires comme s'il s'agissait de fichiers ordinaires. Si ACTION est *skip*, ignorez silencieusement les répertoires. Si ACTION est *récurse*, lisez tous les fichiers sous chaque répertoire, récursivement, en suivant des liens symboliques uniquement s'ils se trouvent sur la ligne de commande. C'est l'équivalent de l'option **-r**. |
+| **-E**, **--extended-regexp** Interpréter le motif comme une expression régulière étendue | **-E**, **--extended-regexp** Interpréter les MODÈLES en tant qu'expressions régulières étendues (ERE, voir ci- dessous). |
+| **-e** pattern, **--regexp**=pattern Spécifiez un motif utilisé lors de la recherche de l'entrée : une ligne d'entrée est sélectionnée si elle correspond à l'un des motifs spécifiés. Cette option est plus utile lorsque plusieurs options **-e** sont utilisées pour spécifier plusieurs motifs, ou lorsqu'un motif commence par un tiret (-'). | **-e** PATTERNS, **--regexp**=PATTERNS Utilisez des PATTERNS comme motifs. Si cette option est utilisée plusieurs fois ou est combinée avec l'option **-f** (**--file**), recherchez tous les modèles donnés. Cette option peut être utilisée pour protéger un motif commençant par "-". |
+| **--exclude** Si spécifié, il exclut les fichiers correspondant au modèle de nom de fichier donné de la recherche. Notez que les modèles **--exclude** ont priorité sur les modèles **--include**, et si aucun motif **--include n'est** spécifié, tous les fichiers qui ne sont pas exclus sont recherchés. Les motifs correspondent au chemin d'accès complet spécifié, pas seulement au composant nom de fichier. | **--exclude**=GLOB Ignorez tout fichier en ligne de commande avec un suffixe de nom qui correspond au motif GLOB, en utilisant la correspondance de caractères génériques ; un suffixe de nom est soit le nom entier, soit une partie arrière qui commence par un caractère non-slash immédiatement après une barre oblique (/) dans le nom. Lors de la recherche récursive, sautez tout sous-fichier dont le nom de base correspond à GLOB ; le nom de base est la partie après la dernière barre oblique. Un motif peut utiliser *, ? et [...] comme caractères génériques, et \ pour citer littéralement un caractère générique ou antislash. |
+| | **--exclude-from**=FILE Skip files whose base name matches any of the file-name globs read from FILE (using wildcard matching as described under --exclude). Ignorer les fichiers dont le nom de base correspond à l'un des globes de nom de fichier lus à partir de FILE (en utilisant la correspondance de caractères génériques comme décrit sous --exclude). |
+| **--exclude-dir** Si -R est spécifié, il exclut les répertoires correspondants au modèle de nom de fichier donné de la recherche. Notez que les modèles **--exclude- dir** ont priorité sur les modèles **--include-dir**, et si aucun modèle **--include-dir n'est** spécifié, tous les répertoires qui ne sont pas exclus sont recherchés. | **--exclude-dir**=GLOB Ignorez tout répertoire en ligne de commande avec un suffixe de nom qui correspond au motif GLOB. Lors de la recherche récursive, sautez tout sous-répertoire dont le nom de base correspond à GLOB. Ignorez toute barre oblique redondante dans GLOB. |
+| **-F**, **--fixed-strings** Interpréter le motif comme un ensemble de chaînes fixes | **I-F**, **--fixed-strings** Interprétez les PATTERNS comme des chaînes fixes, pas comme des expressions régulières. |
+| **-f** file, **--file**=file Lisez un ou plusieurs modèles séparés de saut de ligne du fichier. Les lignes de motif vides correspondent à chaque ligne d'entrée. Les sauts de ligne ne sont pas considérés comme faisant partie d'un modèle. Si le fichier est vide, rien n'est trouvé. | **-f** FILE, **--file**=FILE Obtenez des modèles à partir de FILE, un par ligne. Si cette option est utilisée plusieurs fois ou est combinée avec l'option **-e** (**--regexp**), recherchez tous les modèles donnés. Le fichier vide ne contient aucun motif et ne correspond donc à rien. |
+| **-G**, **--basic-regexp** Interpréter le motif comme une expression régulière de base. | **-G**, **--basic-regexp** Interpréter les MODÈLES comme des expressions régulières de base (BRE, voir ci- dessous). C'est la valeur par défaut. |
+| **-H** Affchez toujours les en-têtes de nom de fichier avec des lignes de sortie. | **-H**, **--with-filename** Affchez le nom du fichier pour chaque correspondance. C'est la valeur par défaut lorsqu'il y a plus d'un fichier à rechercher. |
+| **-h**, **--no-filename** N'affchez jamais d'en-têtes de nom de fichier (c'est-à-dire des noms de fichier) avec des lignes de sortie. | **-h**, **--no-filename** Supprimez le préfixe des noms de fichiers sur la sortie. C'est la valeur par défaut lorsqu'il n'y a qu'un seul fichier (ou une seule entrée standard) à rechercher. |
+| **--help** Imprimez un bref message d'aide. | **--help** Affchez un message d'utilisation et quittez. |
+| **-I** Ignorez les fichiers binaires. Cette option est équivalente à l'option **--binary-file=without-match**. | **-I** Traiter un fichier binaire comme s'il ne contenait pas de données correspondantes ; c'est équivalent à l'option **--binary-files=without-match**. |
+| **--include** Si spécifié, seuls les fichiers correspondant au modèle de nom de fichier donné sont recherchés. Notez que les modèles **--exclude** ont priorité sur **-- include** patterns. Les motifs correspondent au chemin d'accès complet spécifié, pas seulement au composant nom de fichier. | **--include**=GLOB Recherchez uniquement les fichiers dont le nom de base correspond à GLOB (en utilisant la correspondance de caractères génériques comme décrit sous **-- exclude**). Si des options contradictoires **--include** et **--exclude** sont données, la dernière correspondante gagne. Si aucune option **--include** ou **--exclude ne** correspond, un fichier est inclus à moins que la première de ces options ne soit **--include**. |
+| **--include-dir** Si -R est spécifié, seuls les répertoires correspondant au modèle de nom de fichier donné sont recherchés. Notez que les modèles **--exclude- dir** ont priorité sur les modèles **--include-dir**. | |
+| **-J**, **--bz2decompress** Décompressez le fichier compressé bzip2(1) avant de rechercher le texte. | |
+| **-L**, **--files-without-match** Seuls les noms des fichiers ne contenant pas de lignes sélectionnées sont écrits sur la sortie standard. Les chemins d'accès sont répertoriés une fois par fichier recherché. Si l'entrée standard est recherchée, la chaîne "(entrée standard)'' est écrite. | **-L**, **--files-without-match** Supprimez la sortie normale ; imprimez plutôt le nom de chaque fichier d'entrée à partir duquel aucune sortie n'aurait normalement été imprimée. Le balayage s'arrêtera lors de la première correspondance. |
+| **-l**, **--files-with-matches** Seuls les noms des fichiers contenant des lignes sélectionnées sont écrits en sortie standard. grep ne recherchera un fichier que jusqu'à ce qu'une correspondance ait été trouvée, ce qui rend les recherches potentiellement moins coûteuses. Les chemins d'accès sont répertoriés une fois par fichier recherché. Si l'entrée standard est recherchée, la chaîne "(entrée standard)'' est écrite. | **-l**, **--files-with-matches** Supprimez la sortie normale ; imprimez plutôt le nom de chaque fichier d'entrée à partir duquel la sortie aurait normalement été imprimée. Le balayage s'arrêtera lors de la première correspondance. |
+| **--mmap** Utilisez mmap(2) au lieu de read(2) pour lire l'entrée, ce qui peut entraîner de meilleures performances dans certaines circonstances, mais peut entraîner un comportement indéfini. | |
+| **-m** num, **--max-count**=num Arrêtez de lire le fichier après *num* correspondances. | **-m** NUM, **--max-count**=NUM Arrêtez de lire un fichier après NUM lignes correspondantes . Si l'entrée est une entrée standard d'un fichier régulier et que NUM lignes de correspondance sont sorties, grep s'assure que l'entrée standard est positionnée juste après la dernière ligne correspondante avant de quitter, indépendamment de la présence de lignes de contexte. Cela permet à un processus d'appel de reprendre une recherche. Lorsque grep s'arrête après NUM lignes de correspondance, il affiche toutes les lignes de contexte. Lorsque l'option **-c** ou **--count** est également utilisée, grep n'affiche pas un compte supérieur à NUM. Lorsque l'option **-v** ou **--invert-match** est également utilisée, grep s'arrête après avoir affiché NUM lignes non correspondantes. |
+| **-n**, **--line-number** Chaque ligne de sortie est précédée de son numéro de ligne relatif dans le fichier, à partir de la ligne 1. Le compteur de numéros de ligne est réinitialisé pour chaque fichier traité. Cette option est ignorée si **-c**, **-L**, **-l** ou **-q** est spécifié. | **-n**, **--line-number** Préfixez chaque ligne de sortie avec le numéro de ligne basé sur 1 dans son fichier d'entrée. |
+| **--null** Affiche un octet zéro après le nom du fichier. | **-Z**, **--null** Affiche un octet zéro (le caractère ASCII NUL) au lieu du caractère qui suit normalement un nom de fichier. Par exemple, grep -lZ affiche un octet zéro après chaque nom de fichier au lieu du saut de ligne habituel. Cette option rend la sortie sans ambiguïté, même en présence de noms de fichiers contenant des caractères inhabituels comme les sauts de ligne. Cette option peut être utilisée avec des commandes comme find -print0, perl -0, sort -z et xargs -0 pour traiter les noms de fichiers arbitraires, même ceux qui contiennent des caractères de saut de ligne. |
+| **-O** Si **-R** est spécifié, suivez les liens symboliques uniquement s'ils ont été explicitement répertoriés sur la ligne de commande. La valeur par défaut est de ne pas suivre les liens symboliques. | |
+| **-o**, **--only-matching** Imprime uniquement la partie correspondante des lignes. | **-o**, **--only-matching** Imprimez uniquement les parties correspondantes (non vides) d'une ligne correspondante, chacune de ces parties sur une ligne de sortie distincte. |
+| **-p** Si **-R** est spécifié, aucun lien symbolique n'est suivi. C'est la valeur par défaut. | |
+| **-q**, **--quiet**, **--silent** Mode silencieux : supprimez la sortie normale. grep ne recherchera un fichier que jusqu'à ce qu'une correspondance ait été trouvée, ce qui rend les recherches potentiellement moins coûteuses. | **-q**, **--quiet**, **--silent** Silence ; n'écrivez rien sur la sortie standard. Quittez immédiatement avec un statut zéro si une correspondance est trouvée, même si une erreur a été détectée. Voir également l'option **-s** ou **--no-messages**. |
+| **-R**, **-r**, **--recursive** Recherchez récursivement les sous-répertoires répertoriés. | **-r**, **--recursive** Read all files under each directory, recursively, following symbolic links only if they are on the command line. Note that if no file operand is given, grep searches the working directory. This is equivalent to the **-d** recurse option. Lisez tous les fichiers sous chaque répertoire, récursivement, en suivant des liens symboliques uniquement s'ils sont sur la ligne de commande. Notez que si aucun opérande de fichier n'est donné, grep recherche dans le répertoire de travail. C'est l'équivalent de l'option récurse **-d** . |
+| | **-R**, **--dereference-recursive** Lisez tous les fichiers sous chaque répertoire, récursivement. Suivez tous les liens symboliques, contrairement à **-r**. |
+| **-S** Si **-R** est spécifié, tous les liens symboliques sont suivis. La valeur par défaut est de ne pas suivre les liens symboliques. | |
+| **-s**, **--no-messages** Mode silencieux. Les fichiers inexistants et illisibles sont ignorés (c'est-à-dire que leurs messages d'erreur sont supprimés). | **-s**, **--no-messages** Supprimez les messages d'erreur concernant les fichiers inexistants ou illisibles. |
+| **-U**, **--binary** Recherchez des fichiers binaires, mais n'essayez pas de les imprimer. | **-U**, **--binary** Traitez le(s) fichier(s) comme binaire(s). Par défaut, sous MS-DOS et MS-Windows, grep devine si un fichier est texte ou binaire comme décrit pour l'option **--binary-files**. Si grep décide que le fichier est un fichier texte, il supprime les caractères CR du contenu du fichier d'origine (pour que les expressions régulières avec ^ et $ fonctionnent correctement). Spécifier **-U** annule cette conjecture, ce qui fait que tous les fichiers sont lus et transmis mot pour mot au mécanisme de correspondance ; si le fichier est un fichier texte avec des paires CR/LF à la fin de chaque ligne, cela entraînera l'échec de certaines expressions régulières. Cette option n'a aucun effet sur les plates- formes autres que MS-DOS et MS-Windows. |
+| **-V**, **--version** Afficher les informations de version et quitter. | **-V**, **--version** Affiche le numéro de version de grep et quitte. |
+| **-v**, **--invert-match** Les lignes sélectionnées sont celles qui ne correspondent à aucun des motifs spécifiés. | **-v**, **--invert-match** Inverser le sens de correspondance, pour sélectionner des lignes non correspondantes. |
+| **-w**, **--word-regexp** The expression is searched for as a word (as if surrounded by `[[:<:]]` and `[[:>:]]`; voir re_format(7)). | **-w**, **--word-regexp** Sélectionnez uniquement les lignes contenant des correspondances qui forment des mots entiers. Le test est que la sous-chaîne correspondante doit être soit au début de la ligne, soit précédée d'un caractère constitutif non-mot. De même, il doit être soit à la fin de la ligne, soit suivi d'un caractère constitutif non-mot. Les caractères constitutifs du mot sont les lettres, les chiffres et le soulignement. Cette option n'a aucun effet si **-x** est également spécifié. |
+| **-x**, **--line-regexp** Seules les lignes d'entrée sélectionnées par rapport à une chaîne fixe entière ou à une expression régulière sont considérées comme des lignes correspondantes. | **-x**, **--line-regexp** Sélectionnez uniquement les correspondances qui correspondent exactement à l'ensemble de la ligne. Pour un motif d'expression régulière, c'est comme mettre entre parenthèses le motif puis l'entourer de ^ et $. |
+| **-y** Équivalent à **-i**. Obsolète. | **-y** Synonyme obsolète de **-i.** |
+| **-Z**, **-z**, **--decompress** Forcer grep à se comporter comme zgrep. | |
+| | **-z**, **--null-data** Traitez les données d'entrée et de sortie comme des séquences de lignes, chacune terminée par un octet zéro (le caractère ASCII NUL) au lieu d'un saut de ligne. Comme l'option **-Z** ou -**-null**, cette option peut être utilisée avec des commandes comme sort **-z** pour traiter des noms de fichiers arbitraires. |
+| **--binary-files**=value Contrôle la recherche et l'impression de fichiers binaires. Les options sont *binary*, la valeur par défaut : rechercher des fichiers binaires mais ne par les imprimer ; *without-match* : ne recherchez pas de fichiers binaires ; et *text* : traitez tous les fichiers comme du texte. | **--binary-files**=TYPE If a file's data or metadata indicate that the file contains binary data, assume that the file is of type TYPE. Non-text bytes indicate binary data; these are either output bytes that are improperly encoded for the current locale, or null input bytes when the **-z** option is not given.
By default, TYPE is *binary*, and grep suppresses output after null input binary data is discovered, and suppresses output lines that contain improperly encoded data. When some output is suppressed, grep follows any output with a one-line message saying that a binary file matches.
If TYPE is *without-match*, when grep discovers null input binary data it assumes that the rest of the file does not match; this is equivalent to the -I option.
If TYPE is *text*, grep processes a binary file as if it were text; this is equivalent to the **-a** option.
When type is *binary*, grep may treat non-text bytes as line terminators even without the **-z** option. This means choosing binary versus text can affect whether a pattern matches a file. For example, when type is *binary* the pattern q$ might match q immediately followed by a null byte, even though this is not matched when type is *text*. Conversely, when type is *binary* the pattern . (period) might not match a null byte.
Warning: The **-a** option might output binary garbage, which can have nasty side effects if the output is a terminal and if the terminal driver interprets some of it as commands. On the other hand, when reading files whose text encodings are unknown, it can be helpful to use **-a** or to set **LC_ALL='C'** in the environment, in order to find more matches even if the matches are unsafe for direct display. |
+| **--binary-files**=value Contrôle la recherche et l'impression de fichiers binaires. Les options sont *binary*, la valeur par défaut : rechercher des fichiers binaires mais ne par les imprimer ; *without-match* : ne recherchez pas de fichiers binaires ; et *text* : traitez tous les fichiers comme du texte. | Si les données ou métadonnées d'un fichier indiquent que le fichier contient des données binaires, considère que le fichier est de type TYPE. Les octets non textuels indiquent des données binaires ; il s'agit soit d'octets de sortie mal encodés pour la locale actuelle, soit d'octets d'entrée NULL lorsque l'option **-z** n'est pas donnée.
Par défaut, TYPE est *binar*y, et grep supprime la sortie après la découverte de données binaires d'entrée nulles, et supprime les lignes de sortie qui contiennent des données mal encodées. Lorsqu'une sortie est supprimée, grep suit n'importe quelle sortie avec un message d'une ligne indiquant qu'un fichier binaire correspond. Si TYPE est *without-match*, lorsque grep découvre des données binaires d'entrée nulles, il suppose que le reste du fichier ne correspond pas ; c'est équivalent à l'option **-I**. Si TYPE est *text*, grep traite un fichier binaire comme s'il s'agissait de texte ; c'est l'équivalent de l'option **-a**. Lorsque type est *binary*, grep peut traiter les octets non textuels comme des terminaisons de ligne, même sans l'option **-z**. Cela signifie que le choix du binaire par rapport au texte peut influer sur la correspondance d'un modèle avec un fichier. Par exemple, lorsque type est *binary*, le motif q$ peut correspondre à q immédiatement suivi d'un octet nul, même si cela n'est pas égalé lorsque type is *text*. Inversement, lorsque type est *binary*, le motif . (point) peut ne pas correspondre à un octet nul. Avertissement : L'option **-a** peut a-cher des ordures binaires, qui peuvent avoir des effets secondaires désagréables si la sortie est un terminal et si le pilote de terminal en interprète une partie comme des commandes. D'autre part, lors de la lecture de fichiers dont les encodages de texte sont inconnus, il peut être utile d'utiliser **-a** ou de définir **LC_ALL='C'** dans l'environnement, afin de trouver plus de correspondances même si les correspondances ne sont pas sûres pour l'affichage direct. |
+| **--context**[=num] Imprimez les lignes numériques du contexte de début et de fin. La valeur par défaut est 2. | |
+| **--line-buffered** Force la sortie à mettre en mémoire tampon par ligne. Par défaut, la sortie est mise en mémoire tampon en ligne lorsque la sortie standard est un terminal et le bloc est mis en mémoire tampon dans le cas contraire. | **--line-buffered** Utilisez la mise en mémoire tampon de ligne sur la sortie. Cela peut entraîner une pénalité de performance. |
+| | **-i**, **--ignore-case** Ignorez les distinctions de casse dans les modèles et les données d'entrée, de sorte que les caractères qui ne diffèrent que dans la casse correspondent les uns aux autres. |
+| | **--no-ignore-case** N'ignorez pas les distinctions de cas dans les modèles et les données d'entrée. C'est la valeur par défaut. Cette option est utile pour passer aux scripts shell qui utilisent déjà **-i**, pour annuler ses effets car les deux options se remplacent. |
+| | **--label=LABEL** Afficher l'entrée provenant réellement de l'entrée standard comme l'entrée provenant du fichier LABEL. Cela peut être utile pour les commandes qui transforment le contenu d'un fichier avant la recherche, par exemple, gzip -cd foo.gz \|grep --label=foo -H 'some pattern'. Voir aussi le **-H** |
+| | **--perl-regexp** Interpréter les MODÈLES en tant qu'expressions régulières compatibles Perl (PCRE). Cette option est expérimentale lorsqu'elle est combinée avec l'option **-z** (**-- null-data**), et grep **-P** peut avertir des fonctionnalités non implémentées. |
+| | **-T**, **--initial-tab** Assurez-vous que le premier caractère du contenu réel de la ligne se trouve sur un arrêt d'onglet, de sorte que l'alignement des onglets semble normal. C'est utile avec les options qui préfixent leur sortie au contenu réel : **-H**,**-n** et **-b**. Afin d'améliorer la probabilité que les lignes d'un seul fichier commencent toutes à la même colonne, cela entraîne également l'impression du numéro de ligne et du décalage d'octet (le cas échéant) dans une largeur de champ de taille minimale. |
+| | **-u**, **--unix-byte-offsets** Report Unix-style byte offsets. This switch causes grep to report byte offsets as if the file were a Unix-style text file, i.e., with CR characters stripped off. This will produce results identical to running grep on a Unix machine. This option has no effect unless -b option is also used; it has no effect on platforms other than MS-DOS and MS-Windows. Signaler les décalages d'octets de style Unix. Ce commutateur fait que grep signale les décalages d'octets comme si le fichier était un fichier texte de style Unix, c'est-à-dire avec des caractères CR supprimés. Cela produira des résultats identiques à ceux de l'exécution de grep sur une machine Unix. Cette option n'a aucun effet à moins que l'option **-b** ne soit également utilisée ; elle n'a aucun effet sur les plates-formes autres que MS-DOS et MS-Windows. |
+
diff --git a/docs/Linux/grep-options.txt b/docs/Linux/grep-options.txt
new file mode 100644
index 0000000..e4229bb
--- /dev/null
+++ b/docs/Linux/grep-options.txt
@@ -0,0 +1,62 @@
+# grep --options
+
+
+
+| **grep (BSD)** | **grep (GNU)** |
+| ------------------------------------------------------------ | ------------------------------------------------------------ |
+| **-A** num, -**-after-context**=num Print num lines of trailing context after each match. See also the **-B** and **-C** options. | **-A** NUM, **--after-context**=NUM Print NUM lines of trailing context after matching lines. Places a line containing a group separator (--) between contiguous groups of matches. With the **-o** or **--only-matching** option, this has no effect and a warning is given. |
+| **-a**, **--text** Treat all files as ASCII text. | **-a**, **--text** Process a binary file as if it were text; this is equivalent to the **--binary-files**=text option. |
+| **-B** num, **--before-context**=num Print num lines of leading context before each match. See also the **-A** and **-C** options. | **-B** NUM, **--before-context**=NUM Print NUM lines of leading context before matching lines. Places a line containing a group separator (--) between contiguous groups of matches. With the **-o** or **--only-matching** option, this has no effect and a warning is given. |
+| **-b**, **--byte-offset** The offset in bytes of a matched pattern is displayed in front of the respective matched line. | **-b**, **--byte-offset** Print the 0-based byte offset within the input file before each line of output. If **-o** (**--only-matching**) is specified, print the offset of the matching part itself. |
+| **-C**[num, **--context**=num] Print num lines of leading and trailing context surrounding each match. The default is 2 and is equivalent to **-A** 2 **-B** 2. | **-C** NUM, -NUM, **--context**=NUM Print NUM lines of output context. Places a line containing a group separator (--) between contiguous groups of matches. With the **-o** or **--only-matching** option, this has no effect and a warning is given. |
+| **-c**, **--count** Only a count of selected lines is written to standard output. | **-c**, **--count** Suppress normal output; instead print a count of matching lines for each input file. With the **-v**, **--invert-match** option (see below), count non-matching lines. |
+| **--colour**=[when, **--color**=[when]] Mark up the matching text with the expression stored in GREP_COLOR environment variable. The possible values of when can be *'never'*, *'always'* or *'auto'*. | **--color**[=WHEN], **--colour**[=WHEN] Surround the matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences to display them in color on the terminal. The colors are defined by the environment variable GREP_COLORS. The deprecated environment variable GREP_COLOR is still supported, but its setting does not have priority. WHEN is *never*, *always*, or *auto*. |
+| **-D** action, **--devices**=action Specify the demanded action for devices, FIFOs and sockets. The default action is *'read',* which means, that they are read as if they were normal files. If the action is set to *'skip'*, devices will be silently skipped. | **-D** ACTION, **--devices**=ACTION If an input file is a device, FIFO or socket, use ACTION to process it. By default, ACTION is *read*, which means that devices are read just as if they were ordinary files. If ACTION is *skip*, devices are silently skipped. |
+| **-d** action, **--directories**=action Specify the demanded action for directories. It is *'read'* by default, which means that the directories are read in the same manner as normal files. Other possible values are *'skip'* to silently ignore the directories, and *'recurse'* to read them recursively, which has the same effect as the **-R** and **-r** option. | **-d** ACTION, **--directories**=ACTION If an input file is a directory, use ACTION to process it. By default, ACTION is *read*, i.e., read directories just as if they were ordinary files. If ACTION is *skip*, silently skip directories. If ACTION is *recurse*, read all files under each directory, recursively, following symbolic links only if they are on the command line. This is equivalent to the **-r** option. |
+| **-E**, **--extended-regexp** Interpret pattern as an extended regular expression | **-E**, **--extended-regexp** Interpret PATTERNS as extended regular expressions (EREs, see below). |
+| **-e** pattern, **--regexp**=pattern Specify a pattern used during the search of the input: an input line is selected if it matches any of the specified patterns. This option is most useful when multiple **-e** options are used to specify multiple patterns, or when a pattern begins with a dash (`-'). | **-e** PATTERNS, **--regexp**=PATTERNS Use PATTERNS as the patterns. If this option is used multiple times or is combined with the **-f** (**--file**) option, search for all patterns given. This option can be used to protect a pattern beginning with "-". |
+| **--exclude** If specified, it excludes files matching the given filename pattern from the search. Note that **--exclude** patterns take priority over **--include** patterns, and if no **--include** pattern is specified, all files are searched that are not excluded. Patterns are matched to the full path specified, not only to the filename component. | **--exclude**=GLOB Skip any command-line file with a name suffix that matches the pattern GLOB, using wildcard matching; a name suffix is either the whole name, or a trailing part that starts with a non-slash character immediately after a slash (/) in the name. When searching recursively, skip any subfile whose base name matches GLOB; the base name is the part after the last slash. A pattern can use *, ?, and [...] as wildcards, and \ to quote a wildcard or backslash character literally. |
+| | **--exclude-from**=FILE Skip files whose base name matches any of the file-name globs read from FILE (using wildcard matching as described under --exclude). |
+| **--exclude-dir** If -R is specified, it excludes directories matching the given filename pattern from the search. Note that **--exclude-dir** patterns take priority over **--include-dir** patterns, and if no **--include-dir** pattern is specified, all directories are searched that are not excluded. | **--exclude-dir**=GLOB Skip any command-line directory with a name suffix that matches the pattern GLOB. When searching recursively, skip any subdirectory whose base name matches GLOB. Ignore any redundant trailing slashes in GLOB. |
+| **-F**, **--fixed-strings** Interpret pattern as a set of fixed strings | **-F**, **--fixed-strings** Interpret PATTERNS as fixed strings, not regular expressions. |
+| **-f** file, **--file**=file Read one or more newline separated patterns from file. Empty pattern lines match every input line. Newlines are not considered part of a pattern. If file is empty, nothing is matched. | **-f** FILE, **--file**=FILE Obtain patterns from FILE, one per line. If this option is used multiple times or is combined with the **-e** (**--regexp**) option, search for all patterns given. The empty file contains zero patterns, and therefore matches nothing. |
+| **-G**, **--basic-regexp** Interpret pattern as a basic regular expression. | **-G**, **--basic-regexp** Interpret PATTERNS as basic regular expressions (BREs, see below). This is the default. |
+| **-H** Always print filename headers with output lines. | **-H**, **--with-filename** Print the file name for each match. This is the default when there is more than one file to search. |
+| **-h**, **--no-filename** Never print filename headers (i.e. filenames) with output lines. | **-h**, **--no-filename** Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search. |
+| **--help** Print a brief help message. | **--help** Output a usage message and exit. |
+| **-I** Ignore binary files. This option is equivalent to **--binary-file=without-match option**. | **-I** Process a binary file as if it did not contain matching data; this is equivalent to the **--binary-files=without-match option**. |
+| **--include** If specified, only files matching the given filename pattern are searched. Note that **--exclude** patterns take priority over **--include** patterns. Patterns are matched to the full path specified, not only to the filename component. | **--include**=GLOB Search only files whose base name matches GLOB (using wildcard matching as described under **--exclude**). If contradictory **--include** and **--exclude** options are given, the last matching one wins. If no **--include** or **--exclude** options match, a file is included unless the first such option is **--include**. |
+| **--include-dir** If -R is specified, only directories matching the given filename pattern are searched. Note that **--exclude-dir** patterns take priority over **--include-dir** patterns. | |
+| **-J**, **--bz2decompress** Decompress the bzip2(1) compressed file before looking for the text. | |
+| **-L**, **--files-without-match** Only the names of files not containing selected lines are written to standard output. Pathnames are listed once per file searched. If the standard input is searched, the string "(standard input)'' is written. | -L, --files-without-match Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match. |
+| **-l**, **--files-with-matches** Only the names of files containing selected lines are written to standard output. grep will only search a file until a match has been found, making searches potentially less expensive. Pathnames are listed once per file searched. If the standard input is searched, the string "(standard input)'' is written. | -l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match. |
+| **--mmap** Use mmap(2) instead of read(2) to read input, which can result in better performance under some circumstances but can cause undefined behaviour. | |
+| **-m** num, **--max-count**=num Stop reading the file after num matches. | **-m** NUM, **--max-count**=NUM Stop reading a file after NUM matching lines. If the input is standard input from a regular file, and NUM matching lines are output, grep ensures that the standard input is positioned to just after the last matching line before exiting, regardless of the presence of trailing context lines. This enables a calling process to resume a search. When grep stops after NUM matching lines, it outputs any trailing context lines. When the **-c** or **--count** option is also used, grep does not output a count greater than NUM. When the **-v** or **--invert-match** option is also used, grep stops after outputting NUM non-matching lines. |
+| **-n**, **--line-number** Each output line is preceded by its relative line number in the file, starting at line 1. The line number counter is reset for each file processed. This option is ignored if **-c**, **-L**, **-l**, or **-q** is specified. | **-n**, **--line-number** Prefix each line of output with the 1-based line number within its input file. |
+| **--null** Prints a zero-byte after the file name. | **-Z**, **--null** Output a zero byte (the ASCII NUL character) instead of the character that normally follows a file name. For example, grep -lZ outputs a zero byte after each file name instead of the usual newline. This option makes the output unambiguous, even in the presence of file names containing unusual characters like newlines. This option can be used with commands like find -print0, perl -0, sort -z, and xargs -0 to process arbitrary file names, even those that contain newline characters. |
+| **-O** If -R is specified, follow symbolic links only if they were explicitly listed on the command line. The default is not to follow symbolic links. | |
+| **-o**, **--only-matching** Prints only the matching part of the lines. | **-o**, **--only-matching** Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. |
+| **-p** If **-R** is specified, no symbolic links are followed. This is the default. | |
+| **-q**, **--quiet**, **--silent** Quiet mode: suppress normal output. grep will only search a file until a match has been found, making searches potentially less expensive. | **-q**, **--quiet**, **--silent** Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the **-s** or **--no-messages** option. |
+| **-R**, **-r**, **--recursive** Recursively search subdirectories listed. | **-r**, **--recursive** Read all files under each directory, recursively, following symbolic links only if they are on the command line. Note that if no file operand is given, grep searches the working directory. This is equivalent to the **-d** recurse option. |
+| | **-R**, **--dereference-recursive** Read all files under each directory, recursively. Follow all symbolic links, unlike **-r**. |
+| **-S** If **-R** is specified, all symbolic links are followed. The default is not to follow symbolic links. | |
+| **-s**, **--no-messages** Silent mode. Nonexistent and unreadable files are ignored (i.e. their error messages are suppressed). | **-s**, **--no-messages** Suppress error messages about nonexistent or unreadable files. |
+| **-U**, **--binary** Search binary files, but do not attempt to print them. | **-U**, **--binary** Treat the file(s) as binary. By default, under MS-DOS and MS-Windows, grep guesses whether a file is text or binary as described for the **--binary-files** option. If grep decides the file is a text file, it strips the CR characters from the original file contents (to make regular expressions with ^ and $ work correctly). Specifying **-U** overrules this guesswork, causing all files to be read and passed to the matching mechanism verbatim; if the file is a text file with CR/LF pairs at the end of each line, this will cause some regular expressions to fail. This option has no effect on platforms other than MS-DOS and MS-Windows. |
+| **-V**, **--version** Display version information and exit. | **-V**, **--version** Output the version number of grep and exit. |
+| **-v**, **--invert-match** Selected lines are those not matching any of the specified patterns. | **-v**, **--invert-match** Invert the sense of matching, to select non-matching lines. |
+| **-w**, **--word-regexp** The expression is searched for as a word (as if surrounded by `[[:<:]]` and `[[:>:]]`; see re_format(7)). | **-w**, **--word-regexp** Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.This option has no effect if -x is also specified. |
+| **-x**, **--line-regexp** Only input lines selected against an entire fixed string or regular expression are considered to be matching lines. | **-x**, **--line-regexp** Select only those matches that exactly match the whole line. For a regular expression pattern, this is like parenthesizing the pattern and then surrounding it with ^ and $. |
+| **-y** Equivalent to **-i**. Obsoleted. | **-y** Obsolete synonym for **-i.** |
+| **-Z**, **-z**, **--decompress** Force grep to behave as zgrep. | |
+| | **-z**, **--null-data** Treat input and output data as sequences of lines, each terminated by a zero byte (the ASCII NUL character) instead of a newline. Like the **-Z** or --null option, this option can be used with commands like sort **-z** to process arbitrary file names. |
+| **--binary-files**=value Controls searching and printing of binary files. Options are *binary*, the default: search binary files but do not print them; *without-match*: do not search binary files; and *text*: treat all files as text. | **--binary-files**=TYPE If a file's data or metadata indicate that the file contains binary data, assume that the file is of type TYPE. Non-text bytes indicate binary data; these are either output bytes that are improperly encoded for the current locale, or null input bytes when the **-z** option is not given.
By default, TYPE is *binary*, and grep suppresses output after null input binary data is discovered, and suppresses output lines that contain improperly encoded data. When some output is suppressed, grep follows any output with a one-line message saying that a binary file matches.
If TYPE is *without-match*, when grep discovers null input binary data it assumes that the rest of the file does not match; this is equivalent to the -I option.
If TYPE is *text*, grep processes a binary file as if it were text; this is equivalent to the **-a** option.
When type is *binary*, grep may treat non-text bytes as line terminators even without the **-z** option. This means choosing binary versus text can affect whether a pattern matches a file. For example, when type is *binary* the pattern q$ might match q immediately followed by a null byte, even though this is not matched when type is *text*. Conversely, when type is *binary* the pattern . (period) might not match a null byte.