Skopiować istniejące pliki bez potwierdzenia?

18

Muszę skopiować i nadpisać dużą liczbę plików, użyłem następującego polecenia:

# cp -Rf * ../

Ale wtedy, gdy plik o tej samej nazwie istnieje w folderze docelowym, pojawia się pytanie:

cp: overwrite `../ibdata1'? 

Problem polega na tym, że mam około 200 plików, które zostaną nadpisane i nie sądzę, że naciśnięcie Y then Enter200 razy jest właściwym sposobem na zrobienie tego.

Więc jaka jest właściwa droga do tego?

Itai Ganot
źródło

Odpowiedzi:

38

Możesz to zrobić yes | cp -rf myxx, lub jeśli robisz to jako root - twój .bashrc lub .profile ma alias cp na cp -i, większość współczesnych systemów robi to, aby rootować profile.

Możesz tymczasowo ominąć alias i użyć niealiasowej wersji polecenia, poprzedzając go \, np. \ Cp cokolwiek

TBI Infotech
źródło
4
+1 za wskazanie, jak ominąć alias. Kuszony do -1 dla brutalnej siły rozwiązania.
Hennes,
5
+! do yesfunkcji rurowej - bardzo przydatna!
Andrew Newby
14

Czy zdajesz sobie sprawę, że RHEL i CentOS próbowały chronić początkujących użytkowników, ustawiając aliasy dla użytkownika root, aby zapobiec przypadkowemu nadpisaniu i usunięciu plików?

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

The -iPrzełącznik jest co wymaga potwierdzenia podczas modyfikowania lub usuwania istniejących plików. Ponieważ rozszerzenie aliasu ma miejsce przed wykonaniem polecenia, nawet użycie --force -f przełącznika nadal będzie wymagało potwierdzenia.

Możesz usunąć alias na stałe, edytując /root/.bashrcplik, usunąć alias na czas trwania sesji za pomocą unalias cp lub dla pojedynczego polecenia użyj jednego z:

  • użyj pełnej ścieżki /bin/cp
  • użyj cudzysłowów "cp"lub 'cp'wokół polecenia
  • użyj słowa kluczowego polecenia np command cp
  • uciec od polecenia \cp
HBruijn
źródło