티스토리 뷰
#mkdir (make directory)
- 디렉토리 생성
#> mkdir [directory name]
여러 디렉토리 한꺼번에 생성시엔
mkdir [dir1] [dir2] [dir3] ... 과 같은 형태로 생성. 인자는 공백으로 구분한다.
#> mkdir ./korea1 ./korea2 ./korea3
한꺼번에 하위 디렉토리까지 생성 하려면 -p 명령어를 이용한다
#> mkdir -p ./korea4/seoul/dobong-gu
위와같은 방법으로 디렉토리 생성시, 계층적 구조로 생성이 된다.
# 현재 경로에서 상위경로로 이동시 .. 을 이용한다.
근데 만약 두 계층 위로 올라가려면 #> cd ../../ 과 같이 두번 작성해 주면 된다.
#rmdir (remove directory)
- 디렉토리 삭제
#> rmdir [directory name]
형태로 디렉토리를 제거할 수 있다. 그러나 마지막에 korea4 의 디렉토리엔 하위디렉토리가 존재하므로 제거가 어렵다.
# 다음과 같이 하위 폴더가 존재한다.
즉, rmdir 이라는 명령어는 비어있는 디렉토리만 삭제가 가능하기 때문에, 사실상 이용 빈도가 높지는 않다.
따라서 지금은 어쩔수 없이 하위폴더로 경로를 이동하여 제거하며 #> cd ../ 로 상위경로로 이동하여 전부 제거해주자.
# 위와같이 한꺼번에 생성 및 삭제 도 가능하다
간단한 실습 예제.
korea01 ~ korea 10 총 10개의 디렉토리를 생성해야한다.
방법 1. #> mkdir korea01 korea02 .. korea10
방법 2. #> mkdir korea{01,02,03,04,05,06,07,08,09,10} - 중괄호 확장 이용
방법 3. #> mkdir korea{01..10}
#> mkdir korea{01,02,03,04,05,06,07,08,09,10}
#> mkdir korea{01..10}
# 위와같은 방법으로 중괄호 확장을 이용해서 한번에 계층적 구조를 생성할 수도 있다.
#cp (copy)
- 파일 복사
#> cp [option] [source] [target]
[option]
-i : 복사할 대상과 동일한 이름이 존재하는 경우 덮어쓸 것인지에 대해 사용자에게 물어본다.(interactive)
이 옵션 없이 그냥 cp만 사용할 경우 덮어쓸 것인지 여부를 묻지 않고 그냥 덮어쓴다. 따라서 붙혀주는것을 권장.
-r(R) : 디렉토리를 복사할 경우 하위 디렉토리 및 파일을 모두 함께 복사한다. 가장 많이 사용.
-v : 명령어 실행 과정을 보여준다.
[source], [target] 에는 경로가 위치하게 됨.
#> cp /bin/ls /practice/ABC 와 같이 입력할 경우 복사해서 옮길 디렉토리의 이름을 새로 지정(ABC)해서 복사.
#> cp /bin/ls /practice 의 경우 기존 디렉토리 이름을 유지 한 채 해당 경로에만 복사.
#> cp /bin/cat /bin/cut /practice/ 의 경우 두개의 디렉토리를 최종 경로에 복사.
이 때 공통적인점은 가장 우측에 존재하는 경로는 디렉토리라는 점이다.
즉, [source] 는 몇개를 나열하건 상관 없지만 [target] 에는 반드시 디렉토리여야 한다.
디렉토리를 통채로 복사하려면 -r 옵션을 사용하면 된다.
# 경로로 이동해보면 하위디렉토리 전체가 모두 복사 되었음을 알 수 있다.
#> cp /bin/ls /practice/ 입력시 기존에 이미 ls라는 폴더가 존재하므로 overwrite 할 것인지를 묻는다.
근데 우리가 -i 옵션을 붙히지 않았는데도 해당 여부를 물어보는 이유는 alias 에 가보면 알 수 있다.
cp 명령어는 -i 옵션이 디폴트로 alias로 설정되어 있기 때문이다.
#mv (move)
- 파일 이동
#> mv [option] [source] [target]
[option]
-i : 복사할 대상과 동일한 이름이 존재하는 경우 덮어쓸 것인지에 대해 사용자에게 물어본다.(interactive)
이 옵션 없이 그냥 cp만 사용할 경우 덮어쓸 것인지 여부를 묻지 않고 그냥 덮어쓴다. 따라서 붙혀주는것을 권장.
-v : 명령어 실행 과정을 보여준다.
# practice 디렉토리 내에 mv_test라는 디렉토리를 생성하고 /bin/ls 디렉토리를 mv_test 경로로 복사하였다.
그다음 mv_test 내에 test라는 디렉토리를 추가로 생성하고
#> mv ./ls ./test/ : 해당경로의 ls디렉토리를 test 디렉토리로 이동
그 결과 mv_test 내에는 test 폴더만 존재하게 되었고, 그 안에 ls 폴더가 존재하게 되었다.
다시 상위 경로로 ../를 이용하여 옮겨주었다.
# ls 디렉토리를 123 그리고 abc 라는 이름의 디렉토리로 복사 하였고,
123, abc, ls 디렉토리 모두를 test 디렉토리로 이동하였다.
이때도 마찬가지로 [source] 는 여러개가 올 수 있지만 맨 마지막에 오는 [target] 은 디렉토리여야함을 알 수 있다.
# mv 명령어는 이름을 바꿀 때도 사용된다.
#rm (remove)
- 파일 삭제
#> rm [option] [target]
[option]
- f : 삭제시 물어보지 않고 삭제한다(force)
- r : 하위 디렉토리 및 파일을 포함하여 삭제한다.
# 다음과 같이 삭제 가능하다.
# 위와같이 여러 디렉토리를 제거할때 모두 제거 여부를 물어본다.
근데 만약 하위 디렉토리가 100개라면 100번 허가를 모두 해 줘야 한다.
#> rm -rf [target] 명령어 이용시 전체 디렉토리가 한번에 지워졌음을 알 수 있다.
-f 옵션은 interactive 를 무시하고 강제로 진행한다는 의미이다.
지금까지 배운 명령어를 전체 한번 더 사용해 보도록 하자.
/practice/test1/bin_a : /bin/ 디렉토리아래 a로 시작하는 파일 모두 복사
/bin_b : /bin/ 디렉토리아래 b로 시작하는 파일 모두 복사
/bin_c : /bin/ 디렉토리아래 c로 시작하는 파일 모두 복사
# bin_a 와 bin_b 까지는 하위 디렉토리가 몇개 없어서 a로 시작되는 파일 ([tab] 2회 눌러서)을 찾아서 직접입력하여 복사가 가능했다.
그러나 c로 시작하는 파일을 보면
# 총 7개가 존재하는데 이를 모두 하나하나 해주기엔 너무 비효율적이다.
이럴때 사용하는것이 * 이다.
# 모두 복사가 되었음을 확인할수있다. c로 시작하는 파일에 대해서만.
*)_ 쉘 메타문자 (Shell metacharacter)
- 리눅스 쉘은 다양한 특수문자를 이용하여 명령어를 처리한다.
- 메타문자를 적절히 사용하면 반복되는 작업이나, 인자를 다양하게 확장 할 수 있다.
와일드 카드 문자
* : 모든 문자와 일치하는 와일드 카드 문자 ex). c* : cat, chgrp 등 c 뒤에오는 파일명의 글자 갯수에 상관잆이 모든 문자
? : 하나의 문자와 일치하는 와일드 카드 문자 ex). c?? : cat, cut 만 해당된다. 즉 c 뒤의 두글자 에 해당되는 파일만 매칭됨
'SYSTEM > LINUX' 카테고리의 다른 글
7) Grep&Regular-Expression (0) | 2018.02.17 |
---|---|
6) Basic Command2 (0) | 2018.02.15 |
4) Bash Shell (0) | 2018.02.12 |
3) 리눅스 구조 (0) | 2018.02.09 |
2) 리눅스 설치 / 실습환경 구축 (0) | 2018.02.09 |