자주쓰는 리눅스 명령어, vi 명령어

노요셉·2021년 3월 9일
0
post-thumbnail

쉘 shell이란

키보드로 명령어를 입력받아, OS가 그 명령을 수행하도록 하는 프로그램

터미널은 쉘을 실행하기 위해 사용자가 접속하는 프로그램
흔히 명령어 인터페이스 CLI는 모니터와 키보드로 인해 사용자가 쉘을 통해 OS의 기능을 사용할 수 있음.

자주 쓰는데 용어를 모름 ㅎ
~ : tilde
! : exclamation point

!! : 최근 명령어 의미

사용중인 쉘 확인

echo $SHELL

레퍼런스: http://www.gnujava.com/board/article_view.jsp?article_no=2352&menu_cd=131&idx_notice=NOTICE_FLAG+DESC%2C&board_no=89

쉘 프롬프트에 출력되는 문자열 의미

zsh쉘로 사용하면 다음과 나옵니다.
[현재 접속 중인 유저명@현재 접속중인 호스트명]# #: root 수퍼유저를 의미
bash쉘에서 $ 표시는 일반유저의 쉘을 의미한다.
$ 일반 유저일경우에 $표시로 나옴.

용량을 알아보기 위한 명령어

du -h * | sort -nr > $HOME/script.txt

"|" 파이프는 결과값을 다음 명령어의 인자로 사용하게 합니다.

sort 명령어는 알파벳 또는 숫자를 기준으로 정렬하는 명령

">" 출력 redirection은 앞의 명령 결과를 다음에 나오는 파일명으로 저장한다.

문자열을 모니터에 출력하기 위한 명령어

echo

echo $$
환경변수명 앞에 를추가하면환경변수에저장된변수를출력사용할수있음.를 추가하면 환경변수에 저장된 변수를 출력 사용할 수 있음.변수는 현재 쉘의 프로세스 아이디 PID를 갖고 있음.

환경 변수는 모두 대문자로 구성되어 있음.
환경변수를 출력해보기 위해서는 env 또는 printenv 명령을 사용하여 출력해볼 수 있음.

일반유저가 수퍼유저로 사용자 전환을 위한 명령어

su

bash 쉘은 본 쉘 기반이기 때문에 /bin/sh, /bin/bash 로 실행이 가능하다.

"./스크립트파일명" 형식으로도 사용가능하다. 이런 경우에는 쉘에 접근한 사용자에 대해 실행 권한이 주어져야 한다는 것

쉘 스크립트 작성

쉘 스크립트 작성할 때 스크립트의 최상단에 본 쉘일 경우 #!/bin/sh, 배시 쉘일 경우 #!/bin/bash 등 스크립트를 실행할 언어를 지정해야한다.

#!/bin/env bash 형태를 사용하기도 함.

리눅스 timezone 체크

date +"%W

https://www.tecmint.com/check-linux-timezone/

실행 파일의 이름을 검색하고자 할때

which
whereis 명령은 명령의 실행파일, 소스, 맨페이지의 위치를 검색하는 명령이다.

리눅스 파일 시스템

윈도우즈는 파티션 별로 C,D,E와 같은 방식으로 구분하지만 리눅스는 디렉토리를 기준으로 파티션을 구성하는 방법을 사용함.
하나의 파티션이 하나의 디렉토리가 될 수 있다는 의미.
이와 같이 파티션을 디렉토리에 매칭시키기 위해서는 mount라는 개념을 사용한다.

디렉토리 중 하드 디스크와 같은 디바이스 관련 파일이 있는 디렉토리는 /dev 디렉토리.
이 디렉토리를 보면 여러가지 장치들이 디바이스 파일로 매칭되어 있음을 확인할 수 있다. 이 중에서 캐릭터 디바이스 파일은 쉘 프로그래밍에서 없어서는 안 될 디바이스 파일.

/dev/tty : 프로그램이 실행되는 터미널 윈도우 또는 콘솔
/dev/hda1 : IDE 하드 디스크의 첫 번째 파티션
/dev/sda1 : SCSI, S-ATA 하드 디스크의 첫 번째 파티션

리눅스에서 파티션은 /dev/hda1, /dev/hda2 같은 형식으로 하드 디스크에 여러 개의 파티션을 구성할 수 있음.

만약 mount 명령으로 /dev/hda1 파티션을 /backup 디렉토리에 마운트 하려면
mount -t ext3 /dev/hda1 /backup 처럼 입력하면 된다.

-t 옵션은 파일 시스템 타입을 의미하고, 리눅스에서는 기본적으로 ext3 타입으로 사용함.

명령어 사용법을 보려면 보통
명령어 --help를 실행하면 되고, man mount를 실행해서 읽어봐도 된다. info 페이지에서 빠져나오기 위해서는 "q" 문자를 입력하면 된다.

