Próbuję użyć cppolecenia i wymusić zastąpienie.
Próbowałem cp -rf /foo/* /bar, ale wciąż pojawia się monit o potwierdzenie każdego zastąpienia.
Próbuję użyć cppolecenia i wymusić zastąpienie.
Próbowałem cp -rf /foo/* /bar, ale wciąż pojawia się monit o potwierdzenie każdego zastąpienia.
Odpowiedzi:
Możesz to zrobić yes | cp -rf xxx yyy, ale moje przeczucie mówi, że jeśli robisz to jako root - twój .bashrclub .profilema alias cpto cp -i, większość nowoczesnych systemów (głównie pochodne RH) robi to, aby rootować profile.
Możesz sprawdzić istniejące aliasy, uruchamiając je aliasz wiersza polecenia, lub which cpaby sprawdzić tylko dla aliasów cp.
Jeśli masz zdefiniowany alias, bieganie unalias cpzniesie go dla bieżącej sesji, w przeciwnym razie możesz po prostu usunąć go z profilu powłoki.
Możesz tymczasowo ominąć alias i użyć niealiasowej wersji polecenia, poprzedzając go \np.\cp whatever
¯\_(ツ)_/¯o tym.
(primarily RH-derivatives)uwagę :)
unalias cpi skopiowaniu wszystkiego, co chcesz skopiować, możesz przywrócić domyślny alias, robiąc to alias cp='cp -i'. Następnie uruchom, alias cpaby sprawdzić, czy wrócił do domyślnego aliasu.
Jest to prawdopodobnie spowodowane tym, cpże jest już aliasowany do czegoś podobnego cp -i. cpBezpośrednie dzwonienie powinno działać:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Innym sposobem obejścia tego jest użycie yespolecenia:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yespolecenie. Wesoły. I pewnego dnia mogę go użyć.
Jak niektórzy z pozostałych odpowiedzi stwierdziły, prawdopodobnie gdzieś użyć aliasu, który mapuje cpdo cp -ilub coś podobnego. Możesz uruchomić polecenie bez żadnych aliasów, poprzedzając je odwrotnym ukośnikiem. W twoim przypadku spróbuj
\cp -r /zzz/zzz/* /xxx/xxx
Odwrotny ukośnik tymczasowo wyłączy wszystkie aliasy, które wywołałeś cp.
cp, \cpwywoła polecenie cp. Wydaje się, że jest to odpowiednik działania command cp.
Prawdopodobnie masz gdzieś alias, odwzorowujący cpna cp -i; ponieważ przy ustawieniach domyślnych cpnie poprosi o zastąpienie. Sprawdź .bashrcswoje .profileitp.
Zobacz cp manpage : Tylko wtedy, gdy -iparametr jest określony, cpfaktycznie zostanie wyświetlony monit przed nadpisaniem.
Możesz to sprawdzić za pomocą aliaspolecenia:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Aby zdefiniować alias, użyj:
$ unalias cp
Jak podają inne odpowiedzi, może się to zdarzyć, jeśli cpjest to pseudonim cp -i.
Możesz dołączyć \przed cppoleceniem, aby użyć go bez aliasu.
\cp -fR source target
Domyślnie cpma alias do cp -i. Możesz to sprawdzić, wpisać aliasi możesz zobaczyć niektóre z nich:
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
Aby rozwiązać ten problem, po prostu użyj /bin/cp /from /topoleceniacp /from /to
cp jest zwykle aliasowany w ten sposób
alias cp='cp -i' # i.e. ask questions of overwriting
jeśli jesteś pewien, że chcesz wykonać nadpisanie, użyj tego:
/bin/cp <arguments here> src dest
znalazłem to
'cp' -rf * /data/danalonso_testing/target/
Źródło: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
Więc często się w to wpakowałem, ponieważ wciąż mam alias do cp cp -ivi znalazłem fajną sztuczkę. Okazuje się, że chociaż -ii -noba anulują poprzednie dyrektywy zastępujące, -fto nie. Jednak jeśli -nfgo użyjesz , dodasz możliwość wyczyszczenia -i. Więc:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Całkiem nieźle, prawda? / necropost
cp -u ...
cp --update ...
działa również.
Innym sposobem na wywołanie polecenia bez aliasu jest użycie commandwbudowanego w bash.
command cp -rf /zzz/zzz/*
-n jest „nie do zastąpienia”, ale jego pytanie jest całkowicie przeciwne do tego, na co odpowiedziałeś.
Aby uniknąć tego potwierdzenia, wystarczy uruchomić polecenie cp z bezwzględną ścieżką, uniknie to aliasu.
Miejsce docelowe pliku źródłowego / bin / cp
Jeśli chcesz zachować alias na poziomie globalnym i po prostu chcesz zmienić skrypt.
Po prostu użyj:
alias cp = cp
a następnie napisz komendy uzupełniające.
Po prostu użyłem unalias do usunięcia aliasu „cp -i”, a następnie wykonałem kopię, a następnie cofnąłem alias. :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
Nie jest to najpiękniejszy kod, ale łatwy do ustawienia i wydajny. Sprawdzam też, że alias jest już ustawiony za pomocą prostego
alias |grep cp
Nie jest cp -i. Jeśli nie chcesz być proszony o potwierdzenie, jest to cp -n; na przykład:
cp -n src dest
Lub w przypadku katalogów / folderów jest:
cp -nr src_dir dest_dir
cp -i, co oznacza, że próbowali przezwyciężyć domyślne ustawienie i wymusić nadpisanie. To brzmi jak można mylić, że za to, że zasugerował składnia, ale -nbędzie zapobiegać zastępującego.