!.. Tip

rm, rmdir 파워쉘 & cmd

rosehill 2024. 8. 8. 15:00

tip이라고도 할것도 없는얘긴데.. 

 

전통적인 cmd창의 경우.. (도스 프롬프트, dos prompt)
rmdir는 폴더를 지우는 명령어인데(Remove Directory) 이 안에 뭔가 파일이나 폴더가 들어있을경우에는 삭제가 되지 않는다. 그래서  cmd상에서는 /s /q 옵션을 통해서 디렉토리를 제거하는데, 예를들어)

room (폴더명 room이라고 할때)

rm room ==> 오직 파일만 삭제하지, 폴더는 삭제 하지 못하게돼있다.(옵션이 붙어도 마찬가지)

rmdir room ==> room폴더안에 파일등이 있으면 먹히지 않는다.

rmdir /s room ==> room폴더안의 파일을 함께 지운다. 그러나, 지우기전에 물어본다. 
다지워진다 괜찮으냐..? (yes/no)형태로.. 

rmdir /s /q room 
(엔터치면 한방에 다 삭제.. 물어보는것 없이 바로 모두 삭제한다.)



참 그런데.. 이놈의 것이. .. power shell에선 /s /q자체가 먹히지 않는다. 
그러니까 좀 기억한다고 ,괜히 /s /q또는 -rf (이건 깃 명령상이었던것같은데.. 좌우간..@,.@ 빙글 빙글..~~~) 덧붙이겠다고.. 파워쉘 상에서 rm /s room, 또는 rmdir /s room, rm /s /q room... 기타 등등 때리면서 헛발질 하다보면 '발끈'하게 될 수 있다..  계속 안먹히기때문이다.

그래서 괜히 옛날것 기억한다고, /s /q 등을 넣는것보다 
이 경우엔  그냥 솔직 담백하게, rm room 또는 rmdir room만 입력해봐도, 
친절하게 삭제의 길로 인도하게 되어있다. 아하../

rmdir나 rm둘 아무 옵션도 붙이지 않으면 두 명령 다 동일하게 작동되면서 선택을 물어보기때문이다. 
rm room  혹은 rmdir room 의 경우..뭐가 돼던 아래의 문구를 보여주게 되어있다. 

"'C:\경로\경로\room' 의 항목에는 하위 항목이 있으며 Recurse 매개 변수를 지정하지 않았습니다. 계속하면 해당 항목과 모든 하위 항목이 제거됩니다. 계속하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "Y"): 


라고 물어본다... 그러니까 이게 좀 낫긴 나은거다.. 어쨌건 옵션 모를때 일단 그냥 rm이던 rmdir건 막 던져도 효과는 보니말이다.그러니까, 옛기억 떠올리며 이거저거 넣느니 단순 심플하게 가는게 이득이었던것이다. 


물론, 해당 옵션이 있을것인데.. 그것이 -r이다.. (파워셀에서는 -r 옵션을 기억하면된다.)
위의  cmd명령에서  /s /q 가 합쳐진 거로 보면된다. 파일이 있건없건 물어보지 않고 바로 삭제한다는 옵션...

ex) 위의예제처럼 room이라는 방이 잇고 그 안에 a.txt가 있다고 할때,
rm -r room 
엔터치는 순간, 저 위에처럼 처럼 물어보는 일 없이 바로 폴더는 물론 하위 a.txt파일 까지  모두 삭제된다. 
안전하게 하려면 그러니까, 그냥 옵션 없이 사용하는것이 외려 나을것같다. 

cmd상에서 또 power shell상에서의 폴더 지우기 명령 실행상태(rm,rmdir명령어)

그냥 과거 명령어 옵션도 같이 먹게끔 하지 굳이 없앴느냐.. 아마 복잡한 옵션 없애버리고 둘을 같은 기능을 하게 하면서 안전을 위해서는 차라리 묻게 만들고 안전성을 확보한것같다. 굳이 묻지 않고 삭제하는 것은 '-r' 이라는 명령으로 통일 시키는데, 웬만하면 저렇게 가라.. 그런... 


하긴 파워쉘이 예전것에 비해 낫긴 나은것이다. ls도 먹히지만, 또 dir도 먹히니까.... cmd에선 ls는 안먹힌다. (window cmd경우.. 리눅스에선 본래 먹히던거고..)

cmd와 power shell상에서의 ls, dir 처리차이.



예전거를 기억하고 있는경우에 가끔 해깔리는경우가 생기는게 바로 이런경우에 그러하다.
처음부터 파워셀 기반에서 했던 경우는 이런 해깔림이 별로 없겠지..요근래 들어 코드를 들여다 보면서 느끼는 거지만, 예전에, C++에서 API정도 끄적이다 오랜만에 프로그램 세계를 돌아다니다 보면, 편리한것들도 많아졌지만, 특히 파이썬..(거의 놀랄 정도로 간소하고 편리해졌다), 그런데 반면에 또 람다문 같은 경우는 적응을 못할정도.. 외려 람다문은 내겐 좀 더 복잡하게 느껴져서 적응하는데 오래 걸릴것같다. 좌우간 대개가 다 모듈화가 되어있고 간소화 되어있어서 배워서 바로 바로 뭔가를 만드는데는 금방금방일것같다. 요새는..

그런데 그러면 그럴수록 그 안의 디테일한 세계에 대한 이해력이 떨어질것같기도 한데. 내 경우는 뭐 양쪽의 세계 모두 다 탄탄하지 않기때문에 계속 들여다 보면서 편리한 흐름을 타면서도 한편으로 다소 고지식해 보이는 과거 부분들도 되짚고 해야 될것같다. 예전에 하다 만 부분들에 대한 이어가기도 있겠지만,  디테일한 측면들도 가급적이면 좀 느리더라도 짚어가야 할것같기 때문이다.