shell command"s"

김동한·2024년 9월 11일
0

CS

목록 보기
8/13
post-thumbnail

기본적인 command's'

명령어기능옵션
man커맨드의 매뉴얼 문서 확인-
mkdir폴더 생성-
ls현재 접근한 폴더 파일확인-a : 전체 파일,폴더 출력 , -l : 권한,소유자,만든날짜,용량 출력 -h : GB, MB표현으로 용량표현
--ls -al , ls -lh, ls ~ (ls 뒤에 경로 적어주면 해당 경로 하위 경로 확인가능) 등으로 사용
pwd현재위치-
cd경로 이동-
echoprint처럼 출력-
echo `pwd```안의 커맨드 결과 출력-
cp파일이나 폴더 복사-r : 디렉토리 복사할때, 그 안의 파일 재귀적으로 모두 복사, -f : 강제로 실행
vivim 편집기로 파일 생성i: INSERT 모드로 바뀌게 파일 수정 가능
--:wq 저장 후 나가기, :q 그냥 나가기 , :wq! 강제로 저장하고 나가기
bash쉘 스크립트 실행-
sudo관리자 권한으로 실행-
mv파일 이동, 이름변경-
cat파일안의 내용 출력cat A > B : 파일 B에 overwrite cat / A >> B : 파일 B에 A를 추가
clear터미널창 지워줌-
history최근에 입력한 쉘 커맨드 이력 출력결과에서 느낌표 붙여 숫자입력하면 해당 커맨드 다시 활용 가능
find파일 및 디렉토리 검색시 사용find . -name "File" : 현재 디렉토리(.)에서 File이라는 이름 가지는 파일이나 디렉토리 검색
export환경 변수 설정vi ~/.bashrc 또는 vi ~/.zshrc 로 실제 사용하는 쉘에 환경변수를 저장할 수 있음
--최하단에 export 변수="값" 으로 저장하고 저장하면 됨
sourcelinux환경설정 재로그인하지않고 즉시적용source ~/.basrhc 또는 vi ~/.zshrc 로 즉시적용할 수 있음
alias현재 별칭으로 설정된 것들을 볼 수 있음뒤에 export처럼 변수명과 '명령어' 지정하게되면 별칭으로 지정할 수 있음

vi 실행시 기본 Mode

  • 방향키 통해서 커서 이동
  • dd : 현재 위치한 줄 삭제
  • i : INSERT 모드로 변경
  • x : 커서가 위치한 곳 글자 1개 삭제
  • yy : 현재 줄을 복사 (ctrl + c)
  • p : 현재 커서가 있는 줄 바로 아래에 붙여넣기
  • k,j,l,h : ↑ ,↓ ,→ ,←

기본 Mode에서 i 누른 INSERT MODE

  • 자유롭게 파일 수정 후 ESC를 누르면 됨

ESC 누른 후 Last Line Mode

최초의 기본 Mode와 동일하다고 볼 수 있다.

  • /문자 : 문자 탐색
    • 탐색 후 n누르면 문서 하단에서 계속 반복 탐색
  • w : 현재 파일명으로 저장
  • q : vi 종료
  • q! : vi 강제 종료
  • wq : vi 저장 종료

유용한 command's'

tree

(sudo) apt-get install tree
  • linux환경에서 설치하여 사용가능
  • 폴더의 하위 구조를 계층적으로 표현할때 사용.
  • 프로젝트 소개시 구조 설명에 유용
tree -L
tree -L 1
tree -L 2

level에 맞게 depth 설정해서 출력해줌

head,tail

head -n 3 vi-test.sh
  • cat으로 모든 내용 출력해보는 것이 아니라 앞에서부터 몇행만 보고싶을때 혹은 뒤에서부터 몇행만 보고싶을때 사용함.

sort

-r : 내림차순 정렬 (default : 오름차순)
-n : Numeric Sort

cat fruits.txt | sort

uniq

중복된 행이 연속으로 있는 경우 제거한다. 따라서, sort를 통해 중복된것을 연속으로 있게 한 이후에 uniq으로 제거한다.
-c : 중복 행의 개수 출력

cat fruits.txt|uniq
cat fruits.txt|sort|uniq

cat fruits.txt|sort|uniq | wc -l (wc -l은 출력 결과물이 몇줄인지 출력한다)

grep

파일에서 주어진 패턴 목록과 매칭되는 라인 검색
-i : 대소문자 구분없이
-w : 정확한 단어만 찾기
-v : 특정 패턴 제외한 결과 출력
-E : 정규표현식 사용

grep은 pipe(|)와 같이 사용되고 한다. 정규표현식에 대한 링크는 위에 옵션 -E에 걸어뒀다.

cut

파일에서 특정 필드를 추출할때 사용한다.
-f : 잘라낼 필드 지정
-d : 필드 구분하는 구분자 (default : \t)

cat A | cut -d : -f 1,7

A 문서에서 :를 기준으로 자른 값들 중, 1번째와 7번째 값을 가져온다.

awk

텍스트 처리 도구
특정 pattern을 지정하고, 해당 pattern에 action을 수행한다.

awk 'pattern {action}' input_file

$1,$2 : 구분자 기준으로 나눴을때 첫번째 field, 두번째 field를 의미한다.