port를 사용중인 애플리케이션 조회

목적: 같은 port 사용시 앱이 구동이 되지 않기 때문에 죽지 않은 app이 있으면 찾아서 죽여버리기
https://www.lesstif.com/system-admin/lsof-20776078.html

lsof -i :port

그러면 그 결과로 pid 및 application 정보가 나올텐데
애플리케이션 끄라는 신호 전달

  • 업데이트 내용 -
kill -TERM PID

SIGKILL VS SIGTERM

sigterm: 사용중인 리소스( memory, threads 등등..) 정리하고 프로세스 종료
sigkill: 정리 없음 그냥 제거

SIGKILL하고 SIGTERM 비교 그림

출처: https://www.quora.com/What-is-the-difference-between-the-SIGINT-and-SIGTERM-signals-in-Linux-What%E2%80%99s-the-difference-between-the-SIGKILL-and-SIGSTOP-signals

  • 기존 내용 -
kill -SIGKILL pid

레퍼런스:
시그널 : https://jhnyang.tistory.com/143
SIGINT, SIGTERM, SIGKILL :https://www.javaer101.com/ko/article/3072839.html#:~:text=SIGTERM%20%EB%B0%8F%20SIGKILL%EC%9D%80%20%EB%B2%94%EC%9A%A9,%EC%99%84%EC%A0%84%ED%9E%88%20%EB%AC%B4%EC%8B%9C%20%EB%90%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.

chmod u+x file이름

목적: shell로 어떤 프로그램을 실행하려는데 permission denied 발생한다면 내가 앱을 구동해야되니까 실행권한을 부여함.

폴더 전체 복사

cp -r sourceDir targetDir

폴더 전체 이동

mv sourceDir targetDir

폴더 전체 삭제

rm -rf dir

디렉토리 압축

tar -zcvf build.tar.gz ./build

압축 풀기

tar -zxvf build.tar.gz ./build

리다이렉션 > >>

기본적으로 명령어 결과가 모니터에 출력되는데 리다이렉션으로 명령의 출력을 변경할 수 있음.

< / << : 입력 방향 재지정

> / >> : 출력 방향 재지정

> : 덮어씀

>> : 추가됨

https://neul-carpediem.tistory.com/70


vi 단축키

vi 편집기는 리눅스 기본 편집기이다. 이것마저 설치가 안되었다면 설치해야함.
출처: https://bluehatsecurity.tistory.com/49 [LAT@'s Blog]

프로그램을 만들기위해 코드 작성을 해야한다. 코드 작성에 필요한 가장 간단한 에디터 vi 에디터.
이 에디터에는 모드가 있고, 명령모드, 입력모드, 라인모드가 있음.

vi가 설치된상태에서 shell에서 vi file명 코드 작성을 시작한다고 가정

어떻게 시작하나?

vi 에디터가 켜지면 명령모드로 시작해요. i,a를 눌러서 입력모드로 바꾼후에 코드 작성해요.

어떻게 종료하나?

esc를 눌러요. 명령모드로 전환됩니다. 명령모드에서 :, /, ?를 입력할 수 있는데
:wq -> 저장후 에디터 종료하겠음.
:w -> 저장만하고 에디터 켜둠.
:q -> 에디터 종료.
:q! -> 에디터 강제종료.

undo

명령모드에서 u

문자열 복사

명령모드에서 yy : 현재 커서가 있는 줄 복사

문자열 붙여넣기

명령모드에서 p : 복사한 내용을 현재 줄 이후로 붙여넣기
명령모드에서 P : 복사한 내용을 현재 줄 이전에 붙여넣기

문자열 검색

명령모드에서
/문자열 - 현재 커서 이후로 문자열 찾기 ( n키로 다음 문자열로 이동)
?문자열 - 현재 커서 이전으로 문자열 찾기 ( n키로 이전 문자열로 이동)

자세한 설명 : https://m.blog.naver.com/nfwscho/220351071053

세로 수정!

mac에서도 ctrl + v 하면 block visual mode 로 바뀌게 됌.
shift + i로 수정하고 esc눌러서 명령모드로 보면 수정되어있음.

참고 : https://ondemandstore.tistory.com/3

profile
서로 아는 것들을 공유해요~

4개의 댓글

comment-user-thumbnail
2021년 3월 10일

저도 최근에 알았는데 vi 저장 후 종료 기능이 esc -> ZZ ((shift + z) x 2) 도 있다고 하더라고요.

1개의 답글
comment-user-thumbnail
2021년 4월 8일

프로세스 종료시 kill -9 는 사용하지 않는게 좋습니다.

자세한 내용은 https://www.lesstif.com/system-admin/unix-linux-kill-12943674.html 를 참고하세요.

1개의 답글