내가 쓰려고 정리해둔 리눅스 명령어
궈여운 리눅스 펭권
0. basics
- echo '~~' : echo 뒤의 문자를 표준 출력
- echo $SHELL : shell의 기본 주소를 확인하는 방법
- clear : 터미널 지워짐.
- vim ~/.bashrc : bashrc 수정
- cat [파일] : 파일 내 정보를 출력
1. 디렉토리와 파일
- ls : 파일 목록 확인
- ls-al : 디렉토리에 있는 파일의 목록
- pwd : 현재 어떤 디렉토리에 위치하고 있는 지 확인
- mkdir [name] : 현재 디렉토리에서 폴더 생성
- mkdir -p [dir1/dir2/dir3/dir4] : 위의 부모 디렉토리를 생성한다.
- touch [name][확장자]: 비어있는 파일 만들기
- ls -l : 현재 위치의 디렉토리 내부 파일 및 세부사항을 확인 (ll과 동일)
- cd [dir] : 위치 이동
- cd .. : 상위 디렉토리로 이동
- rm [file_name] : 파일 삭제
- rm -r(rf) [dir_name] : 디렉토리 삭제
2. help, man
- [명령어] --help : 명령어에 대한 도움말 확인
- man [명령어] : 명령어에 대한 상세 도움말 확인
3. sudo (super user do)
- 하나의 운영체제를 여러 사람들이 사용하는 초기의 체계에서는 시스템 관리를 위해서 각각 사용자의 권한을 주었다.
- 그때 사용된 것이 root / super user이다.
- permission이 없다고 나오면 sudo를 앞에 붙여주거나
- su로 로그인 한 후 실행한다.
4. nano editor
- 파일에 정보를 저장하는 것. (nano or vim)
5. 패키지 매니저
- sudo apt-get update : 인터넷을 통해서 apt 최신상태의 목록을 다운로드 받는다.
- sudo apt-cache search [패키지명] : 패키지에 관련된 내용을 서치한다.
- sudo apt-get install [패키지명] : 패키지 설치
- sudo apt-get upgrade [패키지명] : 패키지 업그레이드
- sudo apt-get upgrade : 설치된 프로그램 다 업그레이드
- sudo apt-get remove [패키지명] : 패키지 삭제
- ex) sudo apt-get insall git
- wget 관련
- wget [url] : url 파일 다운로드
- wget -O [name.확장자] [url] : 이름 설정하여 파일 다운로드
6. I/O Redirection (Input/output 방향 변경)
- ex) ls -l > result.txt : ls -l의 실행 결과를 result.txt라는 파일 안에 저장한다.
- ">" : 출력되는 방향을 다른 곳으로 설정한다.
- ls -l 1> result.txt : standard output의 경우의 출력 결과를 저장
- rm result.txt 2> error.txt : 에러가 난 경우의 출력 결과를 저장
- rm result.txt 2>&1 error.txt : 에러를 표준 출력으로 해서 저장.
7. shell / Kernel
- hardware < kernel < shell < App / utility < Terminals, disk
- shell은 kernel에 명령어를 전달하는 것이며, kernel은 hardware를 제어한다. kernel은 제어가 힘들기 때문에 shell을 사용해서 제어한다.
7-1. shell script
- #!/bin/bash : 밑에 작성된 내용들이 /bin/bash에 의해서 실행된다고 이해하면 된다.
- cf) if [ -d bak ]; then : bak가 존재하는가?
8. 디렉토리 구조
- / : 최상위 디렉토리 (root)
- /bin : 실행 가능한 프로그램 - 사용자들이 사용하는 명령들 (User binaries)
- /sbin : 시스템 관련 - 재부팅 같은 것, (System Binaries)
- /etc : 프로그램이 동작하는 것들의 설정 파일 - ex)파일 다운로드에서 문제가 있을 때 20번 시도한다 -> 10번 시도한다. 이런 방식으로 설정 바꿔주는 것 (configuration Files)
- /dev : (Device Files)
- /proc : (Process Information)
- /var : 내용이 고정되거나 변하는 파일들 - ex) 로그 기록 (Variables Files)
- /tmp : 임시 파일들 (temporal)
- /home : 사용자 파일 : cd ~
- /boot : 부팅 관련
- /lib : 라이브러리 관련
- /opt : 소프트웨어 설치 시, 원래 그냥 자동으로 dir 설정하는데, 필요시 opt로 바꿔서 사용 (Optional add-on App)
- /usr : /usr/bin, /usr/sbin, /usr/lib, /usr/local : 설치하는 것들은 /usr/아래에 저장, 원래 들어있는 리눅스 관련 파일은 /bin, /sbin 등에 설정된다. (역사적으로는 디스켓 사용할 때 용량 부족으로 필수파일만 로컬에 저장)
9. 파일 검색
- 데이터 보관용 명령어 파일 / 실행 파일 두개로 나뉨.
- locate [*.확장자] : 확장자로 된 파일 목록
- cf) clear : 터미널 지워짐.
- find [가져올 디렉토리 (/, ., ~) ] [옵션 (-n,-f)] [(파일명, .확장자)] : 현재 상태를 가져온다.
- ex) find . -type f -name "~~.txt" -exec rm -f {} \ : 파일 찾아서 삭제
- whereis : 실행파일을 찾아주는 명령어
- ex) whereis ls : ls가 있는 디렉토리를 찾아줌
- ex) ls라는 명령어는 어디서 치든 바로 나온다. 이 명령어는 그럼 어디에서 어떻게 실행되는 것일까?
- $PATH : 이 경로에 담겨있는 디렉토리를 전체적으로 찾아서 ls가 있으면 실행시켜주는 것이다. (환경변수)
- echo $PATH 하면 이 경로를 볼 수있다.
10. 컴퓨터 구조(참고)
- Processor (처리 속도 굉장히 빠름)
- Memory (가격 높고, 용량 적고, 속도 높음)
- Storage (가격 낮고, 용량 크고, 속도 낮음)
- 프로세스 : storage의 프로그램을 읽어서 Memory에 적재 - Processor가 읽어서 데이터 처리
11. 프로세스 실행
- ps : 실행하는 것들
- 너무 관련 없는 것 같아 우선 스킵하고 넘어감.
- fg : 원래 실행하던 곳으로 이동
12. daemon (service)
- 항상 켜져있다. (가전제품이라면 냉장고)
- webserver로 실습해봄.
- 예시 부분은 스킵
13. cron
- 정기적으로 명령을 실행시켜주는 도구
- 데이터를 정기적으로 백업하거나 정기적으로 전송, 정기적으로 인터넷으로 시간 조정 등
- crontab -e : 하고자 하는 일을 정의
- * * * * * * (minute, hour, day, month, 요일0-6)
- ex) /1 * * * * date >> date.log : date.log에 1분에 한번씩 시간 로그를 추가해준다.
- ">>" : 실행할 때마다 추가하는 것.
- cf) tail [파일] : 파일의 마지막 부분을 출력해준다.
- cf) tail -f [파일] : 파일에 데이터 추가될 때마다 출력해준다.
14. shell startup script
- 쉘 접속 시 특정 명령어 실행 - bashrc 수정
- alias [단축어]= '[명령어]' : 단축어 설정
- cf) shell의 기본 주소를 확인하는 방법 : echo $SHELL
- cf) bashrc 수정 vim ~/.bashrc
15. 다중 사용자
- 여러명이 사용할 때 권한 설정을 해줘야 문제가 생기지 않는다.
- id : 본 사용자가 누구인지 식별 uid, gid 등 나옴.
- who : 이 시스템에 누가 접속해있는지 확인
- ssh 접속 : ssh -p [port 번호] [사용자명]@[domain 혹은 ip 주소]
- 기본 22번 포트 접속 : ssh [사용자명]@[domain 혹은 ip 주소]
15-1. 관리자와 일반 사용자
- super(root) user vs user
- sudo : 일시적으로 super user의 권한을 가져온다.
- # : super user, $ : user
- su : user id를 바꿔주거나 superuser 바꿔주면 된다. (su-root)
- root 사용자의 home dir : cd /root로 들어가면 된다. 결국 / 밑에 있는 root dir이다.
15-2. user 추가
- sudo useradd -m [사용자명] : 사용자 디렉토리를 home 아래에 추가
- sudo passwd [사용자명] : 사용자 pw 추가
- sudo 권한 추가 : sudoers에 추가해야함. -> sudo user에서 sudo usermod -a -G sudo [사용자명] : sudo 명령 쓸 수 있는 그룹에 사용자 추가
16. 권한
- File, Directory
- Read(r), Write(w), Execute(x) 권한