Windows .cmd'de rm ve mv'nin eşdeğeri


93

Bir kabuk betiğinde aşağıdakilere sahibim, aşağıdaki satırları bir Windows cmd dosyasına dönüştürmek istiyorum ... Windows cmd dosyasında "rm" ve "mv" için eşdeğer olanın ne olduğu konusunda herkes girdi sağlayabilir.

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

9
delve move.
Blorgbeard

Yanıtlar:


141

moveWindows'ta mvLinux'taki komuta eşdeğerdir

delWindows'ta rmLinux'taki komuta eşdeğerdir


24
Bu aşırı basitleştirmedir. Davranış ve yetenekler oldukça farklı.
StephenBoesch

Mükemmele yakın bir davranış ve yetenek eşleşmesi için, Linux araçlarının Win32 bağlantı noktalarını kullanmak için @Dave önerisini kullanın. Ayrıca önerilen GnuWin32'yi de beğeniyorum, ancak genellikle bindizinleri Windows için Cygwin veya Git bash / git'ten Windows'uma ekliyorum PATH. Eğer saf CMD kullanmak istiyorsanız , ne de paylaştım önerileri kullanarak daha yakın davranış ve özelliklerinden yararlanabilmeniz Cevabıma aşağıda.
bballdave025

34

moveve delkesinlikle eşdeğerler, ancak işlevsellik açısından bunlar ne yazık ki eşdeğer DEĞİLDİR. Örneğin, movekomutla hem dosya hem de klasörleri (joker karakter senaryosunda) taşıyamazsınız . Ve aynı şey için de geçerlidir del.

Benim görüşüme göre tercih edilen çözüm, en iyi koleksiyonunu burada bulduğum Linux araçlarının Win32 portlarını kullanmaktır .

mvve rmbulunan coreutils paketi ve onlar harika çalışır!


14

Komutlar için farklılıklar hakkında daha ayrıntılı bir tartışma görmek isterseniz , aşağıdaki Farklılıklar Hakkında Ayrıntılar bölümüne bakın.

Gönderen LeMoDa.net web 1 ( arşivlenmiş ), özellikle , Windows ve Unix komut satırı eşdeğerleri sayfası ( arşivlenmiş ), şu buldum 2 . Bir sonraki düzenlemede daha iyi / daha eksiksiz bir tablo var.

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

@Dave ve @javadba'dan komutların ne kadar eşdeğer olduğunu duymak istiyorum - " davranış ve yeteneklerin " karşılaştırması, oldukça benzer veya " ne yazık ki eşdeğer DEĞİL ".

Tek öğrendiğim, bir dizini ve onu oluşturan dosyaları ve alt dizinlerini denemek ve yinelemeli olarak kaldırmak için kullandığımda, örneğin

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

bana standart bir Windows emin olduğunuzdan daha iyi bilir mesajı ve istemi verdi

dirwithsubdirs, Are you sure (Y/N)?

ve yazdığımda Y, sonuç, üst dizininin ve onu oluşturan dosya ve alt dizinlerin kaybolmasıydı.


Düzenle

Bu cevabı bulduktan sonra buna dönüp bakıyorum . Komutların her birini tekrar denedim ve tabloyu biraz değiştirdim.

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>

Eşdeğeri istiyorsanız

rm -rf

kullanabilirsiniz

rmdir /s /q

ya da kaynak aldığım cevabın yazarı olarak,

Ancak bunu yapmanın, komutların onay mesajlarını bastırma seçeneklerinin olmadığı günlerde kullanılan başka bir "eski usul" yolu daha var. Basitçe ECHOgereken yanıt ve değeri komuta aktarın.

echo y | rmdir /s


Farklılıklar hakkında ayrıntılar

Komutların her birini Windows CMD ve Cygwin (bununla birlikte bash) kullanarak test ettim .

Her testten önce aşağıdaki kurulumu yaptım.

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

Bu, her ikisi için de aşağıdaki dosya yapısıyla sonuçlandı.

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

Sonuçlar burada. Her birini CMD veya bash; CMD'nin >önünde ve önünde de basholacaktır $ .

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 Burada biraz farkımız var ama oldukça yakınlar.

>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


Notlar

  1. LeMoDa web sitesi hakkında, bilginin şu şekilde olması dışında neredeyse hiçbir şey bilmiyorum.

Telif Hakkı © Ben Bullock 2009-2018 . Her hakkı saklıdır.

( arşivlenmiş telif hakkı bildirimi )

ve bazı mizah (evet, İngiliz yazımı) ve Japon tuvaletlerinin nasıl tamir edileceğine dair bilgilerle birlikte bir sürü faydalı programlama ipucu var gibi görünüyor. Ayrıca "Ibaraki Raporu" hakkında konuşan bazı şeyler de buldum, ancak web sitesinin bu olup olmadığını bilmiyorum .

Sanırım oraya daha sık gideceğim; oldukça kullanışlıdır. Sayfasında e-postası bulunan Ben Bullock'tan destek. Bu bilgiyi kaldırmamı isterse, kaldırırım.

Sorumluluk reddini ( arşivlenmiş ) siteden ekleyeceğim :

Sorumluluk Reddi Bu sitedeki herhangi bir bilgisayar programı kodunu kullanmadan önce lütfen aşağıdaki sorumluluk reddini okuyun.

Programın Geçerli Yasaların İzin Verdiği Ölçekte Garanti Yoktur. Yazılı Olarak Aksi Belirtilmedikçe Telif Hakkı Sahipleri ve / veya Diğer Taraflar, Belirli Bir Amaca Uygunluk ve Satılabilirlik Zımni Garantileri Dahil, Ancak Bunlarla Sınırlı Olmayan, İfade Edilmiş veya İma Edilmiş Herhangi Bir Garanti Olmadan Programı "Olduğu Gibi" Sağlar . Programın Kalitesi ve Performansına İlişkin Tüm Risk Sizinle. Programın Kusurlu Olması Durumunda, Gerekli Tüm Bakım, Onarım veya Düzeltme Maliyetlerini Üstlenirsiniz.

Yürürlükteki Yasa Tarafından Gerekmedikçe veya Yazılı Olarak Kabul Edilmedikçe Hiçbir Durumda Herhangi Bir Telif Hakkı Sahibi veya Yukarıda İzin Verildiği Şekilde Programı Değiştiren ve / veya Aktaran Başka Bir Taraf, Genel, Özel, Tesadüfi veya Sonuç Olarak Oluşan Hasarlar Dâhil Olmak Üzere Size Karşı Sorumlu Olmayacaktır. Programın Kullanımından veya Kullanılamamasından Kaynaklanan Hasarlar (Veri Kaybı veya Verilerin Yanlış Verilmesi veya Sizin veya Üçüncü Taraflarca Sürdürülen Kayıplar veya Programın Başka Programlarla Çalıştırılamaması Dahil Ancak bunlarla sınırlı olmamak üzere) Bu tür hasarların oluşma olasılığı söz konusu hamil veya diğer tarafa bildirilmiştir.


  1. Aslında, bilgiyi "cmd rm eşdeğeri" için bir Google aramasında buldum

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

Önce paylaştığım bilgiler geldi.


1
Dosyaların rmdirklasörlerini silmek için "/" bunu yapmamalısınız: "\"del
JillAndMe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.