개발자 연쨘

[한화시스템 BEYOND SW캠프_5기_2일차] 리눅스 02 본문

스터디/한화시스템 BEYOND SW 부트캠프

[한화시스템 BEYOND SW캠프_5기_2일차] 리눅스 02

연쨘 2024. 1. 9. 18:34

 

 🐰 오늘 배운것 🐰

  • IO Redirect
  • 쉘 스크립트
  • 권한 -> 이부분은 복습 다시하기
  • 파일 압축
  • 정규표현식
  • 쉘 스크립트(변수선언 조건 분기)

 

자바는 압축 파일 형태로 제공이 된다 -> jar 파일
파일에 대한 입출력이 이뤄진다.

jar : 객체지향으로 이루어진 파일

 

IO Redirect

IO 라는게 붙어있으면 인풋과 아웃풋이 붙어있는것.

Redirect → 재지정해주는것

 

리눅스 인풋 → 키보드
리눅스 아웃풋 → 모니터

 

IO Redirect : Input /Output 의 재방향
즉, 입력과 출력의 기본적인 방향을 바꾸는 작업

 

 

🐇💭  리다이렉트를 할 때는 아래와 같이 “>”를 써서 해주면 된다.

$ ls -l > redirect.txt

 

 

리다이렉트 실전으로 해보기!

리다이렉트 사용전.

 

$ ls -l > redirect.txt 를 사용해서 리다이렉션하고

$ls -l 해보면 리다이렉션한 redirect.txt에 파일 용량이 있는게 확인된다.

 

cat을 이용해 redirext.txt를 출력한다.

 

리다이렉션에서 1> 과 2>
  - 일반 출력은 1>
  - 에러 출력은 2>
원래 에러파일 아닌건 1>이 생략되있다.

 

2> 를 써줘서 에러출력을 해줘야한다.

 

$ cat error.log로 error.log를 보여주고

$ rm test.txt 2> error.log 해서 에로 출력을 해준다.

→ 제공한 명령어인 $ rm test.txt 2> error.logtest.txt 파일을 삭제하고 명령어 실행 중에 발생할 수 있는
모든 오류 메시지를 error.log라는 파일로 리다이렉트하는 것

  • rm test.txt: test.txt 파일을 제거(삭제)
  • 2> error.log: 표준 오류 (파일 디스크립터 2)를 error.log 파일로 리다이렉트, 이는 rm 명령어 실행 중에
    발생한 모든 오류 메시지가 터미널에 표시되는 대신 error.log 파일에 기록되도록 하는 것

 

오류를 일부로 내주고 $ nano error.log로 확인해주면

nano 창에서 error내용을 확인할 수 있다.

 

반대로 파일의 내용을 입력값으로 하여 표준출력 할 수 있을까?

기호가 “<” 반대로 들어간다.

 


쉘 스크립트
(변수선언 조건 분기)

 

쉘 스크립트
   → 쉘스크립트는 programming language이다.

   → 명령어들을 만들어서 특정 동작을 해주게 하는것.

 

쉘이다르다는건 명령어가 다르다는것이다.

인스톨해서 쉘을 바꿔주면돼! (sudo)

 

🐰 그렇다면 sudo라는 명령어를 왜쓸까 -?

  사용자는 작업의 권한을 갖을 수 없다.

  이러한 권한은 슈퍼관리자인 root만 가지고 있다.

  sudo는 root의 권한을 잠시 빌려쓴다는 의미 atp를 이용해 인스톨을 진행하는것이다.

 

쉘도 하나의 라이브러리이다.

커널은 하나이고 커널은 쉘을 감싸준다.

 

script 디렉토리 생성한다면?

$ mkdir script → 스크립트 파일 생성

pwd 명령어로 위치 늘 확인해보기 ! 

 

1. $ cd script로 script로 이동해준다.
2. $ touch로 빈 파일 생성 → $ touch a.log b.log c.log → 이렇게 다 .log라면 cp * .log 이렇게 사용할 수 있다.

3. $ mkdir backup 백업파일 만들기

 

3개의 로그파일을 backup 디렉토리에 카피 !

$ cp * .log ⇒ .log파일의 모든걸 의미

 

문제점과 해결방안! 

문제점 : 방금 log파일 만들어지고 그러면 log파일이 만들어지고 또 카피를하고…
이런작업을 늘 하기엔 불편하다 이럴 때

해결 방법 : 쉘 스크립트를 이용해서 코드 절차를 정의하고 이러한 절차를 재사용하는 것.

 


 

echo를 이용해 내용을 출력해보기

$ echo ‘hi’를 써서 hi출력

$ echo $0을 사용해서 우리가 무슨 쉘을 사용하는지 확인할 수 있다.

 

$ ls /bin을 사용해서 목록을 살펴보면

bin에 bash가 있는걸 확인할 수 있다.

.sh붙여도 되고 안붙여도돼

 

nano를 사용해서 backup.sh를 접근!

 

#! /bin/bash

디렉토리에서 스크립트를 실행 시킬때 코드들을 인터프리터 해야하는데

bin 디렉토리에 bash가 있었고,  bash쉘을 이용해서 이용을 하겠다는 의미

*여기서 #은 주석을 의미한다.

 

