Linux 왕초보를 위한 command - 간단한 Linux 소개
Windows 환경에 익숙한 업무 초년생들이라면 linux 사용이 많이 불편할 수 있지만, 익숙해지면 windows보다 편하고 빠르고 powerful하다는 것을 알 수 있다.
원래는 작년 여름 정도에 시작하려던 포스팅인데 그동안 다사다난한 일들이 있어 미루고 있었던 linux command 들을 업무에 필요한 수준에서 (몇차례에 걸쳐)가볍게 다뤄볼까 한다.
리눅스(Linux)는 **오픈 소스 운영체제(OS)**로, 주로 서버, 개발 환경, 임베디드 시스템, 슈퍼컴퓨터 등에서 널리 사용되는데. 유닉스(Unix) 기반으로 개발되었으며, 강력한 보안성과 안정성을 제공한다.
필자가 신입사원일 때는 사실 Unix로 업무를 시작했었는데, 어느 새 Linux로 모두 대체되었다. 하지만 Linux도 Unix와 command가 거의 동일하기 때문에 둘이 다르다는 것을 거의 인지하지 못할 정도.
그렇다면 Linux의 특징은 어떤 게 있을까?
1. 오픈 소스
누구나 자유롭게 사용하고 수정 가능 (하지만 나는 이쪽 계통의 개발자가 아니므로 패스)
2. 다중 사용자(Multi-user) 지원
하나의 서버에 여러 사용자가 동시에 사용 가능하다.
또한 한 명의 사용자가 여러 서버에 동시에 접속해서 사용하는 것도 가능하고, 하드를 각 서버에 마운트해서 사용하는 것도 가능하다.
3. 다중 작업(Multi-tasking) 지원
여러 프로세스를 동시에 실행 가능하다.
4. 명령줄 인터페이스(CLI) 지원
터미널에서 강력한 명령어 사용 가능.
Linux도 물론 아이콘을 클릭하여 파일을 열거나 할 수 있지만, 기본적으로 터미널이라고 부르는 명령어 입력창을 가지고 작업하게 된다.
5. 체계적인 파일 및 디렉토리
/home, /bin, /etc 등의 표준 디렉토리 구조를 가지고 있다.
Linux의 기본 directory 구조
기본 command를 소개하기 전에 간략한 Linux의 기본 directory 구조를 알면 좋겠다.
Windows에서 폴더라고 부르는 것을 linux에서는 directory라고 부른다.
- / → 최상위(root) 디렉터리
- /home → 일반 사용자 계정 디렉토리
- /bin → 기본 실행 파일(명령어: ls, cp, mv 등)
- /etc → 시스템 설정 파일 (passwd, hosts 등)
- /var → 로그 파일(log), 메일(mail) 등의 데이터 저장
- /dev → 하드웨어 장치 파일 (sda, tty 등)
- /proc → 시스템 및 프로세스 정보 (cpuinfo, meminfo 등)
리눅스의 사용자(user)와 그룹(group)
위에서 잠깐 다뤘듯이 linux는 멀티유저(Multi-user) 운영체제이므로 여러 사용자가 동시에 시스템을 사용할 수 있는데,
이를 관리하기 위해 사용자(User)와 그룹(Group) 개념이 존재한다.
일반 개발 업수 시 linux 사용자는 크게 세 가지 유형으로 나뉘는데, 각 사용자는 다음과 같이 구분할 수 있다.
- 루트 사용자(Root)
- 시스템의 최고 관리자로 모든 권한을 가지며, superuser라고 부른다.
- 일반적으로 root 계정으로 존재하며, superuser가 실행하는 명령어는 sudo 명령어로 실행 가능
- # 프롬프트가 표시됨 (root@linux:~# 형태)
- 일반 사용자(Regular User)
- 보안상의 이유로 일반적으로 사용되는 계정
- 시스템 파일 변경 등 제한된 권한을 가짐
- ~ (홈 디렉토리)를 갖고 있음 (/home/username)
- $ 프롬프트가 표시됨 (user@linux:~$ 형태)
- 시스템 사용자(System User)
- 시스템에서 특정 서비스를 실행하는 데 사용되는 계정
- 예: www-data(웹 서버), mysql(데이터베이스) 등
- 보안 강화를 위해 직접 로그인 불가
그리고 그룹이란 여러 사용자를 하나의 단위로 묶어서 공통된 권한을 부여하는 개념이다.
보통 하는 업무로 나누어서 그룹으로 나누기 때문에 한 사용자가 여러 그룹에 속할 수도 있다.
내 사용자 이름이 무엇인지 알고 싶을 때 사용하는 command :
whoami
사용자 및 그룹 정보를 확인할 때 사용하는 command :
id
위의 두 command를 기본으로 알아두면 나에 대한 정보를 알 수 있다.
Linux에서 가장 기본적인 명령어 열가지를 소개하면서 이번 포스팅은 마무리해야겠다.
1. 디렉토리 목록 보기
명령어 : ls
example:
ls : 현재 directory의 목록 보기
ls -a : 숨김 파일(.으로 시작하는 파일) 목록도 함께 보기
ls ~ : 나의 home directory 의 목록보기
ls /home/user : (절대 경로를 사용하여) /home/user 의 목록보기
ls -t : 현재 directory의 목록을 저장된 시간 순서대로 정렬하여 보기
2. 디렉토리 이동
명령어 : cd
example:
cd directory_name : directory_name으로 이동
cd : 나의 home directory로 이동
cd ~ : 나의 home directory로 이동 cd 와 동일함
cd ~user1 : user1의 home directory로 이동
cd ~user2 : user1의 home directory로 이동
cd / : root directory로 이동
cd /home/user : 절대 경로를 사용하여 이동
cd ../ : hierarchy 바로 위 directory로 이동
cd ../test : hierarchy 바로 위의 test directory로 이동
3. 현재 디렉토리 확인
4.새 디렉토리 만들기
명령어 : mkdir
example :
mkdir new_folder
mkdir -p dir1/dir2 : 하위 directory인 dir2까지 한번에 생성
mkdir {dir1, dir2, dir3} : dir1, dir2, dir3 세 개의 directory를 한번에 생성
5. 파일 또는 디렉토리 삭제
명령어 : rm
example :
rm test : test 파일 삭제
rm -r dir1 : dir1 디렉토리와 내부파일 삭제
주의-> 이렇게 -r option을 주면 강제로 삭제함. -r option을 주지 않으면 파일마다 일일이 삭제 여부를 물어봄
6. 파일 또는 디렉토리 복사
명령어 : cp
example :
cp file1 file2 : file1을 file2로 복사
cp -r dir1 dir2 : dir1을 dir2로 복사 (directory 복사 시 -r 옵션이 필요함)
cp file1 file2 file3 dir1/ : file1, file2, file3을 dir1 directory 아래로 복사
7. 파일 또는 디렉토리 이동 / 이름 변경
명령어 : mv
example :
mv file1 file2 : file1을 file2로 이름변경
mv file1 dir1 : file1을 dir1 directory 아래로 이동
mv file1 file2 file3 dir3 : file1, file2, file3 을 dir1 directory 아래로 이동
8. 파일 내용 보기
명령어 : cat
example :
cat file1 : file1의 내용을 출력
9. 특정 문자열 검색
명령어 : grep
example :
grep "hello" file1 : file1에서 hello 가 포함된 줄 찾이
grep -i "hello" file1 : 대소문자 무시하고 검색
grep -v "hello" file1 : hello가 포함되지 않은 줄을 찾기
10. 파일 검색
명령어 : find
example :
find /home -name "file1" /home 디렉토리에서 file1 찾기
fine . -type f -name "*.log" : 현재 디렉토리 (.) 에서 *.log 파일 찾기