
bash 설명서와 상호작용하기
man 명령을 이용한다. man 페이지를 보면 페이지 섹션 영역에서 1부터 9까지 번호가 붙어있는데,
각 번호가 뜻하는 바는 다음과 같다.

어떤 명령은 여러 섹션에 대한 설명을 가지고 있는데, 이 경우 man 7 hostname과 같이 섹션 번호를 입력한다. 섹션 내용 영역 자체에 대한 안내글은 man 1 intro, man 2 intro와 같은 식으로 입력한다.
사실 대부분의 명령은 -help, --help 옵션이 존재하므로 이를 이용해도 된다.
파일시스템 탐색하기
윈도우와 다르게 리눅스는 드라이브 문자와 path 이름을 사용하지 않는다. 윈도우는 각 물리적 디스크 드라이브에 A, B, C와 같은 문자를 배당하고, 각 드라이브는 그 안에 저장된 파일에 접근하기 위한 자체적인 디렉토리 구조를 포함한다.
리눅스는 가상 디렉토리라고 하는 root라는 단일 디렉토리 안에 파일을 저장한다.
리눅스는 마운트 포인트라는 특수한 디렉토리를 사용할 수 있는데, 마운트 포인트란 가상 디렉토리
안에서 추가 저장장치에 할당할 수 있는 디렉토리이다. 물리적으로 다른 드라이브에 저장된 파일과
디렉토리를 마운트 포인트 디렉토리 안에 표시한다.
리눅스의 디렉토리 구조 및 기능에 대해서는 아래 링크를 참조하자. 공통적인 리눅스 디렉토리의
이름은 파일시스템 계층 표준(FHS)를 준수한다.
디렉토리 둘러보기
cd는 destination 하나만을 인자로 받는데(입력하지 않으면 $HOME으로 이동),
destination 매개변수는 절대 디렉토리/상대 디렉토리 두 가지 방법으로 표현될 수 있다.
절대 디렉토리 참조는 항상 가상 디렉토리 시스템의 루트를 뜻하는 /로 시작한다.
pwd 명령을 통해 현재 작업 디렉토리의 절대 경로를 볼 수 있다.
파일 및 디렉토리 목록 보기
시스템에서 사용할 수 있는 파일, 디렉토리 목록을 보기 위해서는 ls 명령을 사용한다.
파일, 디렉토리 색상을 다르게 표시하는 등 색을 넣기 위해서는 LS_COLORS 환경 변수로 제어한다.
# 디렉토리에 슬래시 붙여서 표시
ls -F
# 숨겨진 파일까지 보기
ls -a
# 재귀적으로 하위 디렉토리 보기
ls -F -R
# 파일의 추가 정보 보기
ls -l
# 합쳐서 보기
ls -alFR
<목록 출력 필터링하기>
# 해당 문자열 가지고 있는 파일 보기
ls -l pattern
# 하나의 문자를 나타내는 ?
ls -l pattern?
# 와일드 카드 *
ls -l pattern*
# 메타 문자 와일드카드
ls -l p{ae}ttern
ls -l p[a-e]ttern
ls -l p[!a]ttern
<파일 다루기, 복사하기>
# 새 파일 만들기
# 또는 파일의 수정 시각을 변경하고 파일 내용은 바꾸지 않음
touch new_file
# 파일 복사하기
cp old_file new_file
# 대상 파일이 이미 존재하는 경우 파일을 overwrite 할것인지 물어봄
cp -i old_file new_file
# 현재 디렉토리로 복사
cp -i /etc/passwd .
# new_dir을 만들고 전체 디렉토리의 내용을 복사
cp -R old_dir/ new_dir
cp 명령을 사용할 때 주의할 점은 존재하는 디렉토리에 파일을 복사할 때
cp old_file /home/user 처럼 /를 붙여주지 않고 user라는 디렉토리가 없을 때 user라는 파일을
새로 만들어버린다는 것이다.
<파일 링크하기>
파일 링크란 시스템에서 같은 파일에 대한 여러 개의 사본을 유지해야 하는 경우 물리적 사본을 만들 필요 없이
하나의 물리적 원본과 여러 개의 가상 사본인 link를 쓸 수 있다.
심볼릭 링크, 하드 링크 두 가지 유형의 파일 링크를 사용할 수 있다.
심볼릭 링크란 가상 디렉토리 구조 어딘가에 있는 다른 파일을 포인팅하는 단순한 물리적 파일이다.
하드 링크는 원본 파일에 대한 정보 및 그 파일에 어디에 있는지를 포함하고 있는 별개의 가상 파일로,
원본 파일과 물리적으로 같은 파일이다. 하드 링크 파일을 참조하는 것은 원본 파일을 참조하는 것과 같다.
# symbolic link
ln -s source dest
# dest -> source
ls -l dest
# inode 번호 보기
ls -i source
ls -i dest
# hard link
ln source dest
# inode 번호 같다.
ls -i source
ls -i dest
<파일 이름 바꾸기>
# 이름 바꾸기
mv file1 file2
# 파일 위치 이동
mv file1 ../
mv는 시각 및 inode 값 모두 변하지 않고 위치와 이름만이 바뀐다.
<파일 지우기>
# -i 옵션: 정말로 지우시겠습니까?
rm -i file1
# 강제제거
rm -f file1
디렉토리 관리하기
<디렉토리 만들고 지우기>
mkdir new_dir
ls -ld new_dir
# 재귀적으로 만들기
mkdir -p new_dir
# 빈 디렉토리만 제거하는 rmdir
rmdir new_dir
rm -ri my_dir
# 강제로 지우기
rm -rf my_dir
파일 내용 보기
<파일 유형 보기>
file my_file
file my_dir
file link_file
file my_script.sh
# 컴파일된 플랫폼 및 필요한 라이브러리를 보여줌
file /bin/ls
<파일 전체 보기>
cat myfile
# 줄 번호
cat -n myfile
# 텍스트가 있는 파일에만 줄 붙이기
cat -b myfile
# 탭 문자 표시하지 않음
cat -T myfile
또는 less, more 명령을 사용할 수도 있다.
<파일 일부보기>
# 마지막 10줄
tail my_file
# 마지막 5줄
tail -n 5 my_file
# 처음 10줄
tail my_file
# 처음 5줄
head -n 5 my_file
'LINUX > 리눅스 쉘 스크립트 바이블 정리' 카테고리의 다른 글
| [리눅스 바이블] 7. 리눅스 파일 사용 권한 이해하기 (0) | 2022.02.09 |
|---|---|
| [리눅스 바이블] 6. 리눅스 환경 변수 사용하기 (0) | 2022.02.06 |
| [리눅스 바이블] 5. 쉘 이해하기 (0) | 2022.02.04 |
| [리눅스 바이블] 4. 더 많은 bash 쉘 명령 (0) | 2022.02.03 |
| [리눅스 바이블] 1. 리눅스 쉘 시작하기 (0) | 2022.02.03 |