Nowe posty

Autor Wątek: blad - cp: cannot stat: No such file or directory - w skrypcie  (Przeczytany 3104 razy)

loand

  • Gość
hey,

mecze sie z tym skryptem i zakazdym razem jak usiade to wychodzi mi calkiem inny kod, wiec mam nadzieje ze tym razem z wasza pomoca skrypt bedzie dzialal.

skrypt ma skopiowac wszystkie pliki z folderu do innego folderu oraz wyswietlic skopiowane pliki jeden po jednym , zeby bylo troche trudniej zamiast cp * /nowy/folder chce uzyc licznika i shift . . . . .
pomocy :)

#!/bin/bash
dir=/home/andre/Documents/Scripts/Copy5
files=$(pwd | ls -m )
counter=0 #counter set to number of files counted with wc -c
numberfiles=$(ls -m | wc -w )

echo " files in these folder are $files "
if [  -d $dir ]; then
   mkdir $dir
else
   echo " $dir exists so now will copy files "
fi
read kyb

while [ "$counter" -lt "$numberfiles" ]
do
   cp -r $files /home/andre/Documents/Scripts/Copy5
   echo ${files} ${dir}
   let counter=counter+1
   #until [ $counter=$numberfiles ] do
   #shift 1
   read kyb
done
#cp $files $dir/$files
#echo " $files has been copied "

  • Gość
blad - cp: cannot stat: No such file or directory - w skrypcie
« Odpowiedź #1 dnia: 2011-12-02, 17:52:21 »
Widzę że przełącznik -r znasz. Przełącznik -v spowoduje, że cp będzie na bieżąco informował, co właśnie robi. Czy jest jakiś powód, ze względu na który nie użyjesz tego przełącznika?

arctgx

  • Gość
blad - cp: cannot stat: No such file or directory - w skrypcie
« Odpowiedź #2 dnia: 2011-12-03, 01:58:00 »
Rozumiem, że to raczej dla nauki niż dla praktycznego używania.

Dlaczego ls -m? Jeśli koniecznie chcesz używać przecinka jako separatora, zainteresuj się zmienną IFS w manualu basha, gromadzeniem wyników poleceń w zmiennej tablicowej i rolą cudzysłowu przy odczycie wartości tej zmiennej (man -LC -P 'less -p ^\\ +Arrays' bash).

Zobacz też przykład:
mkdir x || exit 1 # jeśli istnieje, wyjdź - to na wypadek, by niczego w nim nie nadpisać
cd x
:>a  #tworzę pusty plik o nazwie "a"
:>b
ls -l a b
ls -l "a b"
:>"a b"
ls -l "a b"
cp może zwracać błąd albo dlatego, że pliki zawierają spacje, bez cudzysłowu traktowane specjalnie przez basha, albo doklejone przecinki, domyślnie nie traktowane jako separatory, są brane jako część nazwy pliku.