OVH Cloud OVH Cloud

fichiers sous SSH

7 réponses
Avatar
pmanet
je reprends :
j'ai sur le réseau interne de la boite un serveur (sous OSX 10.2.8) que
je pilote en partie depuis mon bureau avec mon Terminal via SSH (cf
autre question)

- mon impression est que sous SSH, je suis sur l'autre machine, et donc
que je n'ai pas accès au repertoires de ma machine (sauf à activer le
partage de fichier). Donc, pas de moyen de tranférer simplement chez moi
un fichier que je lis par cat sur le serveur ? à part, évidemment, un
copié collé dans le terminal, mais pour 25 MO ça fait lourd...

- dans cette veine, j'ai des fichiers de logs que je concatène en un
seul fichier ; j'aimerais du meme geste les effacer, et du coup je lance
un tuyau :

cat ppr* > final.txt | rm ppr*
tcsh: Ambiguous output redirect

il est pas content. Si je comprends bien les pipelines, ça ne fait que
traiter les sorties de la manip précedente mais ça n'enchaine pas des
propositions indépendantes ; comment fait-on dans ce cas là, si on ne
veut pas attendre la fin de la première commande pour taper la 2ème ? ma
solution bancale est de copier les 2 lignes dans textedit et de les
dropper dans le terminal, mais ça fait pas vraiment pro...

7 réponses

Avatar
patpro ~ patrick proniewski
In article <20040810012304972149@[10.0.0.1]>, (manet)
wrote:

je reprends :
j'ai sur le réseau interne de la boite un serveur (sous OSX 10.2.8) que
je pilote en partie depuis mon bureau avec mon Terminal via SSH (cf
autre question)

- mon impression est que sous SSH, je suis sur l'autre machine, et donc
que je n'ai pas accès au repertoires de ma machine (sauf à activer le
partage de fichier). Donc, pas de moyen de tranférer simplement chez moi
un fichier que je lis par cat sur le serveur ? à part, évidemment, un
copié collé dans le terminal, mais pour 25 MO ça fait lourd...


scp, sftp, ftp, ... :

machine1$ scp truc.txt :~/

ou

machine1$ scp :~/truc.txt .


- dans cette veine, j'ai des fichiers de logs que je concatène en un
seul fichier ; j'aimerais du meme geste les effacer, et du coup je lance
un tuyau :

cat ppr* > final.txt | rm ppr*
tcsh: Ambiguous output redirect


le | sert a passer des sorties dans des entrées, il n'a donc rien a
faire là, sauf si tu veux faire une grosse bétise :)

teste avec :

cat ppr* > final.txt && rm ppr*

patpro

--
je cherche un poste d'admin UNIX/Mac
http://patpro.net/cv.php

Avatar
blanc
manet wrote:

- mon impression est que sous SSH, je suis sur l'autre machine, et donc
que je n'ai pas accès au repertoires de ma machine (sauf à activer le
partage de fichier). Donc, pas de moyen de tranférer simplement chez moi
un fichier que je lis par cat sur le serveur ?


Utilise sftp (par exemple). Si tu te connectes toujours sur les mêmes
machines, tu peux, au lieu de taper la ligne de commande, utiliser (sous
le terminal) l'option de menu : Fichier --> Se connecter à un serveur
(ou son raccourci <pomme><maj> K )


cat ppr* > final.txt | rm ppr*
tcsh: Ambiguous output redirect

il est pas content. Si je comprends bien les pipelines, ça ne fait que
traiter les sorties de la manip précedente mais ça n'enchaine pas des
propositions indépendantes ; comment fait-on dans ce cas là, si on ne
veut pas attendre la fin de la première commande pour taper la 2ème ?


Simplement séparer les deux commandes par un point-virgule :

cat ppr*>tric ; rm ppr*

ma solution bancale est de copier les 2 lignes dans textedit et de les
dropper dans le terminal, mais ça fait pas vraiment pro...


Et pourquoi, si c'est une commande que tu utilises souvent, ne pas faire
un script :

#!/bin/sh
cat ppr* > final.txt
rm ppr*

Tu mets ces trois lignes dans un fichier que tu appelles comme tu veux,
par exemple "regroupe"
Tu mets le droit d'exécution sur ce fichier :

chmod u+x regroupe

et tu as une nouvelle commande "regroupe" qui fait ce que tu souhaites.

JPaul.
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

Avatar
J.P. Kuypers
In article (Dans l'article) <1giapxe.12k7lbe12a44y8N%,
JPaul wrote (écrivait) :

Et pourquoi, si c'est une commande que tu utilises souvent, ne pas faire
un script :


Avec csh notamment, on peut aussi se faire un "alias".
En ayant par exemple dans le fichier .cshrc, une ligne du genre :

alias cd cd !*;set a1=$cwd:h;set a2=$a1:t;set
prompt=`hostname`' '$LOGNAME:$a2/$cwd:t' % '

on transforme la commande "cd".

--
Jean-Pierre Kuypers

Veuillez émailler les phrases dans leur con-
texte avant de câbler sciemment.

Le présent article étant d'affliction pure, toute ressemblance avec une
opinion exprimée ne pourra être attribuée qu'au hasard et, en aucun cas,
être considérée comme celle de mon employeur.

Avatar
pmanet
J.P. Kuypers wrote:

Et pourquoi, si c'est une commande que tu utilises souvent, ne pas faire
un script :


Avec csh notamment, on peut aussi se faire un "alias".


oui, tout ça est dans la leçon suivante de mon bouquin UNIX... j'ai
survolé, mais vous avez raison, il va bien falloir que je m'y mette !


Avatar
NObertrand.lupartSPAM
comment fait-on dans ce cas là, si on ne
veut pas attendre la fin de la première commande pour taper la 2ème ?


Simplement séparer les deux commandes par un point-virgule :

cat ppr*>tric ; rm ppr*


Dans ce cas, préférer la commande donnée par patpro:
cat ppr*>tric && rm ppr*
car dans ce cas, la commande "rm" ne sera lancée que si la commande
"cat" a réussi.

En effet, si le fichier "tric" ne peut pas être créé (problème de
droits, manque de place...), on ne voudra pas effacer les données
originales.

--
Bertrand


Avatar
pmanet
Bertrand LUPART wrote:

Dans ce cas, préférer la commande donnée par patpro:
cat ppr*>tric && rm ppr*
car dans ce cas, la commande "rm" ne sera lancée que si la commande
"cat" a réussi.



oups ! tu as raison !

Avatar
blanc
Bertrand LUPART wrote:

Dans ce cas, préférer la commande donnée par patpro:
cat ppr*>tric && rm ppr*
car dans ce cas, la commande "rm" ne sera lancée que si la commande
"cat" a réussi.


Exact !
JPaul.
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE