본문 바로가기
Linux 2급

리눅스 기본 명령어 (touch, cat, head, tail, more, less, file, stat, cp, mv, rm, tty) 쉽게 배우기

by 방뭉밍봉 2022. 6. 29.

오늘 배울 명령어가 아주 많죠..?

 

정말 간단하고 알아두어야 할 명령어들이니까 누구보다 빠르게 남들과는 다르게 배워봅시다

 

 

@일반 빈 파일 생성

#>touch [option] [path]

-t [(YY)MMDDhhmm] [파일 생성 시간을 변경하는 옵션]

-a : 접근 시간을 변경한다.

-m : 파일의 변경 시간을 수정한다.

--> [path] 파일이 존재하지 않으면 파일을 생성

--> [path] 파일이 존재하면 생성 시각을 변경

 

touch는 빈 파일을 생성하는 명령어입니다 mkdir은 디렉터리를 생성하는 명령어 우선 바로 만들어 볼까요?

mkdir로 최상위 경로 위에 test라는 디렉터리를 만들고 그 위에 touch 명령어를 사용하여

touchtest라는 파일을 생성한 걸 볼 수 있습니다 이건 윈도우로 생각하면 test라는 디렉터리 위에 빈 txt 파일을 생성했다고 생각하시면 편합니다

 

그러면 옵션 -t를 사용하여 생성 시간을 변경하여 봅시다 위에 사진을 보시면 9월 26일 21:54분 생성한 파일이라고 되어있는데 날짜를 정해주어 2015년 5월 5일로 바꾸어보겠습니다

 

짠 생성 시간이 2015년 5월 5일로 바뀐 걸 볼 수 있습니다(시간은 12시로 해서 안 나옵니다.)

 

 

 

 

이제 알아볼 명령어들은 파일의 내용을 확인하는 명령어입니다

 

우선 vi 편집기로 touchtest라는 방금 만든 파일에 내용을 적어줍시다

(vi 편집기는 리눅스에서 아주 중요한 역할을 하기에 나중에 따로 이해하기 쉽게 올리겠습니담)

우선 touchtest 파일에 a~z까지 적어서 파일을 저장해주었습니다

 

우선 그냥 파일의 내용을 확인할 수 있는 cat 명령어

 

 

 

@파일 내용 확인 명령어 (cat, head, tail, more, less)

 

 

 

1) cat

#> cat [option] [path]

-n, --number : 각 문장 앞에 번호를 표시해 준다. 공백 줄도 번호를 표시한다.

-b, --number-nonblank : 각 문장 앞에 번호를 표시해 준다. 공백 줄은 번호를 표시하지 않는다.

파일의 내용을 읽어옵니다.

옵션 -n 을 붙이면 앞에 줄 개수를 표시해줍니다

 

 

2) head

#>head [option] [path]

-[num] ( default -10 )

-n, --lines=N : 출력을 원하는 줄 수를 지정한다.

head 명령어는 파일의 위쪽부터 순서대로 10줄을 읽어옵니다

옵션 -[숫자]를 넣으면 넣은 숫자만큼 위에서부터 아래로 출력해줍니다

 

 

3) tail

#>tail [option] [path]

-[num] ( default -10 )

-n, --lines=N : 파일의 마지막 행부터 N 번째까지 출력한다.

-q, --quiet, --silent : 파일명을 출력하지 않는다.

tail 명령어는 head 와는 반대로 밑에서부터 위로 10줄 읽어오는 명령어입니다

옵션 -[숫자]는 넣는 만큼 밑에서부터 읽어옵니다

 

 

4) more

#>more [option] [path]

-s : 두 개 이상의 공백 줄을 하나로 합쳐 출력한다.

-p : 스크롤하지 않고 전체 스크린을 지우고 텍스트를 출력한다.

enter 한 줄 이동

space bar 한 페이지 이동

q 종료

more 명령어는 화면 단위로 파일을 읽어주는 파일의 내용이 길 때 쓰면 유용한 읽기 명령어

책을 읽듯이 편하게 파일을 읽을 수 있는 명령어입니다 스페이스바 엔터를 눌러

/etc/aliases 파일을 읽어봅시다.

나중에( | ) 빽 슬레시 같이 많이 쓰이는 명령어이니 우선 기억해둡시다

 

 

5) less

#>less [path]

enter 한 줄 이동

↑↓ 위, 아래 이동

space bar 한 페이지 이동

/[문자열] 아래 방향 문자열 찾기

?[문자열] 위의 방향 문자열 찾기

n 같은 방향으로 다음 찾기

N 반대 방향으로 다음 찾기

q 종료

less 명령어는 파일을 읽기 쉽게 페이지 단위로 읽어주는 기능입니다

응? 아니.. more 이랑 뭐가 다른 건데 ;;

 

 

 

more과 less는 비슷하지만 다른 명령어입니다

 

more 명령어 특징

1.vi를 이용해서 편집 가능

2. 아래로만 파일을 읽어옴

3. 옛날 커맨드

 

less 명령어 특징

1. 중간중간 vi 편집기로 입력 가능

2. 아래 위로 움직이며 읽기 가능

3. 파일 관리가 편리

 

 

#> tty

[command]

[shell] 입출력 리다이렉션

 

tty 명령어는 표준 입출력의 연결되어 있는 터미널의 이름을 출력하는 명령어입니다

이게 뭔 소리냐?

왼쪽이 vmware에서 직접 입력한 tty

오른쪽이 putty로 원격접속해서 입력한 tty

 

우리가 입력하는 모든 입출력들은 저 터미널을 지나서 나오는 거라고 생각하면 된다 직접 접속한 콘솔로 입력하는 입출력은 tty~를 지나서 나오게 되고

 

원격접속으로 (telnet, ssh, ftp 등) 원격지에서 입력한 입출력은 pts/~를 지난다고 생각하면 된다.

 

 

#tty - 현재 사용 중인(표준 입력에 연결되어있는) 터미널의 이름을 출력

                    /dev/tty                                  /dev/pts

Console <---------------> Server Remote <--------------> Client

 

Console

- 직접 서버와 연결되어 있는 디스플레이 모니터와 키보드(또는 입력이 가능한 다른 장치)가 조합된 장치

- 터미널이라고 부르며, 기본적으로 6개의 가상 터미널을 제공

pts

- 원격지에서 서버에 접속 시 사용하는 가상 터미널, Telnet, SSH 등 연결 시 사용

 

콘솔을 통해 입력하는 그 입력들이 /dev/tty/ 파일을 통해 입출력이 이루어지지고 우리는 원격지에서 하는 입력이기 때문에

/dev/pts 파일을 통해 이루어진다.

=> XShell(Remote Client)에서 #tty -> /dev/pts/

=> vm workstation(Console)에서 #tty -> /dev/tty로 나온다.

이 두 가지를 일반적으로 가상 터미널이라고 함.

 

 

파일과 관련된 명령어 (file, stat, cp, mv, rm)

 

 

1. 파일의 타입

#>file [path]

파일의 타입을 확인하는 명령어 touchtest파일은 text 파일이란다 라고 알려주는 모습.

 

 

2. 파일의 속성

#>stat [option] [path]

-L, --dereference : 심볼릭 링크의 원본 파일 정보를 출력한다.

-f, --file-system : 파일 대신 파일시스템의 상태 정보를 출력한다.

-c, --format=FORMAT : 출력 형식(FORMAT)을 지정한다.

-t, --terse : 간략한 형태로 내용을 출력한다.

파일의 속성을 확인하는 명령어이다 파일의 size (bit) 단위 파일의 종류 권한 생성 시간 수정시간 등 여러 가지가 나오는 걸 볼 수 있다

 

 

3. 파일의 복사

#>cp [option] [src_path....] [dst_path]

-r 디렉터리까지 복사

-b, --backup : 복사 대상 파일이 있을 경우를 대비하여 백업 파일을 만든다.

