3
rm -f /obi/u01/informatica/v711/pmserver/SrcFiles/coe/aone/AccessOne_Daily_Input.xml

Каково его использование в Unix и его возможная реализация в DOS?

4 ответа4

18

Он просто принудительно удаляет файл, даже если он доступен только для чтения.

del /f filename

это грубый эквивалент в командных оболочках Windows.

1

rm -f <filename> удаляет <filename> если оно существует, даже если оно доступно только для чтения текущему пользователю. Если <filename> не существует, rm -f <filename> молча возвращает успех. Если попытка удалить <filename> приводит к ошибке прав доступа или <filename> является каталогом, rm завершит работу с сообщением об ошибке. См. POSIX.1-2008 Shell & Utilities: rm.

Это полезно в разовых ситуациях, когда вы хотите убедиться, что определенный файл не существует. rm -f молча преуспеет, если файл не существует; он даже попытается удалить файл только для чтения, если он уже существует. Это избавляет вас от необходимости проверять, существует ли файл первым или активировать бит разрешения записи для файла. Это делает его очень полезным в обычной clean цели Makefile, потому что вы хотите, чтобы все созданные файлы были удалены без необходимости помещать условный код оболочки вокруг каждого отдельного вызова rm .

DEL есть флаг /F который заставляет DEL идти дальше и удалять файлы, для которых у вас нет разрешения на запись. Однако он все равно будет жаловаться, если вы попытаетесь удалить несуществующий файл (в отличие от rm -f):

C:\Users\binki>DEL /F nonexistent
Could Not Find C:\Users\binki\nonexistent

C:\Users\binki>rm -f nonexistent

C:\Users\binki>

Возможно, есть лучший способ, но я думаю, что поведение rm -f может быть воспроизведено только с помощью IF EXIST. Таким образом, я предлагаю IF EXIST <filename> DEL /F <filename> как ближайший доступный синтаксис cmd для репликации поведения rm -f <filename>:

C:\Users\binki>IF EXIST nonexistent DEL /F nonexistent

C:\Users\binki>touch existent& chmod u-w existent

C:\Users\binki>DEL existent
C:\Users\binki\existent
Access is denied.

C:\Users\binki>IF EXIST existent DEL /F existent

C:\Users\binki>ls -l existent
ls: existent: No such file or directory

C:\Users\binki>
0

rm -f принудительно удаляет файл. Если вам нужно удалить все в определенной папке, включая папки с папками, вам нужно выполнить rm -rf в unix.

0

Если вы чувствуете себя комфортно с командами UNIX, вы можете использовать симулятор командной оболочки UNIX в Windows, тот, который я использую, называется CYGWIN:

http://www.cygwin.com/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .