еквівалент rm і mv у Windows .cmd


92

У мене є наступне у скрипті оболонки, я хочу перетворити наступні рядки у файл cmd Windows. Чи може хто-небудь надати дані про те, що еквівалентно для "rm" та "mv" у файлі cmd windows.

rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch*
mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/

9
delі move.
Blorgbeard вийшов

Відповіді:


140

moveу Windows є еквівалентом mvкоманди в Linux

delу Windows є еквівалентом rmкоманди в Linux


23
Це надто спрощення. Поведінка та можливості зовсім різні.
javadba

Для майже ідеального збігу поведінки та можливостей скористайтеся пропозицією @Dave використовувати порти Win32 інструментів Linux. Мені також подобається запропонований GnuWin32, хоча зазвичай я просто додаю binкаталоги з Cygwin або Git bash / git для Windows до своєї Windows PATH. Якщо ви хочете використовувати чистий CMD , ви можете наблизити поведінку та можливості, скориставшись порадами, якими я поділився у своїй відповіді нижче.
bballdave025

34

moveі delЄ, безумовно, еквівалентами, але з точки зору функціональності вони надзвичайно НЕ еквівалентні. Наприклад, ви не можете переміщати обидва файли І папки (у випадку підстановки) за допомогою moveкоманди. І те саме стосується і del.

На мою думку, найкращим рішенням є використання портів Win32 з інструментами Linux, найкраща колекція яких я знайшов тут .

mvі rmє в пакеті CoreUtils, і вони чудово працюють!


14

Якщо ви хочете побачити більш детальне обговорення відмінностей для команд, див. Детально про відмінності Розділ нижче.

На веб-сайті LeMoDa.net 1архіві ), зокрема на сторінці еквівалентів командного рядка Windows та Unixархіві ), я знайшов наступні 2 . У наступному редагуванні є краща / більш повна таблиця.

Windows command     Unix command
rmdir               rmdir
rmdir /s            rm -r
move                mv

Мені цікаво почути від @Dave та @javadba, щоб почути, наскільки еквівалентні команди - як " поведінка та можливості " порівнюються, чи то цілком подібні, чи " жахливо НЕ еквівалентні ".

Все, що я дізнався, - це те, що коли я використовував його, щоб спробувати рекурсивно видалити каталог та складові файли та підкаталоги, наприклад

(Windows cmd)>rmdir /s C:\my\dirwithsubdirs\

дав мені стандартне повідомлення про Windows-знає-краще-ніж-ти-ти-ти-впевнений

dirwithsubdirs, Are you sure (Y/N)?

і що коли я вводив текст Y, результатом було те, що мій верхній каталог та складові файли та підкаталоги зникли.


Редагувати

Я озираюся на це, знайшовши цю відповідь . Я повторив кожну з команд і трохи змінив таблицю.

Windows command     Unix command
rmdir               rmdir
rmdir /s /q         rm -r
rmdir /s /q         rm -rf
rmdir /s            rm -ri
move                mv
del <file>          rm <file>

Якщо ви хочете еквівалент для

rm -rf

ви можете використовувати

rmdir /s /q

або, як описав автор відповіді, яку я знайшов,

Але існує ще один спосіб "старої школи", який використовувався ще в той час, коли команди не мали опцій для придушення повідомлень про підтвердження. Просто ECHOпотрібну відповідь та вкажіть значення в команду.

echo y | rmdir /s


Детально про відмінності

Я тестував кожну з команд за допомогою Windows CMD та Cygwin (разом із ними bash).

Перед кожним тестом я робив наступне налаштування.

Windows CMD

>mkdir this_directory
>echo some text stuff > this_directory/some.txt
>mkdir this_empty_directory

Cygwin bash

$ mkdir this_directory
$ echo "some text stuff" > this_directory/some.txt
$ mkdir this_empty_directory

Це призвело до наступної структури файлів для обох.

base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

Ось результати. Зверніть увагу, що я не буду позначати кожен як CMD або bash; CMD буде мати >спереду, а у bashбуде $ спереду.

RMDIR

>rmdir this_directory
The directory is not empty.

>tree /a /f .
Folder PATH listing for volume Windows
Volume serial number is ████████ ████:████
base
+---this_directory
|       some.txt
|
\---this_empty_directory

> rmdir this_empty_directory

>tree /a /f .
base
\---this_directory
        some.txt
$ rmdir this_directory
rmdir: failed to remove 'this_directory': Directory not empty

$ tree --charset=ascii
base
|-- this_directory
|   `-- some.txt
`-- this_empty_directory

2 directories, 1 file

$ rmdir this_empty_directory

$ tree --charset=ascii
base
`-- this_directory
    `-- some.txt

RMDIR /S /Q and RM -R ; RM -RF

>rmdir /s /q this_directory

>tree /a /f
base
\---this_empty_directory

>rmdir /s /q this_empty_directory

>tree /a /f
base
No subfolders exist
$ rm -r this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -r this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files
$ rm -rf this_directory

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -rf this_empty_directory

$ tree --charset=ascii
base
0 directories, 0 files

RMDIR /S AND RM -RI Тут у нас є трохи різниці, але вони досить близькі.

>rmdir /s this_directory
this_directory, Are you sure (Y/N)? y

>tree /a /f
base
\---this_empty_directory

>rmdir /s this_empty_directory
this_empty_directory, Are you sure (Y/N)? y

>tree /a /f
base
No subfolders exist
$ rm -ri this_directory
rm: descend into directory 'this_directory'? y
rm: remove regular file 'this_directory/some.txt'? y
rm: remove directory 'this_directory'? y

$ tree --charset=ascii
base
`-- this_empty_directory

$ rm -ri this_empty_directory
rm: remove directory 'this_empty_directory'? y

$ tree --charset=ascii
base
0 directories, 0 files

I'M HOPING TO GET A MORE THOROUGH MOVE AND MV TEST


Примітки

  1. Я майже нічого не знаю про веб-сайт LeMoDa, окрім того, що інформація є такою

Авторське право © Бен Баллок 2009-2018 . Всі права захищені.

( заархівоване повідомлення про авторські права )

і що, здається, є купа корисних порад щодо програмування, а також трохи гумору (так, британський правопис) та інформація про те, як виправити японські туалети. Я також знайшов речі, що говорять про "Звіт Ібаракі", але я не знаю, чи це так веб-сайт.

Думаю, я їду туди частіше; це досить корисно. Реквізит Бену Баллоку, електронна пошта якого знаходиться на його сторінці. Якщо він хоче, щоб я видалив цю інформацію, я зроблю це.

Я включу застереження ( заархівоване ) з сайту:

Застереження Будь ласка, прочитайте наступне застереження перед використанням будь-якого програмного коду комп'ютера на цьому веб-сайті.

На програму немає жодних гарантій у межах, дозволених чинним законодавством. За винятком випадків, коли в письмовій формі зазначено інше, власники авторських прав та / або інші сторони надають програму "такою, яка є", без будь-яких гарантій, висловлених або передбачуваних, включаючи, але не обмежуючись цим, маються на увазі гарантії товарності та придатності для певної мети . Весь ризик щодо якості та ефективності програми лежить на вас. Якщо програма виявиться несправною, ви берете на себе вартість усього необхідного обслуговування, ремонту або виправлення.

Жоден власник авторських прав або будь-яка інша сторона, яка модифікує та / або передає програму, як дозволено вище, не буде відповідати перед вами за збитки, включаючи будь-які загальні, особливі, випадкові чи наслідкові наслідки, якщо це не вимагається чинним законодавством або не погодиться писати письмово. Збитки, що виникли внаслідок використання або неможливості використовувати програму (включаючи, але не обмежуючись втратою даних або даних, які стають неточними, або збитки, понесені вами або третіми сторонами, або збій роботи програми з будь-якими іншими програмами), навіть якщо Такому власнику або іншій стороні було повідомлено про можливість таких збитків.


  1. Насправді, я знайшов інформацію при пошуку в Google "cmd еквівалент rm"

https://www.google.com/search?q=cmd+equivalent+of+rm

Інформація, якою я ділюсь, з’явилася першою.


1
Зверніть увагу, ви повинні "/" не це: "\" rmdirдля видалення папок delдля файлів
JillAndMe
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.