logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 02-04-2022 19:19:56

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

Alias : lire divers fichiers sans se déplacer dans le dossier

Bonjour.

Voilà, j'ai un dossier de fichier .txt dont j'aimerais lire l'un deux grâce à une alias simple sans pour autant me déplacer dans ce dossier et donc rester là ou je suis.
ici, dans l'exemple: mon dossier de fichier est /chemin/dossierA. Et le fichier à lire est /chemin/dossierA/fichier1.txt
Ma première idée fut de rajouter au fichier ~/.shell_aliases:

alias lire='cat /chemin/dossierA/'


en pensant que la commande lirefichier1.txt
- Biensur, ça ne fonctionne pas : "lirefichier1.txt" n'est pas une commande connue.

J'ai deux solutions:
1)
Créer une alias qui avec cd se place dans le répertoire dossierA, puis lit avec cat (par exemple) le fichier1. Et pour finir exécute un cd - pour revenir à mon emplacement d'ou j'ai lancé mon alias.
> ça marche possiblement avec cat mais possiblement pas avec less et autres "pager". Secondo, faudrait que j'arrive à introduire une variable au centre de l'alias en question: ce que je ne sais faire.
2)
C'est plus une alternative qu'une réponse à ma question ...

alias lire='cd /chemin/dossierA && echo " \033[32m- Déplacement sur le répertoire dossierA. Pour revenir:\033[0m \033[33mcd -\033[0m" && sleep 1 && cat'


avec une mise en couleur pour que cela saute aux yeux.
ainsi, je lancerais la commande: lire fichier1.txt

... peut-être utiliser un script. Personnellement, je préfére pas plus que cela.

auriez vous des solutions ?
Merci !!..

Hors ligne

#2 02-04-2022 19:23:30

raleur
Membre
Inscription : 03-10-2014

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

cat /chemin/dossierA/fichier1.txt


c'est trop dur à taper ?


Il vaut mieux montrer que raconter.

Hors ligne

#3 02-04-2022 21:02:19

tof70
Membre
Distrib. : Debian 10 - Buster
Noyau : Linux 4.19.0-20-amd64
(G)UI : i3 + Gnome comme base
Inscription : 28-08-2016

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Salut,

raleur, oui moi aussi je trouve ça un peu limite, mais dans le principe, il y a une demande répondons.

Dis moi si je me trompe, mais faire:

alias lire='cat /chemin/dossierA/'



revient à faire un alias qui demande à cat d'afficher/lire un dossier, pas le fichier en question, le chemin est absolu de plus.

Hors ligne

#4 02-04-2022 21:22:39

raleur
Membre
Inscription : 03-10-2014

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Je ne vois pas comment faire ça avec un alias. Eventuellement avec une fonction, par exemple :

lire () { cat "/chemin/dossierA/$1"; }

Dernière modification par raleur (02-04-2022 21:24:05)


Il vaut mieux montrer que raconter.

Hors ligne

#5 02-04-2022 22:32:55

Cram28
Adhérent(e)
Lieu : Eure-et-Loir
Distrib. : Debian GNU/Linux 12 (bookworm)
Noyau : Debian GNU/Linux 12 (bookworm)
(G)UI : Xfce 4.18
Inscription : 14-09-2020

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Bonsoir,

Et ça:

alias lire='sh -c '\''cat /chemin/dossierA/$1'\'' _'



Çà peut l'faire ?


Travaille du chapeau: "Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas certain que vous réalisiez que ce que vous avez entendu n'est pas exactement ce que je voulais dire..."

Hors ligne

#6 02-04-2022 22:35:02

tof70
Membre
Distrib. : Debian 10 - Buster
Noyau : Linux 4.19.0-20-amd64
(G)UI : i3 + Gnome comme base
Inscription : 28-08-2016

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Effectivement un truc comme:


alias lire='cat /chemin/dossierA/fichier'



ne fonctionne pas, si je lance un éditeur du genre vim, nano etc, ça ne fonctionne pas non plus.

raleur, la question est pourquoi, ça te parait évident visiblement, essaye d'être didactique.

Hors ligne

#7 02-04-2022 22:51:32

raleur
Membre
Inscription : 03-10-2014

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Ça marche uniquement pour le fichier dont le chemin complet est inclus dans l'alias. Mais je ne vois pas comment faire en sorte que le chemin inclus dans l'alias soit accolé à un nom de fichier passé en argument.

Il vaut mieux montrer que raconter.

Hors ligne

#8 02-04-2022 23:24:10

Cram28
Adhérent(e)
Lieu : Eure-et-Loir
Distrib. : Debian GNU/Linux 12 (bookworm)
Noyau : Debian GNU/Linux 12 (bookworm)
(G)UI : Xfce 4.18
Inscription : 14-09-2020

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Je tente de m'y coller... roll

Dans le MAN de BASH, il existe une rubrique "ALIASE" qui précise:

Il n'existe pas de mécanisme permettant d'utiliser des arguments dans le texte de remplacement. S'ils sont nécessaires, une  fonction  de  l'interpréteur  devrait  être  utilisée (consultez FONCTIONS ci-dessous).


Les aliases marchent en clé=valeur.

L'alias proposé au-dessus «triche» en lançant un shell en fait, qui lui accepte des arguments.

alias lire='sh -c '\''cat /chemin/dossierA/$1'\'' _'


Il est un peu complexe par l'option '-c' qui nécessite de protéger les côtes des commandes (\'') et qui oblige à indiquer que la commande est terminée (le '_' final un peu saugrenu dit qu'il n'y a plus d'argument).
Cf. man toujours,

-c        Si l'option -c est présente, les commandes sont lues depuis le premier argument chaîne_de_commande qui n’est pas une option. Si des arguments suivent la  chaîne_de_com‐ mande,
            le premier argument est assigné à $0 et tous les autres sont affectés aux paramètres positionnels. Le nom de l'interpréteur, utilisé pour les messages d'avertissement et d'erreur, est fixé par
            l'assignation à $0.



Donc le plus simple reste la fonction dans ~/.bashrc:

function lire() {
    cat /home/cram/work/"$1"
}
 



Puis

source .bashrc

pour prise en compte et utilisation avec:

lire fichier1.txt



Selon ma compréhension... qui reste à valider tongue

@+


Travaille du chapeau: "Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas certain que vous réalisiez que ce que vous avez entendu n'est pas exactement ce que je voulais dire..."

Hors ligne

#9 04-04-2022 20:01:51

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Hello,

En effet, un alias ne peut pas prendre d'arguments de "remplacement".
Pour faire cela, il faut passer par une fonction, cette fonction peut être définie dans ~/.bashrc, ~/.bash_aliases ou dans un fichier autre qui sera sourcé selon le besoin.
C'est ce que tu veux faire exactement qui définit le choix.

Dans ton cas, je ne me prendrais pas la tête et je déclarerais cette fonction dans ~/.bash_aliases.
Ainsi définie, cette fonction n'est accessible que dans un terminal interactif.

Dernière modification par Tawal (04-04-2022 20:02:27)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#10 05-04-2022 10:52:50

saitama-san
Membre
Inscription : 28-07-2019

Re : Alias : lire divers fichiers sans se déplacer dans le dossier

Hors ligne

Pied de page des forums