본문 바로가기

웹 & 앱 꿀 TIP

[Linux] 명령어, vim , cmd 총정리

728x90
반응형

linux명령어

목록

  • linux 쉘 기본 명령어
  • 쉘 스크립트 기본 문법과 작성방법
  • linux 단축키
  • vim 사용방법 및 단축키

linux 쉘 기본 명령어

종류

  • cd
  • ls
  • mv
  • cp
  • cat
  • less
  • tail
  • nohup
  • mkdir
  • rm
  • clear
  • pwd
  • chown
  • chmod
  • grep
  • history
  • ps
  • man과 tldr

cd

가장 많이 쓰는 명령어 "change directory"의 약자

  • 특정 디렉토리로 이동
    cd <가고자 하는 디렉토리 경로>
    cd    # 사용자 디렉토리로 이동
    cd /  # root 디렉토리로 이동
    cd .. # 상위 디렉토리로 이동
    cd Desktop/wecode  # Desktop 하위 wecode 디렉토리로 이동

실습

ls

"list"의 약자로, 현재 디렉토리에 속한 파일 및 디렉토리를 나열

ls  #현재 디렉토리에 있는 내용 출력
ls -a # 숨겨진 파일이나 디렉토리도 함께 보여줌
ls -l # 자세한 내용(권한, 포함된 파일 수, 소유자, 그룹, 파일크기, 수정일자, 파일이름)
ls -al # a와 l의 기능을 모두 포함
ls -h -al # -h를 붙이면 K, M, G 단위의 파일크기를 사용하여 사람에게 보기 좋게 표시

실습

mv

"move"의 약자로 파일이나 디렉토리를 원하는 곳으로 옮기거나, 이름을 변경할 때 사용할 수 있는 명령어

mv <원본 파일명> <옮기고 싶은 디렉토리명>     # 해당 디렉토리로 파일 이동
mv <원본 파일명> <바꾸고 싶은 파일명>         # 원본 파일 이름 변경
mv <원본 디렉토리명> <옮기고 싶은 디렉토리명>  # 해당 디렉토리로 디렉토리 이동
mv <원본 디렉토리명> <바꾸고 싶은 디렉토리명>  # 원본 디렉토리 이름 변경

실습

cp

"copy"의 약자로 파일이나 디렉토리를 원하는 곳에 원하는 이름으로 복사할 수 있는 명령어

cp <원본 파일명> <옮기고 싶은 디렉토리명>               # 해당 디렉토리로 원본 파일 복사 
cp <원본 파일명> <복사해서 만들고 싶은 파일명>           # 해당 파일명으로 사본 파일 생성
cp <원본 파일명1> <원본 파일명2> <옮기고 싶은 디렉토리명> # 여러 파일을 한 번에 해당 렉토리로 복사
cp <원본 디렉토리> -r <옮기고 싶은 디렉토리명>           # 원본 디렉토리의 하위 파일까지 모두 해당 디렉토리로 복사
cp <원본 디렉토리> -r <복사해서 만들고 싶은 디렉토리명>   # 위의 방식을 응용해서 복사해서 만들고 싶은 디렉토리 생성

실습

cat

"concatenate"약자로 두 개 이상의 파일을 연결해서 출력할 때 사용

cat <파일명1> <파일명2> ...                 # 기본적인 사용방법. 두 개 이상의 파일을 연달아 출력함
cat -n <파일명1> <파일명2> ...              # 출력결과 앞에 행을 붙여서 출력
cat <파일명1> <파일명2> ... > <새로운 파일명> # ">" 앞에 있는 파일 내용을 합쳐 새로운 파일로 만들어줌
cat <파일명1> <파일명2> ... > <기존 파일명>   # ">" 앞에 있는 파일 내용을 합쳐 기존 파일에 덮어씌움
cat <파일명1> <파일명2> ... >> <기존 파일명>  # ">" 앞에 있는 파일 내용을 합쳐 기존 파일 뒤에 덧붙여줌

실습

less

