리눅스 기초 - 03 알고쓰는 리눅스 명령어

핏자·2023년 5월 17일
0

인공지능사관학교

목록 보기
24/31
post-thumbnail
  • 정규 표현식

- 정규 표현식

정규 표현식(Reqular expression)은 특정한 규칙을 가진
문자열의 집합표현하는데 사용하는 일종의 형식

- 정규 표현식 문법

특정 문자들은 특정한 논리적 관계를 나타내는 기호
이를 제외한 나머지는 일반적인 문자를 뜻함

- 정규식 메타 문자

메타문자의미메타문자의미
^문자열의 시작\d숫자
$문자열의 끝\D숫자가 아닌 것
.하나의 문자와 대응\w알파벳 대소문자, 숫자, 언더스코어(_)
\s공백문자\W\w에 해당하지 않는 글자
\S공백문자가 아닌 것\n개행문자
\ 메타문자를 문자 그대로 사용\t탭(tab) 문자

- 선택 패턴

|문자를 이용하면 A|B의 패턴으로 매칭 가능
예를들어 alicce|elice라는 정규 표현식은
"alice"와 "elice"라는 문자열을 모두 포함한다.
즉, alice 또는 elice 둘 중 하나라는 뜻

[] 대괄호 속에 넣은 문자 중에서 하나에 매칭
[0-9] 0부터 9까지의 숫자 하나에 매칭
[A-Z] A부터 Z까지의 알파벳 대문자 하나에 매칭
[]내에서 ^기호는 not의 의미를 가지게 된다.

- 수량 한정자

수량자의미수량자의미
?0개 또는 1개{n}n개
*0개 이상{n,m}n개 이상, m개 이하
+1개 이상{n,}n개 이상

- 그룹 패턴

() 괄호는 그룹을 나타냄
그룹은 전체 패턴 내에서 하나로 묶여지는 패턴
한 번 생서오딘 그룹은 재사용 가능
만들어진 순서로 1번, 2번, 3번으로 참조 가능
예를 들어 (to)ma\1은 'tomato'와 매칭됨

- 정규 표현식 사용 예

전화번호는 일정한 패턴을 가진 문자열
아래의 조건을 만족하는 전화번호를 찾는 정규 표현식은?

  • 전화번호는 010으로 시작한다.
  • 전화번호의 가운데 자리는 네 자리이다.
  • 전화번호의 각 자리에 구분문자가 있을 수도 있고, 없을 수도 있다.


    정답: ^010(\D?\d{4}){2}
    ^ 시작 문자는 010
    \D? 숫자가 아닌 문자가 0개 이상
    \d{4} 숫자가 4개
    (\D?\d{4}){2} 앞의 그룹이 2개 존재



  • grep

- grep

grep 명령은 파일 내에서 지정한 패턴이나 문자열을 찾은 후에 그 패턴을 포함하고 있는 모든 행을 출력

grep [option] [pattern] [파일명]

  • option
    • -i : 대소문자를 구분하지 않고 검색한다.
    • -v : 패턴과 일치하지 않는 행을 출력한다.
    • -c : 패턴과 일치하는 행의 개수를 출력한다.
    • -w : 패턴과 단어 단위로 매칭되어야 출력한다.

- grep 예시

grep elice hello.txt
hello.txt 파일에서 'elice'라는 문자열이 들어 있는 행을 모두 출력

grep -c elice hello.txt
hello.txt 파일에서 'elice'라는 문자열이 들어 있는 행의 수 출력

- grep과 정규 표현식

grep [0-9] hello.txt
hello.txt 파일에서 숫자가 존재하는 행을 모두 출력
grep "Elice\.the\.Rabbit" *
현재 디렉토리의 모든 파일에서 Elice.The.Rabbit을 찾아 출력
grep -v ^# somecode
somecode 파일에서 #으로 시작하지 않는 행을 모두 출력
grep '\<[a-z].*e\>' elice
elice 파일에서 소문자로 시작하고 공백을 포함한 여러 문자가 나오며, e로 끝나는 단어가 포함된 행으르 모두 출력





  • File Redirection

- File Redirection

File Redirection은 표준 스트림의 흐름을 바꾸어
일반적인 표준 입력 및 출력 그리고 오류를 사용하지 않고
다른 경로인 파일로 재지정하는 것을 뜻합니다

- Standard Stream

일반적으로 표준 입력, 표준 출력, 표준 오류 출력으로 분류
스트림은 문자열로 콘솔에 출력되도록 설정되어 있음
stdin 키보드 입력
stdout 화면 출력
stderr 오류 내용 출력

- File Redirection

ls > ls.txt

> 연산자는 표준 출력을 재지정

ls >> ls.txt

>> 연산자는 파일이 존재하지 않다면 파일을 생성,
존재한다면 파일내용을 지우지 않고 이어서 작성

표준 오류는 연산자를 사용하지 않으며
파일디스크립터 번호를 > 앞에 작성해서 사용
0 표준 입력
1 표준 출력
2 표준 에러

cat < hello.txt > elice.txt
  1. hello.txt의 내용을 cat 명령어의 입력 스트림으로 전송
  2. cat 명령어는 hello.txt파일의 내용을 출력
  3. cat 명령어의 출력 스트림을 elice.txt로 변경
  4. cat 명령어의 출력 스트림은 화면이 아닌 elice.txt에 저장





  • Piping commands

- Linux Pipe

Pipe는 둘 이상의 명령어를 묶어 출력의 결과를
다른 명령으로 전환할 수 있는 기능
명령어의 표준 출력을 또 다른 명령어의 표준 입력으로 연결
| 기호를 사용하여 명령어와 명령어를 연결

head a.txt | grep [0-9]
  1. head 명령을 실행하여 a.txt의 첫 10줄을 출력
  2. 출력된 결과를 |(pipe)를 통해 grep 명령으로 전달
  3. 숫자가 포함된 행을 가진 행의 결과가 모두 출력

- Pipe & Redirection

head a.txt | grep [0-9] > result.txt

File Redirection, Pipe를 조합하여 더욱 다양하고 효율적인 작업을 수행할 수 있다.

ls | grep user01 > output.txt
  1. ls 명령을 실행 (현재 디렉토리의 디렉토리/파일명 출력)
  2. ls 명령의 결과를 입력 값으로 한 grep 명령어 실행
  3. user01이라는 이름을 가진 파일의 결과가 출력
  4. grep 명령어의 출력 스트림은 output.txt에 저장





  • 마운트

- mount

mount란 물리적인 저장 장치(보조기억장치)를 디렉토리(또는 폴더)에 연결시켜주는 것을 말함.

윈도우에서는 하드, USB 등의 보조기억장치를 연결하면 자동으로 폴더(디렉토리)에 연결됨.
이것을 PnP(Plug and play)라고 함.

리눅스의 경우 PnP 기능이 작동하지 않아 직접 연결해야 함.
즉, 보조기억장치를 설치했을시 mount 작업을 해야 사용 가능

mount [option] [device] [directiory]
  • option
    -a : /etc\fstab에 명시된 파일 시스템을 마운트 할 때 사용
    -t : 파일 시스템의 유형을 지정, 생략할 시 /etc/fstab 파일을 참조
    -o : 추가적인 설정을 적용할 때 사용, 다수의 조건을 적용할 때는 콤마(,)로 구분

remount [device] [directiory]

mount를 취소하는 명령어

df

현재 mount 된 디스크 정보 출력

profile
개발자 핏자의 로그들

0개의 댓글