오픈소스로 만들어 누구나 코드를 볼 수 있기에 가장 널리 사용되는 운영체제입니다. 개인적인 용도로 주로 사용되는 Windows 시스템이나 application이 아닌 이상, 일반적으로 시스템 서버는 linux 기반으로 운영되고 있습니다. 또한, 개발자용으로 커스터마이징이 용이하기에 주로 개발 직군에서 많이 사용됩니다. 프로그램이 배포되고 동작하게 되는 환경이 바로 Linux OS가 설치된 서버에서 동작하며, 명령어를 전달하는 Terminal이 컨트롤의 수단이 됩니다.
리눅스의 파일시스템 구조는 윈도우즈의 폴더와 비슷한 디렉토리라는 개념으로 계층화되어 있다. Root에서 시작하여 여러 하위 디렉토리들이 있고 계층을 이루며 각 역할을 수행합니다.
디렉토리 경로에는 2가지 유형이 있는데 absolute path와 relative path 입니다.
절대경로는 "완전한"의 의미에 더 가깝습니다.root 디렉토리 부터 시작하는 경로를 뜻합니다. Root 디렉토리에서 부터 시작하기 때문에 현재 나의 위치와 상관 없이 항상 정확히 해당 경로로 이동 할 수 있습니다.
상대경로는 현재 내 위치를 기반으로 움직이는 경로입니다. 중요한 2가지 심볼은 .
과 ..
입니다. .
는 현재 디렉토리로 하위 디렉토리에 접근할 때 사용하며, ..
는 상위 디렉토리로 접근할 때 사용합니다. ../../ 이렇게 되면 두 단계 상위 디렉토리라고 생각하면 됩니다.
리눅스에는 설정을 주로 파일을 통해서 합니다. 그리고 여러 config file, 즉 여러 설정 파일들이 있습니다. shell 설정 파일이 가장 대표적인데 Bash는 .bashrc 라는 설정파일을 사용하고 zsh는 .zshrc 라는 설정 파일을 사용합니다.
Shell 설정 파일을 비롯한 많은 설정 파일들이 대부분 사용자의 home 디렉토리에 있습니다. 일반적으로 보여지지는 않으며 ls -al 명령어를 통하여 해당 디렉토리에 있는 dot(숨김) 파일을 확인이 가능합니다.
설정 파일을 통해 할 수 있는 것들 중 가장 중요한 것은 PATH 환경 변수 설정입니다. 환경은 현재 돌아가고 있는 shell을 뜻하며, 그럼으로 환경 변수란 shell의 어떠한 설정 값을 가지고 있는 변수를 뜻합니다. 그리고 이러한 환경 변수들은 shell이 돌아가는 동안 계속 존재하며 사용됩니다.
- HOME
- 유저의 home 디렉토리 경로를 저장한 환경 변수
- USER
- 유저의 아이디를 저장한 환경 변수
- PATH
- PATH 값을 저장한 환경 번수
echo $HOME
이라고 예를 들면 Home에 관련한 환경변수 값을 출력할 겁니다. HOME 이라는 환경변수를 선언한 적이 없지만 이미 존재하고 있는것을 알 수 있습니다. 그 이유는 환경 변수들은 shell 이 시작할때 이미 자동으로 선언되었기 때문입니다. Shell은 이러한 환경변수 들을 통해 설정이 됩니다.
echo $HOME /home/eun
명령어들을 찾을 수 있는 경로들을 저장해놓은 환경 변수 이다.
echo $PATH /Users/eun/.nvm/versions/node/v15.14.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
여러 경로들을 담고 있으며, 각 경로들을 : 를 사용해서 구분한다.
ls 명령어가 입력되면, shell이 PATH 환경 변수 값에 저장되어 있는 경로들을 맨 왼쪽 경로(1번) 부터 보면서 ls 라는 프로그램을 확인하고 찾으면 실행합니다. ls 의 경우 /bin 에 위치해 있기 때문에로 PATH 값의 7번째 경로에서 찾게 됩니다.
PATH
는 shell 설정 파일에서 설정한다. Zsh의 경우 .zshrc
파일에서 설정하며 다음처럼 설정한다.
export PATH="/home/eun/bin/anaconda3/bin:$PATH"
사용자가 선언하게 되면 $PATH를 선언 하는것이다. 그럼 기존의 PATH 값의 묀 앞쪽에 새로운 경로가 추가가 된다.
Shell에서 ⬆키를 누르면 이전에 입력했던 명령어를 다시 불러낼 수 있다.
Zsh에서 history-substring-search 플러그인을 설치했으면, 입력하고자 하는 명령어 중 일부분을 입력 후 ⬆키를 누르면 입력된 string이 포함된 이전 명령어만 불러낼 수 있다.
명령어 | 용법 |
---|---|
cd | 디렉토리를 변경 |
ls | 현재 디렉토리의 파일 목록을 나열 |
mv | 파일이나 디렉토리를 이동 |
cp | 파일이나 디렉토리를 복사 |
cat | 두 개 이상의 파일을 연결하여 출력 |
less | 파일 내용을 확인, 화면에 보여지는 만큼만 출력 |
rm | 파일이나 디렉토리를 삭제 -rf |
mkdir | 디렉토리를 생성 |
clear | 쉘 창의 기록을 모두 삭제 ( cmd + k ) |
pwd | 현재 작업중인 디렉토리의 절대 경로를 반환 |
chown | 파일이나 디렉토리의 소유권자 및 그룹식별자 변경 |
chmod | 해당 파일이나 디렉토리의 허용 권한 수정 |
grep | 특정 파일 내에서 지정한 패턴을 가진 문자열을 찾고, 해당 문자열을 출력 |
history | 이전에 입력했던 명령어 리스트를 출력 |
| : Pipe 라고 한다. 일반적인 명령어가 아니라 2개의 명령어를 이어주는 역할을 한다. command1 | command2의 경우 command1의 결과값을 command2의 input으로 넘겨준다.
예를 들어, history 명령어는 이제까지 입력한 명령어들을 출력해주는 명령어다. | 을 사용해 grep과 같이 사용하면, history가 출력하는 값들 중 원하는 값만 필터링 할 수 있다.
ex) history | grep ls
명령어를 어떻게 쓰는지 설명해줍니다. tldr(Too long Didn't)입니다. brew 명령어를 통하여 설치하면 요긴하게 쓸 수 있습니다. 자주 사용하는 옵션이나 사용법만 간략히 알려줍니다.
ex) tldr ls