파일의 내용을 확인하는 명령어 중 하나로 vim과 같은 내부창에 새로 출력 파일을 확인하나 수정은 불가

less <파일명>
[내부 창 단축키]
q: 종료 후 쉘창으로 복귀
enter: 1행 아래로 이동
space bar 또는 f: 아래로 1페이지 이동
숫자+n : 원하는 페이지만큼 뒤로 이동
PageUp: 위로 1페이지 이동
PageDown: 아래로 1페이지 이동

실습

tail

마지막 행을 기준으로 지정한 행까지의 파일 내용을 일부 출력, defaulte값은 10행

tail <파일명>      # 기본형
tail text.txt      # 1~35까지 입력된 텍스트 파일 중 마지막 10개 행이 출력됨
tail -n 5 <파일명> # -n 뒤에 숫자를 입력하면, 마지막 행부터 해당 번째까지의 행이 출력됨
tail +25 <파일명>  # tail 뒤에 +숫자를 붙이면 해당 행부터 마지막 행까지 출력됨
tail -c 10 <파일명> # -c 뒤에 숫자를 입력하면, 행 기준이 아닌 byte 기준으로 출력됨
tail -f <파일명>    # -f 를 붙이면, 종료되지 않은 채 실시간으로 마지막 10줄을 출력해줌. ctrl+c 로 종료

실습

nohup

터미널을 종료해도 프로그램이 백그라운드에서 계속 실행되도록하는 명령어

mkdir

"make directory"의 약자로 새로운 디렉토리를 만들 수 있는 명령어 (+ touch <파일명> 으로는 새로운 파일을 만들 수 있음)

mkdir <새로운 디렉토리명>  # 해당 경로에 새로운 디렉토리를 만들어줌
mkdir -p <새로운 디렉토리명 +"/" + 새로운 하위 디렉토리명> # 하위 디렉토리까지 함께 생성
mkdir -p dir1/subdir1      # dir1이라는 새로운 디렉토리와 그 안에 하위 디렉토리인 subdir1까지 함께 만들어줌

실습

rm

"remove"의 약자로 파일과 디렉토리 삭제에 사용되는 명령어

rm <파일명>               # 해당 파일을 삭제
rm *.txt                 # .txt로 끝나는 모든 파일을 삭제
rm *                     # 전체 파일 삭제
rm -r <파일명/디렉토리명>  # 해당 파일/디렉토리 삭제
rm -rf <파일명/디렉토리명> # 해당 파일/디렉토리 강제 삭제(경고문구 없이 삭제)

실습

clear

쉘 창에 있는 기록을 모두 지워주는 명령어

실습 before

after

pwd

"print working directory"의 약자로 현재 작업 중인 디렉토리의 절대 경로를 반환

실습

chown

파일이나 디렉토리의 소유권자 및 그룹식별자를 바꾸는 명령어 "change ownership"

chown <소유권자>:<그룹식별자> <소유권을 변경하고 싶은 파일명>     # 해당 파일의 소유권자, 그룹식별자 변경
chown <소유권자>:<그룹식별자> <소유권을 변경하고 싶은 디렉토리명>  # 해당 디렉토리의 소유권자, 그룹식별자 변경(하위 디렉토리는 변경 안됨)
chown -R <소유권자>:<그룹식별자> <소유권을 변경하고 싶은 파일명>   # 해당 디렉토리 및 하위 디렉토리의 소유권자, 그룹식별자 변경

chmod

파일이나 디렉토리의 퍼미션을 수정할 수 있는 명령어
ls-al명령어를 치면 아래와 같은 결과가 출력되는데요, 여기서 맨 앞에 있는 rwxr-xr-x 이 9자리의 문자가 퍼미션과 관계가 있습니다. 참고로 9자리 문자의 앞에 있는 "d"는 디렉토리, "i"는 링크파일, "-"는 일반파일을 나타냅니다.

9자리를 표현하는 문자는 "r", "w", "x","-" 4가지가 있는데요, 각각 아래와 같은 뜻을 가집니다.

