[Alex] 데이터 장인의 블로그

[Linux] 기본명령어 (쉘스크립트, 쉘 명령어) 본문

Linux&OS

[Linux] 기본명령어 (쉘스크립트, 쉘 명령어)

Alex, Yoon 2021. 1. 31. 16:31

Linux - 오픈소스 컴퓨터 운영체제(OS) 또는 커널 

SSH: 네트워크 프로토콜 중 하나. 서로 통신을 할 때 보안적으로 안전한 통신을 하기 위해 사용하는 프로토콜 

  1. 데이터 전송 
  2. 원격 제어

FTP, Telnet 등의 프로토콜보다 보안성이 높음. 

 

보안 유지 방법 

  • Public Key - Private Key(내가) 쌍을 통해 접속 보안을 유지 

Port: Host 프로세스에 연결하기 위한 구분 

ex) 123.234.345.456:8080

기본 명령어(자주 사용하는) 

clear

  • CLI 창 모두 깨끗히

ls

  • 파일 리스트
  • ls -l 권한까지. 
  • ls -al 숨김처리한거 까지 .앞에 붙은 파일을 모두 숨겼다 취급. 

touch

  • 빈파일 생성
  • 타임스탬프를 현재로 바꿔주는 역할도 수행

mkdir

  • 폴더(root) 생성

alias

  • 앨리어스 위에 기본 명령어를 앨리어스로 설정
  • 사용자 지정 가능. 

mv

  • 파일정보 변경 (이름바꾸기, 파일 위치)

cp

  • 파일 복사(폴더는 불가능)

rm

  • 파일 삭제 (-rf 는 폴더 전체 강제 삭제 <주의>)

top

  • cpu 나 컴퓨터 상태 값. 

htop

  • 프로세스 할당량 확인. 

ps

  • ex) ps -af
  • - pid  확인하여 실행중인 프로세스 보여준다. 강제 종료하거나 너무 리소스를 많이 잡아먹을 때 확인하는 방법 중 하나. 
  • PID (Processor ID)

df

  • 파일 시스템의 디스크 공간에 대한 필수 정보를 표시. 시스템 관리자가 실시간 서버 or 네트워크 지향 시스템을 모니터링하고 분석. 

du (-a all) 

  • 디렉터리나 사용자별 디스크 사용량 확인 시 사용. (특정 디렉터리 별로 사용량을 알려줌)

find | grep [찾을 단어]

  • 파일 검색 시 사용하는 명령어 

man 

  • 메뉴얼 정리 스크립트

which [리눅스 명령어] 

ex) which python3

  • 명령어의 위치를 보여준다. (환경변수 세팅 관련하여 중요한 변수)
  • 실행하는 명령어 위치 보여준다. 

tail

  • ex) tail -f [파일 이름]
  • 파일의 내용을 뒤에서부터 출력. 파이프를 통해서 받은 입력을 출력. 보통 특정 프로세스나 파일의 로그를 볼 때 주로 사용. 

다중 명령어( ||(or), &&(and) )

  • 지정한 어떤 명령어를 동시에 작업

cat 

  • 터미널에서 파일 내용을 볼때, 출력을 다른 도구나 파일로 redirection 하는데 사용함. 
  • ex) cat hello.py
  • ex) cat hello.py | grep "input" -n : "input" 이라는 텍스트가 몇 줄에 있는지 확인. 

[파일 명 및 파일 실행] > ./[새로 만들 파일명].txt

  • 파일 내용 복사나 파일 실행한 결과 값을 txt 파일에 저장. 

awk 

  • 리눅스에서 텍스트를 처리하기 위한 기본 명령어
  • ex) cat python_result.txt | awk  '{print $1 $2;}'

 

apt-get 

  • 필요한 패키지, 프로그램을 설치 할 수 있는 패키지 관리 도구

nohup 

  • 내 스크립트가 터미널을 끄더라도 계속 실행시키고 싶을 때 & 와 함께 백그라운드로 실행

screen (tmux)

  • nohup을 통해 백그라운드로 가버린 프로세스는 다시 볼 수 없지만
  • Screen을 띄워서 실행하면, 해당 세션을 다시 복원할 수 있음

sudo - 해당 명령어에 대해서만 루트 권한을 실행하겠다. 

  • ex) sudo reboot (그때 그때 필요할 때만 root계정을 사용.)

 

