Ll: not found

Résolu
Bonjour,

J'essaie d'executer une commande dans un script .sh et j'ai une erreur :
ll : not found
cp: fichier cible manquant

la commande en question : (qui fonctionne sous unix)
cp 'll | grep 'NE5200IZ*' | sort -r | head -1 | cut -d ' ' -f 12' ../../Interface/AFI/fichierAFI/10072013

Je ne comprend pas pourquoi cette commande ne fonctionne pas dans mon script alors qu'elle fonctionne sous unix ....

Pouvez-vous m'aider ?

2 réponses

  1. Salut,
    ll est un alias courant pour ls -l, et cet alias n'est pas défini pour le système/l'utilisateur avec lequel tu lances la commande.
    Par ailleurs, il est conseiller d'utiliser la syntaxe $(...) pour récupérer le résultat d'une commande, plutôt que les guillemets simples inversés (question de lisibilité avant tout).
    Ta commande peut donc être réécrite
    cp $(ls -l | grep 'NE5200IZ*' | sort -r | head -1 | cut -d ' ' -f 12) ../../Interface/AFI/fichierAFI/10072013

    Bonne continuation.
    1. Merci cela fonctionne, par contre j'ai un autre soucis.

      avec cette commande : ls -l | grep 'NE5300IZ*' | sort -r
      j'essai de trier par date inversé et cela ne semble pas fonctionner.
      En faite il a l'air de faire deux tri :
      - un sur les dates avec les jours sur un caractère
      - et un sur les dates avec les jours sur deux caractères. étrange ...

      -rw-rw-r-- 1 hrdev hr 2397410 jui 9 10:46 NE5300IZ.2755
      -rw-rw-r-- 1 hrdev hr 2397410 jui 9 08:36 NE5300IZ.30722
      -rw-rw-r-- 1 hrdev hr 2397410 jui 8 16:17 NE5300IZ.3236
      -rw-rw-r-- 1 hrdev hr 2397410 jui 8 16:17 NE5300IZ.2990
      -rw-rw-r-- 1 hrdev hr 2397410 jui 8 15:47 NE5300IZ.1997
      -rw-rw-r-- 1 hrdev hr 2397410 jui 10 16:47 NE5300IZ.22611
      -rw-rw-r-- 1 hrdev hr 2397142 jun 12 15:30 NE5300IZ.32735

      Avez-vous une explication ?
      1. Contributeur
        Salut,

        Parce qu'il faut donner à "sort" le champ à trier (par défaut c'est le 1er qu'il trouve)...

        Sinon la commande "ls" a aussi une option pour trier selon la date...
      2. dans ce cas là comment faire pour chercher le fichier le plus récent contenant le nom "NE5200IE*" et ne récupérer que le plus récent ?
        dans ce cas présent je doit normalement récupérer le fichier NE5300IZ.22611 car c'est le plus récent parmis la liste.
      3. Pourquoi pas un

        ls -lt NE5300IZ*
        ou

        ls -ltr NE5300IZ*
        ?

        avec head ou tail ?
      4. c'est sur quoi je suis parti : ls -t | grep 'NE5950IX*' | tail -1
        et sa à l'air de fonctioner ^^
      5. C'est vrai que le -l (L) on s'en fiche ... Ca simplifie un peu la ligne initiale :p