"r" : 읽기 권한
"w" : 쓰기 권한
"x" : 실행 권한
"-" : 권한 없음
그리고 9자리는 각각 3자리씩 나눠서 권한을 가지는 사용자를 구분

첫 3자리 : 소유자
중간 3자리 : 그룹
마지막 3자리 : 모든 사용자
위에서 나왔던 rwxr-xr-x를 예시로 보면, 소유자는 읽고, 쓰고, 실행할 수 있는 모든 권한(rwx)을 가졌고, 그룹과 모든 사용자는 읽고 실행할 수 있는 권한(r-x)을 가졌네요. 이 권한을 수정할 수 있는 방법은 아래와 같습니다.
chmod <변경될 퍼미션 값> <변경할 파일/디렉토리>

여기서 퍼미션 값이란, 각 문자를 숫자로 변환한 값(r=4, w=2, x=1)을 더한 값입니다. 예를 들어 rwx는 7, r-x는 5입니다. 이런식으로 각 그룹별로 끊어서 숫자를 입력하면 됩니다.

chmod 755 <변경할 파일/디렉토리> # 소유자는 모든 권한, 나머지는 읽고 실행할 수 있는 권한
chmod 750 <변경할 파일/디렉토리> # 소유자는 모든 권한, 그룹은 읽고 실행할 수 있는 권한, 나머지는 아무 권한 없음

실습

grep

특정 파일 내에 지정한 패턴을 가진 문자열을 찾은 후, 해당 문자열을 출력함
패턴은 정규표현식을 따름

grep <패턴> <파일명> # 특정 파일에서 특정 패턴을 가진 문자열을 출력
grep <패턴> *         # 현재 디렉토리 모든 파일에서 특정 패턴을 가진 문자열을 출력
grep <패턴> * -r    # 현재 디렉토리 및 하위 디렉토리에서 특정 패턴을 가진 문자열을 출력

실습

history

현재까지의 모든 명령어 리스트를 행 넘버와 함께 출력

history -c # 히스토리 리스트를 지워줌

실습

ps

현재 동작하는 프로세스의 목록을 출력
-a : 전체 사용자의 프로세스 출력
-u : 각 프로세스 사용자 및 사용시간 출력
-x : 제어 터미널이 없는 프로세스 출력
-l : 자세한 형태의 정보 출력
-e : 모든 프로세스 상태 출력

ps -aux  # BSD 구문을 사용하여 시스템의 모든 프로세스를 출력
ps -ejH  # 프로세스를 트리형식으로 출력

실습

man과 tldr

man은 명령어를 설명해주고 중요한 부분만 알려주는 명령어는 tldr인데, tldr의 경우 패키지매니저를 통해 따로 설치해야함

실습

쉘 스크립트 기본 문법과 작성방법

목록

  • 기본문법
  • 작성방법(변수, 반복문, 비교문, 종료상태 등)

기본문법

  • 쉘스크립트 기본
    쉘 스크립트는 쉘에게 무슨 명령들을 실행할지 알려주는 스크립트 파일입니다. 여기서는 가장 널리쓰이는 bash 쉘을 보고

최상단에는 #!/bin/bash가 적혀있어야한다. 파일명은 exam.sh로 설정

실습

해당 코드 실행 및 권한 추가

작성방법(변수, 반복문, 비교문, 종료상태 등)

  • 변수
    변수명 = 값 으로 선언 후 사용할 때는 $ 를 앞에 붙여줌
    ${변수}식으로 사용

export를 사용하여 다른 쉘 스크립트에서 사용할 수 있게한다.

  • 매개변수
    프로그램에서도 실행할 때 인자를 주듯 쉘 스크립트 역시 그렇게 할 수 있다. 실행한 스크립트 이름은 ${0}, 그 이후는 전달받은 인자 값
  • echo "script name:${0}" echo "매개변수 갯수 :${#}" echo "전체 매개변수 값 : ${*}" echo "전체 매개변수 값2 : ${@}" echo "매개변수 1 : ${1}" echo "매개변수 2 : ${2}"
  • 예약변수
    사용자가 정해서 만들 수 없는 이미 정의된 변수