vi 편집기 

커맨드 모드에서 i, Editor mode 전환 

Editor mode에서 커맨드 모드 전환 : ESC 

참고 :

hyeonstorage.tistory.com/274

환경 변수

  • echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

 

환경변수 디렉토리

디렉토리 용도 사용권한
/bin 기본적인 명령어 일반 사용자
/sbin 시스템 관리를 위한  슈퍼유저(root)
/usr/bin /bin 있는 명령을 제외한 기본적인 명령어 일반 사용자
/usr/sbin /sbin에 있는 명령을 제외한 시스템 관리르 위한 명령어 슈퍼유저(root)

 

왼쪽으로 갈수록 우선순위가 높으며 발견 즉시 바로 실행. 

local 이면 나만, global 하게 실행하려면 bin/ sbin으로

 

셔뱅

셸 스크립트를 시작할 때 맨 처음에 기입하는 것으로 스크립트를 해석하는 인터프리터를 지정하는 것.

 

참고: soft.plusblog.co.kr/131

- 셔뱅에 인터프리터 경로를 입력하고 난 다음에, 혹은 환경변수에 등록하고 난 이후에 실행 명령이 이루어지지 않는다면 접근권한 변경 (chmod)을 확인해야 한다.

 

셔뱅을 지정한 뒤, 파일 실행방법 :

python3 test.py -> ./test.py (root 지정 필요)

만약 root지정 없이 실행하고 싶다면 환경변수에 지정하고 난 이후 

실행하면 된다. 

변수

주의해야할 점: 변수와 "=" 사이 space 간격을 두지 않는다. (공백 없이 입력해야 함) 

#!/bin/bash

echo $1, $2 # 매개변수
echo $* # 매개변수 전부


VAR1=DDD # 변수 선언
VAR2=AAA

VAR4="DI EFJ" # 띄어쓰기 사용시 큰 따옴표 사용

echo $VAR1, $VAR2, $VAR4 # 변수 사용
echo "VAR1은 ${VAR1} 입니다." # 특수 경우

실행: 
./vtt 123 566 334

결과:
"""
123, 566
123 566 334
DDD, AAA, DI EFJ
VAR1은 DDD 입니다.
"""

선언: VAR=?

사용: $VAR 

 

특수한 경우: ${VAR}

매개변수: $1, $2

  • ALL : $*

조건문

#!/bin/bash

echo $1, $2

if [ ${1} -eq 123 ] ; then 
	echo "VALUE is 123!"
else
	echo "VALUE is not 123!" 
fi 

VAR1=100
VAR2=300

if [ ${VAR1} -gt 50 -a ${VAR2} -gt 150 ] ; then 
	echo "Variable1 is greater than 50 and Variable2 is greater than 150!"
fi 

실행:
./vtt2 1233

결과: 
"""
1233,
VALUE is not 123!
Variable1 is greater than 50 and Variable2 is greater than 150!
"""

* 정수와 문자열의 비교방식이 다름.

if then ~ elif then ~fi

 

정수 -eq, -ne, -gt, -lt, -ge, -le 

문자열 ==, !=, -z, -n

 

괄호를 2개를 넣는다던가 [[]] 

문자열로 인식되도록 변환 하는 방법이 있음. 

반복문

#!/bin/bash

for var in A B C D E
do
        echo var value :$var
        echo "value ${var}"
done

#case 1
list="1 2 3 4 5"
for var in $list
do
        echo var value : $var
done

#case 2
for var2 in [1 2 3 4 5]
do
        echo var2 value : $var2
done

결과 : 
"""
var value :A
value A
var value :B
value B
var value :C
value C
var value :D
value D
var value :E
value E
var value : 1
var value : 2
var value : 3
var value : 4
var value : 5
var2 value : [1
var2 value : 2
var2 value : 3
var2 value : 4
var2 value : 5]
"""

while: 조건에 만족한다면 

for : 지정된 범위 안에서 

break, continue, exit 로제어 

 

유의사항 

  1. space가 필요한 곳은 확실하게 넣어줘야함. 
  2. 중간에 에러가 나도 계속 진행 ( Ctrl + C 활용 ) 

엔터 잘못쳤다가 모두 날려먹을수도 있음. # 줄바꿈에 주의해야함. 

반응형
Comments