LINUX/리눅스 쉘 스크립트 바이블 정리

[리눅스 바이블] 3. 기본 bash 쉘 명령

은재정 2022. 2. 3. 21:30

 

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