이름 내용
Home 사용자의 홈 디렉토리
PATH 실행 파일의 경로
LANG 프로그램 실행 시 지원되는 언어
UID 사용자의 UID
SHELL 사용자가 로그인 시 실행되는 쉘
USER 사용자의 계정 이름
FUNCNAME 현재 실행되고 있는 함수 이름
TERM 로그인 터미널
  • 배열
    쉘 스크립트에서 배열은 1차원 배열만 지원하며 중괄호를 사용
    배열 원소는 소괄호안에 공백으로 구분하고, 배열 안 원소는 문자열과 정수 모두 포함

-함수
함수명 앞에 function을 기입 여부는 따르지 않으며, 호출 되기 전 함수가 정의되어있어야 함

(※ 호출할 때는 괄호를 써주지 않고 호출)

  • 비교문
    비교문 형식
    if [값1 조건 값2]; then
          ... 작업 내용 ...
    fi

쉘스크립트는 명령어를 다루는 스크립트이기 때문에 파일이 존재하는지, 디렉토리가 존재하는지 등 파일과 관련된 조건 여부도 조건문을 통해 알 수 있다.

조건 설명
if [ -d ${변수} ]; then ${변수}의 디렉토리가 존재하면 참이 성립합니다.
if [ -e ${변수} ]; then ${변수}라는 파일이 존재하면 참입니다.
if [ -L ${변수} ]; then 파일이 symbolic link이면 참입니다.
if [ -s ${변수} ]; then 파일의 크기가 0보다 크면 참입니다.
if [ -S ${변수} ]; then 파일 타입이 소켓이면 참입니다.
if [ -r ${변수} ]; then 파일을 읽을 수 있으면 참입니다.
if [ -w ${변수} ]; then 파일을 쓸 수 있으면 참입니다.
if [ -x ${변수} ]; then 파일을 실행할 수 있으면 참입니다.
if [ -f ${변수} ]; then 파일이 정규 파일이면 참입니다.
if [ -c ${변수} ]; then 파일이 문자 장치이면 참입니다.
if [ ${변수1} -nt ${변수2}]; then 변수1의 파일이 변수2의 파일보다 최신 파일이면 참입니다.
if [ ${변수1} -ot ${변수2}]; then 변수1의 파일이 변수2의 파일보다 최신이 아니면 참입니다.
if [ ${변수1} -ef ${변수2}]; then 변수1의 파일과 변수2의 파일이 동일하면 참입니다.

여러 조건을 걸려면 else if 역할을 하는 elif를 사용하여 elif[조건]; then으로 사용

반복문의 경우 break라는 키워드를 사용하여 반복문을 멈출 수 있음
세미콜론 2개로 종료도 가능함

  • 반복문

for

  • 명령어 종료 코드(exit)

$? 에 종료코드가 있는데, 정상종료는 0 != 비정상 종료
오류를 내는 c파일을 작성후 gcc로 컴파일

c파일

결과 및 sh파일

Linux 단축키

종류

  • 단축키
  • 실행 중인 프로그램을 제어하는 단축키
  • bash 상에서 기본 입력 모드인 emacs 스타일일 경우

단축키

shift + Ctrl + c 복사하기

Shift + Ctrl + V 붙여넣기

Ctrl + L 화면 Clear

실행 중인 프로그램을 제어하는 단축키

Ctrl + c 실행 중인 프로그램 중지

Ctrl + z 실행 중인 프로그램 일시 정지

% 일시 정지된 프로그램 다시 실행

bash 상에서 기본 입력 모드인 emacs 스타일일 경우

Tab: 자동 완성

Ctrl + D : 로그아웃

Ctrl + R : 히스토리 찾기

Ctrl + S : 키보드 잠그기

Ctrl + Q : 잠긴 키보드 풀기

