제가 실무에서 직접 사용하는 명령어를 정리해 보려고 합니다.
제 노트북이 mac 인데 mac 이 unix 기반의 운영체제 이기 때문에, 리눅스 명령어랑 비슷한게 많습니다.
그래서 겸사겸사 정리를 해보았습니다.
리눅스 명령어를 하다가 권한 관련 에러가 발생한다면 모든 명령어 앞에
sudo 를 붙이면 해결이 됩니다.
[ ex) 권한 에러 : ~ ~ ~ Permission denied ] -> $ sudo 명령어
위가 귀찮으시 다면 관리자 권한을 줘서
$ sudo su
를 치고, 서버 비밀번호를 입력하게 되면 부여 밭은 권한에 맞춰 매번 sudo 를 검색하는 수고를 덜 수가 있습니다.
하지만 모든게 관리자 권한이라, 위험한 작업을 할 때는 신중을 기울여야 합니다. ex) rm -rf...
위 방법이 싫다면 User 별로 chmod 명령어를 사용하여 권한을 부여하는 방식또한 있습니다.
디렉토리 관련 명령어
디렉토리 확인
$ ls // 현재 경로에 어떤 파일들이 있는지
$ ls -lh // == ls
$ ls -al // 감춰진 파일 포함해서 현재 경로에 어떤 파일들이 있는지
$ ls -alt // 날짜별로 내림차순 조회
$ ll // == ls -al
디렉토리 생성
$ mkdir 폴더이름 // 폴더 생성
$ mkdir -p 폴더a/폴더b/폴더c // 폴더 a 안에 폴더 b 안에 폴더 c 생성
-p 명령어를 통해 중첩된 디렉토리를 생성할 수 있다. -> 즉 여러개의 폴더 생성시 사용
디렉토리 삭제
$ rm -r 디렉토리 이름 // 디렉토리 안에 있는 내용을 다 삭제한다.
$ rm -rf 디렉토리 이름 // 디렉토리 하위 디렉토리 안에 있는 모든 파일을 영구 삭제한다.
디렉토리 복사
$ cp file_name new_file_name // 파일 복사
$ cp -r directory_name new_directory_name // 디렉토리 복사
경로 이동
$ cd 폴더이름 // 현재 디렉토리에서 다른 폴더로 넘어가는 것, 보통 ls 명령어로 폴더 이름 찾고 사용
$ cd - // 이전 경로로 이동
$ cd .. // 전 경로로 이동
$ cd ~ // 전 경로로 이동
$ cd // 맨 처음 경로로 이동 (os시작 경로로 이동)
$ pwd // 현재 내가 어디 경로에 있는지 확인
파일 관련 명령어
파일 생성
$ vi abc.txt // abc.txt 파일 생성하고 바로 vim 편집기 사용
$ nano abc.txt //abc.txt 파일 생성하고 바로 나노 편집기 사용
파일 이름 변경
$ mv 현재파일이름 바꿀파일이름
dd // 줄 삭제
파일 찾기
$ find [경로][검색조건][동작]
파일복사
cp -[옵션]
cp 옵션에는 엄청 여러가지가 있다.
1) cp -a
2) cp -f
3) cp -i
4) cp -r
5) cp -u
6) cp -v
7) cp -p
8) cp -n
9) cp -l
이 중에서 보통 아래 3가지를 자주 사용한다.
cp -r (recursive)
• 설명: 디렉토리와 그 안의 모든 파일 및 하위 디렉토리를 재귀적으로 복사합니다.
• 사용 예시: cp -r /source/directory /destination/directory
• 이유: 디렉토리를 복사할 때 필수적입니다.
cp -f (force)
• 설명: 대상 위치에 이미 동일한 이름의 파일이 있을 경우, 강제로 덮어씁니다.
• 사용 예시: cp -f file1.txt /destination/path/
• 이유: 이미 존재하는 파일을 덮어쓸 때, 오류 없이 강제로 복사할 수 있습니다.
cp -i (interactive)
• 설명: 대상 위치에 동일한 이름의 파일이 있을 경우, 덮어쓸지 여부를 묻습니다.
• 사용 예시: cp -i file1.txt /destination/path/
• 이유: 실수로 파일을 덮어쓰는 것을 방지할 수 있습니다.
파일 내용 출력
$ cat file_name // 파일 내용 출력
계정 생성/삭제 명령어
- 계정 생성 adduser
- 계정 생성 useradd
- 계정 삭제 userdel
$ adduser [계정이름]
위 명령어로 생성을 하면 비밀번호 부터 해서 여러가지 설정을 할 수 있습니다.
위 처럼 설정을 해줄 수 있습니다.
useradd [계정이름]
위 명령어를 치면, 다른 아무 설정없이 계정이 생성이 됩니다.
비밀번호 설정을 위해 아래 명령어랑 같이 사용이 됩니다.
passwd [방금생성한 계정이름]
계정을 생성했으면 다음은 그룹을 지정할 수도 있습니다.
chmod 명령어로 권한 줄 수 있습니다.
만약 계정 1개에만 어떠한 권한을 준다면 간단하게 할 수 있죠
하지만 여러개의 계정에 같은 권한을 주고싶다면?
위 작업을 간편하게 하기 위해 계정을 하나로 묶는 -> 그룹 을 만드는 명령어가 있습니다.
groupadd [생성할 그룹이름]
그룹을 하나 생성해줍니다.
usermod -G [생성한 그룹이름] [추가할 계정]
EX) usermod -G test test1
groups testid2
위 결과로 test1 : test1 test 아래와 같은 결과를 얻을 수 있습니다.
즉 내가 만든 그룹에 계정이 추가되었다는 뜻 입니다.
쉘 설정
usermod -s /bin/bash [생성한 계정이름]
계정 삭제
userdel 삭제할계정명
파일 권한 명령어
사용자에게 파일 읽기,쓰기,실행 권한을 부여할 수 있는 chmod 명령어에 대해서 알아보겠습니다.
리눅스 서버를 만들면 기본적으로 root 라는 슈퍼유저가 생긴다.
즉 모든 권한을 가진 것을 말합니다.
권한 확인
ls -l
루트 권한 기준 위와 같은 결과를 볼 수 있습니다.
위 사진을 보면 이해가 정말 잘 됩니다. 인파님 블로그에서 사진을 가져왔습니다.
이 중에서 중요한건 r(4) w(2) x(1) 위 파일에 대한 권한 입니다.
- r(4) : 파일에 대한 읽기 권한 (열기,읽기)
- w(2) : 파일에 대한 쓰기 권한(파일 수정 가능)
- x(1) : 파일에 대한 실행 권한
자세한 내용은 인파_데브블로그 에서 확인 가능합니다.
문서 편집 관련 (vi)
$ :q // 그냥 나가기
$ :wq // 저장 후 나가기
$ i // insert 모드
$ a // insert 모드2
$ esc // read 모드
$ dd // 줄 삭제
루트 계정으로 접속하는 법
$ sudo su // 루트 계정으로 접속
$ cd // 제일 처음 경로로 이동
$ cd / // root 로 접속
# exit // 나가기
. // 전 경로
.. // 현 경로
그냥 알아두면 좋은 명령어
$ kill PID // 프로세스 종료
$ kill -9 PID // 강제로 프로세스 종료
$ ssh user_name@host_name // 원격 서버에 접속
ex) ssh jin@127.0.0.1
$ ifconfig // 네트워크 인터페이스 정보 출력
보통 여기서는 eno1 의 inet 에 보면 ip 가 나와 있으니 보통 그거 보는데 사용했음
$ curl url // 원격 url 의 내용을 통해 데이터 다운로드 명령어
$ sudo apt-get install docker // docker 설치
# sudo apt-get update
개인적으로 리눅스 우분투 환경에서 docker 설치해두고 서버를 컨테이너화 해두는거
정말 정말 유용하고 좋다고 생각합니다.
실수를 할 경우 서버를 미는 경우도 종종 있으니까요
컨테이너화 하면 뭔가 잘못된 경우 잘못된 컨테이너만 밀어버리고 다시 설치하면 되닌까.
여러모로 도움이 많이 되는 것 같습니다.
REF
https://velog.io/@devyang97/Linux-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-Ubuntu-%EC%82%AC%EC%9A%A9