Je reçois de l'utilisateur un certain chemin de fichier absolu et je souhaite créer une variable qui sera une chaîne qui n'inclura pas uniquement le FIRST deux composants du chemin du fichier, mais sans l'imprimer ou quoi que ce soit.
Par exemple, le chemin absolu pourrait être :
/home/myusername/folder1/folder2/folder3
Et il est enregistré dans "target_path", et je veux que "mydir" soit uniquement :
/folder1/folder2/folder3
J'ai essayé d'utiliser la commande couper de différentes manières mais sans succès.
Réponse acceptée :
Utilisation de la manipulation de chaîne de bash :
$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3
Ainsi, la chaîne que vous voulez serait (en rajoutant la barre oblique) :
b="/${a#/*/*/}"
Pour une variable a
, ${a#foo}
supprimera la chaîne la plus courte correspondant à foo
depuis le début de a
. Ainsi, nous supprimons la chaîne la plus courte contenant trois /
(y compris la barre oblique du début du chemin), pour supprimer les deux premiers composants du chemin absolu.