Ctrl + M : Enter

Ctrl + P : 이전 명령어 (Up)

Ctrl + N : 다음 명령어 (Down)

Ctrl + L : 화면 지우기 (clear)

Ctrl + Y : 버퍼의 내용 붙여넣기

Ctrl + A : 입력 라인의 처음으로 이동 (Home)

Ctrl + E : 입력 라인의 끝으로 이동 (End)

Ctrl + B : 커서를 왼쪽으로 이동 (Left)

Ctrl + F : 커서를 오른쪽으로 이동 (Right)

Ctrl + XX : 커서를 이전 위치로 이동

Ctrl + U : 커서 왼쪽의 문자들을 버퍼에 저장 후 삭제

Ctrl + K: 커서 오른쪽의 문자들을 버퍼에 저장 후 삭제

Alt + L: 커서 위치에서 문자열 끝까지 소문자로 변환

Alt + U : 커서 위치에서 문자열 끝까지 대문자로 변환

Alt + T : 두 단어 위치 바꾸기

Alt + B : 커서를 다음 단어로 이동

Alt + F : 커서를 이전 단어로 이동

Vim 사용방법 및 단축키

목차

  • vim이란?
  • vim의 사용방법
  • vim 단축키

vim이란

유닉스에서 사용할 수 있는 에디터(= 터미널을 통한 텍스트 편집)
모든 명령어는 대소문자를 구분하니 주의

vi과 vim의 차이

둘은 같은 거지만 vim이 업그레이드 된 버전

vim의 사용방법

vim 파일이름.파일의 확장자 를 입력하여 파일 생성

  • vim 에는 일반모드/ 입력모드/ 명령모드 총 세가지가 존재
  1. 입력모드로 전환 (a 또는 i 또는 s 또는 o)
    단축키 설명
    h 왼쪽으로 한 칸 이동
    j 아래 줄로 이동
    k 윗줄로 이동
    l 오른쪽으로 한칸 이동
    블록 지정
    단축키 설명
    v 단어 단위
    Shift + v 라인 단위
    Ctrl + v 블록 단위
    편집(복사 삭제, 붙여넣기)
    단축키 설명
    y 지정된 블럭 복사
    p 복사된 블럭 붙이기
    x 한 문자 삭제
    dd 커서의 현재 라인 삭제
    내용 기입 후  
  2. 키 이동
  3. 명령모드로 전환 (esc)
  4. /를 누르면 화면 제일 아래에 /가 나타나고 찾은 글자를 이벽한 후 엔터를 치면 서치 가능
    : 기입
  5. 저장
  6. 소문자 w 기입 시 저장
  7. 종료
  8. :q 입력시 종료
  9. 저장 및 종료
  10. :wq 또는 wq! 기입

문자열 변경

:(시작줄),(끝줄)s/찾을패턴/변경할스트링/옵션

옵션
|단축키|설명|
|---|---|
|g|한 줄에 여러개 일치하면 모두 변경|
|i|대소문자 구분 안함|
|c|찾을 패턴을 변경할 때 사용자에게 변경 여부 확인|


|단축키|설명|
|---|---|
|sp|가로 분할|
|vs|세로 분할|
|Ctrl + w q|현재 커서의 창 종료|
|Ctrl + w c|현재 커서의 창 닫기|
|Ctrl + w o|현재 커서의 창만 남기고 창 삭제|
|Ctrl + w w|커서를 순차적으로 이동|
|Ctrl + w 화살표|커서를 화살표 방향의 창으로 이동|
|Ctrl + w =|창의 크기 균등|
|Ctrl + w _|수평 분할에서 창의 크기를 최대화|

이전 명령 반복 (.)

블록의 맨 앞 or 맨 뒤 문자열 추가

맨앞에 넣기 :norm i문자열
맨뒤에 추가 :norm A문자열
(+ 주석은 앞에 //를 기입하면 된다.)

vim 단축키

위 사진 출처 : 인파님

728x90
반응형