-f, --force : 복사 대상 파일이 있으면 복사 대상 파일을 강제로 지우고 복사한다.

-d, --no-deference : 원본 파일이 소프트링크 파일이면 소프트링크 원본을 복사한다.

-p, --preserve : 원본 파일의 소유자, 그룹, 권한, 시간 정보를 그대로 보존하여 복사한다.

-s, --symbolic-link : 디렉터리가 아닌 일반 파일을 심볼릭 링크 형식으로 복사한다.

-u, --update : 변경일이 같거나 더 최신의 복사 대상 파일이 있으면 복사하지 않는다.

 

--> 이름을 지정하지 않으면 같은 이름으로 복사

--> 이름을 지정하면 지정한 이름으로 변경하여 복사

cp (copy)의 약자이고 윈도우에 ctrl+c, ctrl+v로 파일을 복사한다고 생각하면 편하다

사진은 test/touchtest에 있는 파일을 test2디렉터리에 똑같이 복사한 것이다

 

 

4. 파일 이동

#>mv [option] [src_path] [dst_path]

--backup[=CONTROL] : 대상 파일이 존재하면 백업 파일을 생성한다.

-b : --backup과 비슷하게 백업 파일을 생성한다.

-f, --force : 사용자에게 묻지 않고 파일을 덮어쓴다.

-i, --interactive : 존재하는 파일을 덮어 쓸 경우 확인한다.

-n, --no-clobber : 존재하는 파일을 덮어쓰지 않는다.

 

--> 이름을 지정하지 않으면 같은 이름으로 이동

--> 이름을 지정하면 지정한 이름으로 변경하여 이동

mv 명령어는 (move)의 약자이며 파일을 이동하는 명령어이다 캡처화면 보면 알 듯이 cp 와 다르게 기존 파일에 있지 않고 이동을 한 모습이다

 

또 mv 명령어는 다른 역할로도 많이 활용된다 리눅스는 파일의 이름을 변경하는 명령어가 따로 존재하지 않는다 /test3디렉터리에 있는 /touchtest라는 파일의 이름을 tutu라는 이름으로 변경하고 싶다면

이런 식으로 사용해야 한다

# > mv /디렉터리/파일 /디렉터리/파일

/test3/touchtest /test3/tutu

(같은 디렉터리로 이동하여 파일의 이름만 바꾸어 주면 된다)

 

 

5. 파일의 삭제

#>rm [option] [path...]

-R --recursive : 하위 디렉터리를 포함하여 모든 내용을 삭제한다.

-i --interactive : 매번 삭제할 때마다 사용자에게 물어본다.

-f, --force : 강제로 파일이나 디렉터리를 삭제하고, 삭제할 대상이 없을 경우 메시지를 출력하지 않는다.

rm (remove)의 약자이며 파일을 삭제하는 명령어이다 아무 옵션을 넣지 않으면 삭제하기 전에 진짜 삭제할까요?라고 한번 물어본다 y/n 로 입력

디렉터리 파일은 삭제할 수 없다 rmdir이라는 명령어가 있으니 뭐..

 

하지만 -r이라는 명령어를 사용 하면 디렉터리고 뭐고 삭제해버린다

여기에 -f 옵션을 붙이면 삭제하기 전에 뜨던 진짜 삭제할까요?라는 문구도 안 뜬다

 

한마디로 rm -rf로 사용하면 묻고 따블로 가라는 소리다

/test2라는 파일에 touchtest 파일이 있지만 rm -rf 는 하위 디렉터리에 뭐가 있던 말건

묻지도 따지지도 않고 없애버린 걸 볼 수 있다

 

rm -rf는 정말 편하기도 하지만 정말 강력한 명령어라 자칫 rm -rf / 이렇게 치면 운영체제를 통째로 날려먹을 수 있는 무서운 명령어이기도 하니까 삭제하기 전에 다시 한번 확인해보고 삭제하는 습관을 들이자.