💋 리눅스란?
리눅스는 컴퓨터 오픈 소스 운영체제 중 하나로, 다양한 하드웨어와 소프트웨어에 대한 호환성이 우수하며, 안정성과 보안성이 높다.
리눅스는 대부분의 서버에서 사용되며, 웹 서버, 데이터베이스, 클라우드 서버 등의 분야에서 사용된다.
리눅스의 가장 큰 특징 중 하나는 명령어 인터페이스를 제공한다는 것이다.
터미널 창에서 명령어를 입력하여 파일 복사, 디렉토리 생성, 프로세스 관리 등을 할 수 있다.
이번 포스팅에서는 리눅스 명령어에 대해서 공부해볼 것이다!
💋 기본적인 리눅스 명령어
✔ 1. ls (list)
- 현재 디렉토리 내의 파일과 폴더 목록을 출력하는 명령어
- 예시: ls -al (자세한 정보 출력)
✔ 2. cd (change directory)
- 다른 디렉토리로 이동하는 명령어
- 예시: cd /home/user/documents (documents 디렉토리로 이동)
✔ 3. mkdir (make directory)
- 새로운 디렉토리를 생성하는 명령어
- 예시: mkdir new_folder (new_folder라는 디렉토리 생성)
✔ 4. rm (remove)
- 파일이나 디렉토리를 삭제하는 명령어
- 예시: rm file.txt (file.txt 파일 삭제)
✔ 5. cp (copy)
- 파일이나 디렉토리를 복사하는 명령어
- 예시: cp file.txt /home/user/documents (file.txt 파일을 documents 디렉토리로 복사)
✔ 6. mv (move)
- 파일이나 디렉토리를 이동하거나 이름을 변경하는 명령어
- 예시: mv file.txt /home/user/documents (file.txt 파일을 documents 디렉토리로 이동)
✔ 7. grep (global regular expression print)
- 파일 내에서 특정 문자열을 검색하는 명령어
- 예시: grep "hello" file.txt (file.txt 파일에서 "hello" 문자열 검색)
✔ 8. ps (process status)
- 현재 실행 중인 프로세스 목록을 출력하는 명령어
- 예시: ps -ef (상세한 정보 출력)
✔ 9. top
- 현재 실행 중인 프로세스 중 CPU와 메모리를 많이 사용하는 프로세스를 출력하는 명령어
- top 명령어를 일시 중지하고 싶으면, control + z를 누르면 된다.
- 예시: top -u user (user가 실행한 프로세스만 출력)
✔ 10. man (manual)
- 명령어의 사용 방법과 옵션 등을 확인할 수 있는 명령어
- man 명령어를 일시 중지하고 싶으면, control + z를 누르면 된다.
- 예시: man ls (ls 명령어 사용 방법 확인)
💋 프로젝트에서 자주 사용되는 리눅스 명령어
✔ 1. history
- 이전에 사용자가 실행한 모든 명령어를 보여주는 명령어
- 기본적으로 현재 사용자가 로그인한 이후부터 실행한 모든 명령어를 보여준다.
- 예시: history 10 (사용자가 최근 10개의 명령어를 확인)
✔ 2. sudo (superuser do)
- 일반 사용자가 관리자 권한을 사용할 수 있도록 하는 명령어
- 시스템의 모든 영역에 대한 완전한 접근 권한을 제공
- 예시: sudo apt-get update (관리자 권한으로 패키지 업데이트 수행)
✔ 3. apt-get
- 우분투 리눅스에서 패키지를 설치하고 관리하는 데 사용되는 명령어
- 예시: sudo apt-get install -y java-11-amazon-corretto-jdk (java-11-amazon-corretto-jdk 패키지를 설치)
✔ 4. cd (change directory)
- 현재 작업 중인 디렉토리를 변경하는 명령어
- 예시: cd Projects (Projects 디렉토리로 이동)
✔ 5. git clone
- git 저장소의 내용을 복제하는 명령어
- 예시: git clone https://github.com/woowacourse/jwp-shopping-cart.git (jwp-shopping-cart 저장소의 내용을 복제)
✔ 6. gradlew
- 그레이들 빌드 도구를 실행하는 명령어
- 예시: ./gradlew bootJar (그레이들로 jwp-shopping-order 애플리케이션을 빌드)
✔ 7. java
- 자바 프로그램을 실행하는 명령어
- 예시: java -version (자바 버전 정보 출력)
✔ 8. curl
- URL을 이용하여 데이터를 다운로드하고 출력하는 명령어
- 예시: curl -o access_log.txt https://techcourse-storage.s3.ap-northeast-2.amazonaws.com/infra/access_log.txt (access_log.txt 파일을 다운로드)
✔ 9. sort
- 파일의 내용을 정렬하는 명령어
- 예시: sort < text.txt (text.txt 파일의 내용을 정렬)
✔ 10. vi (visual editor)
- 리눅스에서 기본적으로 제공되는 텍스트 에디터
- command mode, insert mode로 구분된다.
- 예시: vi deploy.sh (deploy.sh 파일을 vi 에디터로 열기)
🌟 vi command mode, insert mode 전환, vi 에디터 종료 방법
- command mode에서 i 를 누르면 insert mode로 들어가고, insert mode에서 ESC를 누르면 command mode로 전환된다.
- command mode에서 :wq(write, quit)을 입력하면 편집 결과가 저장되고 vi 에디터가 종료된다.
- 이외에도 command mode에서 :w 명령어를 입력하면 편집 결과를 저장할 수 있고, :q 명령어를 입력하면 vi 에디터를 종료할 수 있으며, :q! 명령어를 입력하면 편집 결과를 저장하지 않고 강제로 vi 에디터를 종료할 수도 있다.
✔ 11. chmod (change mode)
- 파일이나 디렉토리의 권한을 변경하는 명령어
- 예시: chmod 777 deploy.sh (deploy.sh 파일의 권한을 모두(7) 부여)
🌟 chmod 777에서 777의 의미는 뭘까?
터미널에서 ls -al을 입력해보면, 아래와 같은 화면을 볼 수 있다.
앞에 보이는 drwx-------가 좀 희한하다.
d (디렉토리): 파일인 경우에는 첫 번째 문자가 -로 표시되기 때문에, 디렉토리와 파일을 구분하는 역할을 한다.
r (읽기 권한): 파일 내용을 읽거나 디렉토리 내 파일 목록을 확인할 수 있다.
w (쓰기 권한): 파일의 내용을 수정하거나 디렉토리 내 파일을 추가/삭제할 수 있다.
x (실행 권한): execute를 뜻하며, 파일을 실행할 수 있다. 디렉토리인 경우에는, 해당 디렉토리로 이동할 수 있다.
그럼 777은 뭘까?
차례대로 파일 소유자(owner), 그룹(group), 기타 사용자(other)에게 각각 적용된다.
이들 각각에 대해 r, w, x 권한을 설정할 수 있으며, 권한 설정 순서는 rwx 순서로 설정된다.
2진수에 따라서 권한은 r은 4, w는 2, x는 1이며, 권한을 모두 더한 수가 바로 7이다. 다 더해야 7이 나오니 7은 모든 권한을 의미한다.
예를 들어, "chmod 754 file" 명령어에 대해서 생각해보면,
파일의 소유자는 7의 권한을 가지므로 r(4), w(2), x(1) 권한을 가진다.
그룹은 5의 권한이므로 r(4), x(1) 권한을 가진다.
기타 사용자는 r(1) 권한만 가지게 된다.
✔ 12. nohup
- 백그라운드에서 프로세스를 실행하는 명령어
- 예시: nohup java -jar jwp-shopping-order.jar & (jwp-shopping-order.jar 애플리케이션을 백그라운드에서 실행)
*백그라운드에서 실행한다는 것은, 프로세스가 사용자가 보는 화면이 아닌, 백그라운드에서 실행된다는 것을 의미한다. 사용자는 다른 작업을 하면서도 프로세스가 계속해서 실행되는 것을 확인할 수 있다. 반면, 백그라운드에서 실행시키지 않는다는 것은 프로세스가 사용자가 보는 화면에서 실행된다는 것을 의미하며, 사용자는 프로세스가 실행되는 동안 다른 작업을 할 수 없으며, 해당 프로세스가 실행되는 화면만을 볼 수 있다.
✔ 13. systemctl
- systemd 서비스 관리 명령어
- 주로 시스템의 부팅, 서비스의 시작/중지/재시작 등을 관리할 때 사용
- 예시: sudo systemctl restart nginx.service (nginx.service 서비스를 재시작)
✔ 14. nano
- 간단한 리눅스 텍스트 에디터
- 예시: nano deploy.sh (deploy.sh 파일을 nano 에디터로 열기)
🌟 vi, nano의 차이점이 뭘까?
vi와 nano는 리눅스에서 텍스트 편집기로 많이 사용되는 프로그램이다.
vi는 command mode와 insert mode로 구분되며, command mode에서는 텍스트를 수정하기 위한 다양한 명령어를 입력하고, insert mode에서는 실제로 텍스트를 편집한다.
반면에, nano는 간단하고 쉬운 사용법으로 유명한 에디터이다. 편집 모드에서 바로 텍스트를 입력하고 수정할 수 있으며, 명령어 모드가 없어서, 사용자 친화적인 인터페이스를 가지고 있다.
도움이 되셨다면 좋아요와 댓글 달아주세요!
'Linux' 카테고리의 다른 글
[Linux] 간단하게 복사 붙여넣기로 Ubuntu EC2에 Swap 메모리 설정하기 (0) | 2023.11.02 |
---|---|
[Linux] 간단하게 복사 붙여넣기로 Ubuntu EC2에 MySQL 설치하기 (0) | 2023.11.01 |
[Linux] 간단하게 복사 붙여넣기로 Ubuntu EC2에 Docker 설치하기 (0) | 2023.10.24 |
[Linux] EC2 key로 SCP 원격 파일 복사 Permission denied (publickey) 트러블슈팅 (해결함) (0) | 2023.08.01 |