-F : 구분자에 대한 옵션이다

awk -F : '{print $1}' cut_file

cut_file이라는 파일을 :를 기준으로 나누고, 첫번째 field를 출력한다.

표준 스트림
Unix에서 동작하는 프로그램은 command 실행시 3개의 stream이 생성된다. 이는 아래와 같다.

Redirection

redirection은 프로그램의 출력 (stdout)을 다른 파일이나 스트림에 전달하는 것이다.

> : 덮어쓰기, 파일이 없으면 생성후 저장
>> : 맨 아래에 해당 내용 추가하기

이전에 예시로 있었던 cat참고

python train.py > log_file 2>&1 &

위의 명령어는 redirection을 응용한 명령어이다. 차례로 따져보면, train.py를 실행하고 해당 결과를 log_file에 저장하며, stderr(2)에 해당하는 오류발생 메시지를 stdout(1)로 리다이렉트하여 백그라운드에서 (&) 실행한다는 것을 의미한다.

Pipe

pipe는 프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하고 싶은 경우 사용한다.

ls | grep "vi"

현재 폴더 경로(ls)에서 "vi"라는 이름을 가진 파일이나 폴더를 찾는 것을 pipe를 통해 한번에 실행할 수 있다.

PS

현재 실행되고 있는 process status를 출력한다. 실행하고 있는 PID를 찾기 위해서 활용한다.
-e : 모든 프로세스
-f : Full Format으로 자세히 보여줌

curl

command line 기반 data transfer command이다. Client URL
Request를 테스트할 수 있는 명령어로 서버가 제대로 작동하는지 확인할 수 있다.

curl -X localhost:5000/ {data}

df

현재 사용중이 disk 용량 상태를 확인해준다.
-h : 사람이 읽기 쉬운 형태로 출력해준다.
disk가 꽉 차있으면 멈추게 된다.

ssh

ssh는 안전하게 원격으로 컴퓨터에 접속하고 명령을 실행할 수 있는 프로토콜이다.

  1. 보안
  • client/server 통신을 암호화해서 데이터를 안전하게 전송할 수 있다.
  • 도청 같은 보안 위협에서 데이터를 보호할 수 있다.
  1. 원격접속
  • 물리적으로 떨어진 서버에 접속할 수 있다.
  1. 터널링(포트 포워딩) 가능하다
  • 회사에서는 대부분 사설망(private network)를 이용한다.
  • 방화벽이 존재하게 된다.
  • 접근이 제한될 수 있어서 ssh 서버를 만들어서 그 ssh 서버와 실제 server와 터널로 연결한다
ssh -L 8080:localhost:30952 사용자명@SSH_서버

위의 명령어를 예시로 터널링을 진행할 수 있다.
1. 명령어 실행시킨 컴퓨터의 8080포트 오픈
2. 8080포트로 들어오는 트래픽은 SSH 터널을 통해서
3. SSH 서버의 3095 포트로 전달됨
4. localhot:8080에 접속하게 되면 SSH 서버의 30952 포트에 접속하게됨

ssh -i /private-key.pem의 경로/username@hostname(ip) -p portnum

위의 명령어로 접근하게 된다. private key의 local에서의 파일 경로를 넣어주고, username에는 root나 아니면 사용자의 이름, 그리고 hostname은 서버의 ip 그리고 -p 이후엔 server와 연결할 port번호를 입력해준다.

scp

ssh를 이용해서 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어이다. Secure Copy를 의미한다.
-r : 재귀적으로 복사
-P : ssh 포트 지정
-i : ssh 설정을 활용해 실행

  • local에 있는 파일을 remote장소로 옮기게 될때
scp local_path user@ip:remote_directory

내 컴퓨터에서 서버로 데이터를 보내게된다.

  • remote장소에서 local로 파일을 불러올때
scp user@ip:remote_directory local_path

remote directory에서 내 컴퓨터로 파일을 보낼 수 있다.

  • remote 장소에서 remote장소로 파일을 옮길때
scp user@ip:remote_directory user2@ip2:target_remote_directory

nohup

terminal이 종료된 이후에도 백그라운드로 작업이 유지되어 실행될 수 있게 해주는 명령어이다.

nohup python3 app.py &

nohup으로 실행하는 파일의 권한은 755여야한다.

만약 백그라운드로 실행되는 파일을 종료시키고 싶다면,

ps ef | grep app.py

를 실행하여, ps ef로 나오는 pid 중 app.py의 pid를 찾아

kill -9 pid

위의 명령어로 pid를 종료할 수 있다. 종료된 app.py의 로그는 nuhup.out에 저장된다.

chmod

파일의 권한을 변경하는 경우 사용한다.

r= Read 4
w= Write 2
x= eXecute 1
-= denied

r-x →Read,eXecute : 가능 Write : 불가능 (4+1=5)

755 권한 →7/5/5 의미하고 각각 소유자 권한/ 그룹 권한 / 기타 사용자 권한 으로 이루어져있다. 즉, 755 권한은 소유자는 모든권한이 주어지고 그룹,기타 사용자는 읽고 사용하는 것만 가능한 것이다.

chmod 755 test.sh

이렇게 변경할 수 있다.

profile
(●'◡'●)

0개의 댓글