Używając skryptu powłoki lub terminala, w jaki sposób nadpisywać pliki, które mogą być obecne lub nie. Spojrzałem na stronę podręcznika w poszukiwaniu cp, powiedziało, że użyj argumentu -f, aby wymusić nadpisanie. Ale to nic nie robi.
$ cp -f /path/to/source/file.txt /path/to/target
Czy jest też inna opcja nadpisywania plików przy użyciu typowych wbudowanych narzędzi wiersza poleceń w OS X?
terminal
command-line
script
rogerFernand
źródło
źródło
sudo
na początku polecenia. Ale używaj ostrożnie!mv
je lub jarm
.sudo
mogę użyćmv
lubrm
przenieść lub usunąć pliki przed użyciemcp
. Korzystaniesudo cp
nie ma znaczenia.Odpowiedzi:
Jestem zaskoczony, dlaczego cp zachowuje się w ten sposób, jeśli nie ma w tym żadnego aliasu. Jednakże, istnieje narzędzie szybkiego brudnej i niebezpieczny przewidziano taką sytuację:
yes
. Możesz go użyć do potoku ciągłego strumienia potwierdzeń do dowolnego polecenia, które wyświetla monity o potwierdzenie (możesz użyć go do wysłania dowolnego tekstu, ale domyślnie jest to „y”).yes | cp foo bar
wykona polecenie cp i pominie wszystkie monity o potwierdzenie.źródło
Może to być spowodowane przez alias polecenia.
Aby zadzwonić
cp
bezpośrednio, możesz użyć/bin/cp src dest
źródło
alias cp
). Mogą zmienić alias w swoim profilu lub użyć / bin / cp zgodnie z sugestią.cp
tak, jak pod warunkiem Apple.roger$ alias cp -bash: alias: cp: not found
type cp
. I rzeczywiście tak było.Najpierw usuwasz (
rm
) miejsce docelowe, a następnie, jeśli się powiedzie (&&
), kopiujesz. Podczas usuwania folderu pamiętaj o dodaniu-r
dorm
(rm -r
).źródło
Miałem też bałagan z -f, dzwonię do cp bezpośrednio z / bin i wszystko jest w porządku, alias, który domyślnie zapobiega przypadkowym nadpisywaniom / usunięciom, jest całkiem dobry, więc najlepiej go nie usuwać.
jak już wspomniano, flaga -i zastępuje -f, co nie pozwoliłoby, aby poniższe polecenie działało zgodnie z przeznaczeniem.
źródło