본문 바로가기
Linux

[리눅스 커맨드라인] Part1. Shell 학습 - 3

by _avocado_ 2021. 1. 27.
'리눅스 커맨드 라인 완벽 인문서'의 내용을 정리하였습니다.

7장. 확장과 인용

확장: 명령어를 수행하기전 명령 텍스트에 작용하는 프로세스

 

ex) 와일드카드 *은 모든 문자열을 의미한다. 명령어에 *이 있다면 명령 수행전 *이 모든 문자열을 나타낸다는 프로세스를 먼저 진행한다.

 

경로명 확장

 

- 와일드 카드처럼(*) 작동하는 방식을 경로명 확장이라고 한다.

- ex) *.log -> 확장자가 log인 모든 파일을 나타냄

 

● echo: 입력된 텍스트 라인을 표시한다.

echo 사용법

echo 문자열: 문자열을 출력한다.


# 경로명 확장과 함께

echo *: 현재 디렉터리의 모든 항목을 출력한다. (ls)

echo /usr/*/share : usr 디렉터리 안에 모든 디텍토리중 share를 갖는 경로를 표시함

틸드(~) 확장

 

~: 홈디렉토리를 나타낸다.

 

~유저 이름: 특정 유저의 홈 디렉터리를 의미한다.

 

산술 확장

 

$((계산식)): 계산을 수행한다.

연산자 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기 (결과는 정수로만 나타날 수 있다.) 
% 나머지 값을 반환한다.
** 거듭제곱

 

중괄호확장

 

연속된 패턴의 경우의 수를 모두 만든다.

 

{A, B, C} = A, B, C를 반환

 

중괄호 확장 예시

A_{1, 2, 3}_B : A_1_B, A_2_B, A_3_B

{1.. 10} : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

{Z.. A} : Z, Y, X, W, ~ , A

▶ number_1~5 폴더 만들기

mkdir number_{1.. 5}

▶ 2019년 01월부터 2020년 12월까지  폴더 만들기

mkdir {2019.. 2020}-{01.. 12}

 

매개변수 확장 (자세한 내용은 뒤에 나온답니다.)

 

- 데이터를 특정 변수에 저장하여 사용할 수 있다.

 

- ex) 환경변수 = $PATH, 유저 = $USER

 

● 사용 가능한 매개변수 조회: printenv

 

 명령어 치환

 

- 명령어의 결과를 인자로 입력할 때 사용한다.

 

- $(명령문)

명령어 치환 사용 예시

● cp의 위치와 정보를 알고 싶을 때

ls -l $(which cp) : $() 안의 결과를 ls 명령의 인자로 입력한 결과

 

큰따옴표 사용

 

- 문장 안에 표현을 그대로 사용하고 싶을 때 사용한다.

 

- 띄어쓰기, 경로 확장, 틸드(~), 괄호 확장을 있는 그대로 사용한다.  (확장 프로세스가 적용되지 않는다.)

 

-

$, \ 가 들어가는 매개변수 확장, 산술 확장, 명령어 치환은 프로세스가 작동한다.

 

큰따옴표 사용 예시

▶ 파일 이름에 띄어쓰기(공백)가 존재할 때 (two word.txt)

ls two word.txt -> two라는 파일과 word.txt 파일을 찾는다.
ls "two word.txt" -> 파일명이 two word.txt인 파일을 찾는다.

▶ $ 사용하기

echo "$((2+2)) $(cal)" : 4와 달력을 반환한다.

# 특이한 결과

echo $(cal)과 echo "$(cal)"은 결과가 다르다. (앞은 문자열로 쭉~, 뒤는 달력의 모양을 유지한다. 해보자!)

 

따옴표 사용

 

- 큰따옴표와 비슷, 모든 확장을 허용하지 않는다. (매개변수, 산술 변수, 명령어 치환)

▶ echo '$((2+2))' -> $((2+2))

 

이스케이프 문자

 

- 문장 or 파일명 등에 [$,!, &, (공백), 등]을 사용하고 싶을 때 앞에 \를 붙여준다. (""와 사용할 때)

▶ echo "\$5.00 $(cal)" -> $5.00 달력 : 앞의 $는 문자로 인식하고 뒤에 $는 명령어 치환으로 작동한다.

 

제어 코드

 

- echo -e 또는 $' '와 함께 사용 가능하다.

제어 코드 설명
\a 알람 벨을 울린다.
\b 백스페이스
\n 줄 바꿈
\r 캐리지 리턴
\t
제어코드 사용 예시

▶ 10초 후에 알람 울리기

sleep 10; echo -e "Time's up\a": 10초 기다리는 명령어; Time's up을 출력하고 알람을 울림

8장 고급 키보드 기법

- 터미널 단축키들이 적혀있다. 건너뛴다.


9장 퍼미션(권한)

- 멀티유저, 멀티태스킹 시스템을 갖는 리눅스에서 각각의 사용자를 보호하는 방법

9장 주요 명령어

- id: 사용자 ID 기본정보를 표시한다.
- chmod: 파일 모드를 변경한다.
- umask: 기본 파일의 퍼미션을 설정한다.
- su: 다른 사용자로 쉘을 실행한다. (사용자 전환)
- sudo: 관리자의 권한으로 명령어를 실행한다.
- chown: 파일 소유자를 변경한다.
- chgrp: 파일 그룹 소유자를 변경한다.
- passwd: 사용자 비밀번호를 변경한다.

 

소유자, 그룹 멤버, 기타 사용자

 

1. 사용자는 파일디렉터리를 소유할 수 있다.

     - 소유자는 소유물에 대한 접근을 제어할 수 있다.

 

2. 사용자는 한 명 이상으로 구성된 그룹에 속할 수 있다.

     - 같은 그룹은 그 소유자에 의해 접근 권한을 부여받는다.

     - 한 파일, 디렉터리에 대해 소유자, 그룹, 기타 사용자가 각각 접근 권한을 부여받는다.

 

3. 사용자는 사용자 ID(uid) 번호를 할당받는다.

 

4. 주 그룹 ID(gid)를 할당받는다. 그 후 다른 그룹에 또 속할 수 있다.

 

 

읽기, 쓰기, 실행

 

위 그림은 ls -l을 통해 file type을 조회한 결과다.

맨 앞 10자리(drwxr-xr-x)에서 첫자리는 파일의 종류를 뒤 9자리는 파일 모드를 나타낸다.

 

파일 모드(9자리)에서 각 3자리소유자, 소유 그룹, 기타 사용자의 퍼미션을 의미한다.

 

파일 종류

속성 파일 종류
- 일반 파일
d 디렉토리
l 심볼릭 링크, 파일 속성은 항상 rwxrwxrwx를 갖는다.
실제 파일의 속성은 링크가 가리키는 파일에서 확인가능하다.
c 문자 특수 파일, 이 파일의 종류는 터미널이나 모뎀같은
바이트의 열로 데이터를 처리하는 디바이스를 나타낸다.
b 블록 특수 파일, 하드 드라이브나 CD-ROM같은
블록 단위 데이터를 처리하는 디바이스를 나타낸다.

 

퍼미션 속성(파일 모드)

속성 파일 디렉토리
r 파일의 열기와 읽기를 허용 실행속성(x)가 설정되어 있으면
디렉토리의 내용물 나열을 허용
w 파일 쓰기, 잘라내기 허용
단, 파일명 변경이나 삭제는 허용하지 않는다.
파일명 변경과 삭제는 디렉토리 권한에 따라 결정
실행속성(x)가 설정되어 있으면 디렉토리 내
파일들을 생성, 삭제, 이름 변경을 허용
x 파일이 프로그램으로 처리되고 실행을 허용
스크립트 언어레서 작성된 프로그램 파일들은
읽기 기능으로 설정되어 있어야만 실행 가능하다.
디렉토리에 들어올 수 있도록 허용한다.

 

● 퍼미션 예시
파일 모드 설명
-rwx------ 일반 파일, 소유자만 읽기, 쓰기, 실행권한이 있다. 다른 사용자는 아무도 접근할 수 없다.
-rwxr-xr-- 일반 파일, 소유자는 읽기, 쓰기, 실행 가능, 그룹 멤버는 읽기, 실행 가능, 기타 사용자는 읽기만 가능
drwxrwx--- 디렉토리, 소유자와 소유 그룹은 디렉토리로 들어갈 수 있고 안에 파일들을 생성, 삭제, 변경, 이름 변경이 가능

 

파일 모드 변경하기

 

● chmod 권한 설정 파일 이름

 

권한 설정 방법 1. 8진법 표현

8진법 2진법 파일모드
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx
8진법을 사용한 권한 변경 예시
    - 소유자, 소유 그룹, 기타 사용자에 대한 권한을 순서대로 입력한다.

chmod 754 file.txt -> 소유자는 7(rwx), 소유 그룹은 5(r-x), 기타 사용자는 4(r--)의 권한을 갖는다. file.txt에 대해

 

권한 설정 방법 2. 기호 표현 (+,-,=을 이용한다.)

기호 의미
u 소유자
g 소유 그룹
o 기타 사용자
a 모든 사용자
기호 표현을 사용한 권한 변경 예시
    -
권한을 부여하기(+), 권한 뺏기(-), 권한 지정(=)을 이용하여 설정한다.

chmod u+x 파일명: 소유자에게 실행 권한 부여

chmod g=rw 파일명: 소유 그룹에게 읽기, 쓰기 권한을 갖도록 함(실행 권한은 없다.)

# 한 번에 여러 개 변경하기
chmod g=rw, o-r 파일명: 소유 그룹에게 rw- 권한 부여, 기타 사용자에게 읽기 권한 뺏기

 

기본 권한 설정

 

● umask: 기본 권한 설정 확인하기

 

● umask????: 입력한 조건으로 기본 권한 변경

 

mask 기본 설정 종류(흔한)

0002 -rw-rw-r--
0022 -rw-r--r--

- 마스크를 사용하지 않으면(0000일 경우) 모든 사용자가 rw- 권한을 갖는다.

 

- 마스크 4자리 수에서 두 번째 숫자부터 사용자, 그룹, 기타 사용자에 대한 필터를 작용한다.

 

- 2(2진법으로 010) 이면 w 권한을 뺏는다.(설정을 4로 할 경우 4(2진법으로 100)에 해당하는 r을 뺐는다.)

 

사용자 ID 변경하기(사용자 전환)

 

● su 사용자 1: 현재 디렉토리를 유지하고 사용자 1로 변경

 

● su - 사용자 1: 사용자1로 변경하면서 사용자 1의 홈디렉토리로 이동

 

● su 사용자1 -c '명령어': 사용자1의 권한으로 뒤에 명령어를 실행한다. ( ' ' 필요)

 

● exit로 나올 수 있다. (이전 사용자 상태로 나온다.)

 

슈퍼유저 권한으로 실행하기

 

-

sudo를

맨 앞에 붙여 슈퍼유저의 권한으로 실행 가능하다. password 필요

 

파일 소유자와 그룹 변경(슈퍼유저만 가능)

 

chown 소유자:그룹 파일 이름

chown 사용 예시

chown A file : file의 소유자를 A로 변경

chown :B file : file의 소유 그룹을 B로 변경


chown A:B file : file의 소유자를 A로, 소유 그룹을 B로 변경

● chgrp : 소유 그룹을 변경

 

사용자 비밀번호 변경

 

● passwd 사용자(사용자 입력 안 할 시 현재 사용자)

댓글