Szukam rozwiązania, które będzie używane jako odpowiedź na „rm: usunąć zwykły plik chroniony przed zapisem [x]?”
Kilkakrotnie myślałem o wydaniu postaci, a następnie powrotu karetki, w języku bashrc. Jak to zrobimy?
Szukam rozwiązania, które będzie używane jako odpowiedź na „rm: usunąć zwykły plik chroniony przed zapisem [x]?”
Kilkakrotnie myślałem o wydaniu postaci, a następnie powrotu karetki, w języku bashrc. Jak to zrobimy?
Odpowiedzi:
Edytuj na podstawie zaktualizowanego pytania:
Aby uniknąć pytania o usunięcie plików, dodaj -fopcję („force”):
rm -f /path/to/file
Ma to jeden efekt uboczny, o którym powinieneś wiedzieć: Jeśli którakolwiek z podanych ścieżek nie istnieje, nie zgłosi tego i powróci pomyślnie:
$ rm -f /nonexistent/path
$ echo $?
0
Oryginalna odpowiedź:
Oto jedno proste rozwiązanie:
yes "$string" | head -n $number | tr $'\n' $'\r'
yespowtarza nieskończony ciąg znaków, rozdzielając go znakami nowej linii. headzatrzymuje go po $numberraz trkolejny i tłumaczy znaki nowej linii na zwroty karetki. Możesz nie zobaczyć żadnego wyniku z powodu powrotu karetki, ale przekazanie go do tego polecenia (in bash) powinno to zilustrować:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Użytkownicy bez bashrura może wynik do od, hexdumplub xxdaby zobaczyć rzeczywiste postacie zwrócone.
Innym problemem, na który natrafiam od czasu do czasu, rmjest alias rm -i, coś takiego w / etc / bashrc:
alias rm='rm -i'
W takim przypadku możesz albo unalias rmskorzystać z tej sztuczki, którą znalazłem przed laty, wstawić odwrotny ukośnik przed poleceniem, które zostało aliowane, aby zignorować alias tylko jeden raz, na przykład:
\rm somefile
Więcej informacji na temat aliasów można znaleźć w artykule w Nixcraft .
rmjest na stałe proszony „interaktywnie” (monit o oczekiwanie na dane wejściowe użytkownika) o zapisywanie chronionych plików. istnieją dwie metody, aby zapobiec rmpytaniu:
rm -rf somedir
i
rm -r --interactive=never somedir
(oba działają również bez -rusuwania plików zamiast katalogów)
wyjaśnienie:
-fsprawia, rmże „ignoruj nieistniejące pliki i argumenty, nigdy nie pytaj”.
--interactive=neverrobi to, co mówi: nigdy nie bądź interaktywny. innymi słowy: nigdy nie pytaj.
różnica między -fi --interactive=neverjest tą częścią: „zignoruj nieistniejące pliki i argumenty”.
porównać:
$ rm -rf nonexistingname
$ echo $?
0
i
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
różnica jest szczególnie interesująca podczas pisania skryptów, w których nigdy nie chcesz rmbyć interaktywny, ale nadal chcesz obsługiwać błędy.
Podsumowanie: w użyciu w wierszu poleceń rm -rf. w użyciu skryptów rm -r --interactive=never.
odpowiedź na zadane pytanie („Jak uniknąć konieczności wielokrotnego wydawania„ y ”podczas usuwania chronionego pliku”) patrz https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860 # 338860
Ja też wpadłem na ten sam problem. Powyższa odpowiedź dotyczy tylko jednego pliku, ale jeśli chcesz zignorować wiele „tak”.
Możesz użyć
sudo rm -r /path/to/directory
aby usunąć wszystkie zwykłe pliki chronione przed zapisem