'리눅스 커맨드 라인 완벽 인문서'의 내용을 정리하였습니다.
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)를 할당받는다. 그 후 다른 그룹에 또 속할 수 있다.
읽기, 쓰기, 실행
맨 앞 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 사용자(사용자 입력 안 할 시 현재 사용자)
'Linux' 카테고리의 다른 글
[리눅스 커맨드라인] Part1. Shell 학습 - 4 (0) | 2021.01.31 |
---|---|
[리눅스 커맨드라인] Part1. Shell 학습 - 2 (0) | 2021.01.23 |
[리눅스 커맨드라인] Part1. Shell 학습 - 1 (0) | 2021.01.21 |
[Linux 기초] 생활 코딩 Linux 강의 정리 4 (0) | 2021.01.13 |
[Linux 기초] 생활 코딩 Linux 강의 정리 3 (0) | 2021.01.13 |
댓글