if 만약에 ~! 써줘야하는데 이 if에 조건쓸땐 대괄호를 써줘야 한다.

대괄호 안쪽에 양옆 띄어쓰기 필수!

 

! ⇒ 부정의 의미

backup이라는 파일이 없다면 then이라는 파일을 만들겠다는의미

 

소유자 - 소유자가 속한 그룹 - other

read와 write 권한 - read와 write 권한 - read 권한

 

$ chmod

u ⇒ 소유자
o ⇒ 유저

$ chmode u + x (u는 유저라는 뜻이다 excute 권한 주는거)
$ chmode u - x (excute 권한 빼는거)

 

권한 ?

권한의 대상이 되는 것은 뭘까? ⇒ 파일, 디렉토리

파일, 디렉토리에 대한 쓰기, 읽기, 실행 권한을 지정할 수 있어야 한다.

권한의 이해를 한다.

 

새로운 계정을 만들어본다. =>  $ sudo adduser test

 $ sudo adduser test를 사용해서 test라는 계정을 만들어 준다.

새로운 윈도우로 터미널 하나 더 열어서 확인해보기!

한쪽은 원래계정 다른 한쪽은 test계정으로 만들것이다.

 

계정 변경을 하고 싶다면 su 라는 명령어를 이용
계정 변경 → su
$ sudo ⇒ root의 권한 빌려오기
$ sudo su - test ⇒ 계정으로 바꾸겠다.

 

test 계정 !

 

$ whoami로 뭔지 확인해보면
한쪽은 cyj라는 원래 내계정
한쪽은 방금 생성한 test라는 계정이 접속되었다!

 

아이디 확인했을 때 test랑 아이디 등 다른거 확인.

 

변수

변수 (Variable) : 데이터를 담는 그릇

 

연산자

expr : 숫자 계산, 특수문자가 필요하다면 \(\)\

연산자와 숫자, 변수, 기호 사이에는 반드시 space가 들어가야한다.

num = `expr \(3\ *10\)`/4+7

 

조건문 == 분기문

if [조건]

then

    명령문

fi

 

if [조건]

명령문(조건이 참일 때)

else

명령문(조건이 거짓일 때)

fi

 

 

비교연산(수치) - html, xml

값 -eq 값 ==

값 -nq 값 !=

값 -lt 값 <

값 -gt 값 >

값 -le 값 <=

값 -ge 값 >=

 

 

비교연산 "값 -eq 값 ==" 사용해보자!

 

파일 압축

리눅스에서 파일 압축은 동시에 묶고 압축하는 방식이 아니다.

 

묶는다 (= archive) ⇒ 파일의 사이즈가 줄어드는 것이 아니다.

-.tar

$ tar -cvf test.tar a.txt b.txt c.txt

 

 

압축한다(= compress)

-.tar.gz

$ compress

.tar.Z

compress가 설치가 안되있어서

sudo로 슈퍼권한 줘서 ncompres 다운로드 !

 

compress 명령어로 압축하기!

 

 

이렇게 아카이브랑 압축하기를 따로 해줄수도 있지만! 
한번에 하는방법도 있다. 이렇게 하는게 좀 더 성능이 좋다고 한다!

$ tar -czvf encore.tar.gz a.txt b.txt c.txt

 

 

정규표현식
  • 특정 패턴을 찾을 때 사용하는것.
  • 파일 문자열이 있고 해당 패턴에 만족하는 문자열을 검색하고자 할 때
    정규표현식을 알아야한다

기본패턴

  • . : 임의의 하나의 문자
  • ^ : 문자열의 시작
  • $ : 문자열의 끝 ***** : 앞의 문자가 0회 이상 반복되는 패턴 (안나올수도있음)
  • + : 앞의 문자가 1회 이상 반복되는 패턴 (반드시 1번은 나와야한다.)
  • ? : 앞의 문자가 0회 또는 1회 나타나는 패턴
  • [abc] ⇒ a또는 b또는 c

 

정규표현식에서 사용되는 명령어는?!

   $ grep

    ㄴ (전역해서 정규표현식을 찾아서 프린트 해달라는것이다.)

 

 

$ grep ‘h.t’ encore_re.txt

. 을 이용해서 임의의 문자 하나를 의미한다.

 

 

$ grep ‘h*t’ encore_re.txt t앞에있는게 없어도 되고 있어도되고! 0회이상 반복

 

 

$ grep ‘ho*t’ encore_re.txt ⇒ t앞에있는게 없어도 되고 있어도되고! 0회이상 반복

⇒ hot

 

 

$grep ‘h*t’ encore_re.txt t앞에있는게 없어도 되고 있어도되고! 0회이상 반복

 

 

$ grep 'h[aei]t' encore_re.txt[ ]안에 있는건 or조건

 

 

$ grep 'h[^aei]t' encore_re.txt [^aei]이면 일치하지 않은것. aei가 안들어가는거!

 

 

$ grep ‘^ha’ encore_re.txt  ⇒  "^"를 사용해서 ha로 시작하는거 찾기

 

 

$ grep ‘at$’ encore_re.txt

($는 뒤에 들어가는것이다.)

$를 사용하여 문자열 끝 찾기.

 

728x90