Linux 명령어 및 단축키 중 자주 사용하게 되는 것 정리 # 권한변경
오늘은 자주사용하게 되는 Linux명령어와 단축키에 대해서,
정리해 보도록 하겠습니다.
1. 프로그램의 설치
우분투의 리눅스 시스템에서 프로그램을 설치해주는 명령어는 아래와 같습니다.
apt-get명령어가 우분투 프로그램 서버에서 실행파일을 다운받아 설치해 줍니다.
이 apt-get명령어는 root계정으로 사용해야 해서, sudo를 앞에 붙여서 사용합니다.
sudo apt-get install <프로그램>
혹시 설치할 프로그램의 용량이 큰 경우는 설치할 것인지 한번 더 물어보게 되는데요.
아래와 같이 해 주면 yes가 되어서 자동으로 설치로 넘어갑니다.
sudo ap-get install -y <프로그램>
참고로 update 명령어를 통해서 항상 update할 것이 있는지 확인해 주구요.
있다면 upgrade 명령어를 이용해 upgrade 해 줍니다.
sudo apt-get update
sudo apt-get upgrade
2. 권한 관련 명령어
2-1. su
다른 사용자로 전환할 때는 su명령어를 사용합니다.
su -<유저id>
만약 root계정으로 계정을 변경하려면,
'su -root'라고 하면 됩니다.
root는 시스템 제어를 위한 특별한 권한을 가지고 있는 사용자 계정을 가르키는데요.
root권한을 잠시 사용하고자 할 때는 sudo명령어를 사용합니다.
위의 프로그램 설치때 sudo apt-get install을 했었는데요, root권한이 필요해서 sudo명령어를 사용한 것입니다.
sudo
2-2. 리눅스의 3단계 권한과 Chmod 명령어
Linux에서는, 읽기, 쓰기, 실행 권한의 세가지 권한이 있는데요.
읽기와 실행권한의 차이는,
읽기권한만 있으면, 파일조회는 가능하지만, 실행하지는 못하도록 하는 것입니다.
리눅스에서의 권한부여에 있어 특이한점은, 사용자에 따라서 숫자표기 방법으로 권한을 부여한다는 것 인데요.
예를들면, 아래표와 같이, 읽기 쓰기 그리고 실행 권한에 대해 각각 4,2,1의 숫자가 부여됩니다.
이 숫자들의 더한 값으로, 해당 사용자의 권한이 정해지는데요.
예를 들어, 읽기만 허용한다면 4, 읽기와 실행을 허용한다면5, 쓰기까지 허용한다면 7이 되겠지요.
읽기 | 쓰기 | 실행 |
4 | 2 | 1 |
이제 이렇게 정해진 권한의 합을 사용자 별로 정하면 되는 것인데요.
속성을 정할 때 아래와 같이, 소유자, 그룹, (소유권이 없는)다른사람의 순으로 나열해주면 됩니다.
예를 들어, 파일의 소유자에게는 7(읽고, 쓰고, 실행),
그룹에게는 3(쓰고 실행),
소유권이 없는 다른사람들에게는 0(아무권한도 주지 않음) 이라고 하면,
이를 나열해서 730이라는 식으로 권한을 표기할 수 있습니다.
해당 파일이나 디렉토리의 속성 = 소유자(User) + 그룹(Group) + 다른사람(Others)
chmod명령어를 이용하면, 위에서 정리한 방식으로, 파일의 권한을 수정할 수 있는데요.
만약, 사용자는 읽고 실행하고(4 + 1),
그룹멤버도 읽고 실행하며(4 + 1),
다른사람은 실행하지 못하게(0) 변경한다면,
550이라고 표현할 수 있다는 것 이지요.
그럼 이것을 chmod명령어를 이용해서,
아래와 같이 testDirectory의 권한을 변경할 수 있습니다.
chmod 550 testDirectory
2-3. chown (파일 및 디렉토리의 소유권자 변경)
chown명령어를 쓰면, 파일이나 디렉토리의 소유권자를 변경할 수 있는데요.
testDirectory의 소유권을 ubuntu로 변경하고자 한다면,
chown ubuntu testdirectory라고 해주면 됩니다.
만약 그룹이 정해져 있어서,ubuntu가 root그룹에 속해있다면,
아래표의 두번째 줄과 같이,
root:ubuntu로 설정해 주면 됩니다.
chown ubuntu testDirectory
chown root:ubuntu testDirectory
3. 파일관련 명령어
다음은 자주쓰는 파일 관련 명령어입니다.
ls, touch, pwd, cat, cd명령어들을 자주사용하는 명령어라고 할 수 있겠습니다.
명령어 | 내용 |
ls | 파일과 디렉토리의 목록을 보여주는 명령어 |
ls -al | -a는 숨겨진(hidden) 파일과 디렉토리까지 모두(all) 보여줌. 파일 이름이 '.'으로 시작하는 것들이 숨겨진 파일 -l 은 자세한(long) 정보를 출력. 각 파일과 디렉토리의 소유자, 그룹, 권한, 크기, 수정 일자 등의 상세 정보를 보여줌 |
touch | 파일을 생성하기 |
cat | 파일의 내용을 보여줌 cat file | more => 파일의 내용이 너무 많아지면, | more를 해주면 화면단위로 잘라주므로, 좌우 방향키로 넘겨 볼 수 있다. (q를 누르면 나가게 된다.) |
pwd | 현재 디렉토리의 위치를 보여줌 |
cd | 디렉토리 변경하기 |
mkdir | 디렉토리 생성 (디렉토리를 생성하면 실행권한도 같이 생김) -p 옵션을 붙이면 중간에 없던 디렉토리도 생성시켜준다. 예) mkdir -p test/1/db 1이라는 디렉토리가 기존에 없는 경우, 1이라는 디렉토리도 생성시켜 준다. |
mv | 파일이나 디렉토리를 이동시키거나, 이름을 변경할 때 사용 mv test1 test2 (test1을 test2로 이동시킨다) |
cp | 파일 및 폴더 복사할 때 사용 파일복사: cp test1.txt test2.txt (test2.txt파일을 복사해서 생성) cp /opt/copy1 /home/copy2 (copy1을 home폴더의 copy2로 복사) 폴더복사: cp -r /opt /home/opt (-r옵션을 붙여서, 디렉토리를 이동함, opt디렉토리를 home디렉토리 밑으로 이동) |
rm |
파일삭제(백업이 존재하는지 확인하고 지우는 것이 좋음) rm test.txt => test.txt 파일 삭제 rm -r <디렉토리이름> 하위의 디렉토리 및 파일까지, 디렉토리 전체를 삭제 rm -rf <디렉토리 이름> f는 무조건 삭제한다는 옵션입니다. (현재의 디렉토리에서 파일과 디렉토리를 모두 삭제한다면 rm -rf *을 해주면 됩니다.) 거의 습관적으로 rm -rf 옵션을 사용하기는 하지만, 어떤 의미인지 알고 사용하는 것이 좋습니다. |
rmdir | 디렉토리 지우기 |
stat | 파일의 변경상황 확인 가능 |
du -h | 파일 및 디렉토리의 디스크 사용량(disk usage)을 확인 |
df -h | 사용 중인 공간, 사용 가능한 공간 및 파일 시스템의 마운트 포인트 등을 확인 |
which | 실행파일의 위치 확인 which java => java 실행파일의 위치를 보여줌 |
gzip | 압축하기 |
find | file 이나 directory를 검색할 때 사용 |
tar | 여러개의 파일을 묶거나 풀때 사용합니다. 옵션으로 gzip으로 압축하여서 묶거나 풀수 있습니다. |
파일과 관련 명령어 중,
파일이나 디렉토리를 검색할 때 사용하는 find 명령어를 뺄 수 없을텐데요.
예를 들어, nginx.conf라는 파일을 찾으려고 하면 다음과 같이 해주면 됩니다.
find / -name nginx.conf
위에서 검색한 것은 루트 디렉토리에서 검색하는 방법인데요.
디렉토리 경로를 (/)루트로 지정해서 전체에서 검색하도록 하였습니다.
많약 경로를 "."으로 지정해 주면, 현재 디렉토리 아래 모든 하위디렉토리까지 검색하도록 해주게 됩니다.
가장많이 쓰이는 -name은 지정된 문자열 패턴에 해당하는 파일을 검색하도록 해 줍니다.
아래와 같이 '.'로 입력하면, 현재 및 하위디렉토리에서 ng로 시작하는 파일을 찾으라는 것이 됩니다.
find . -name "ng*"
4. Curl 명령어
curl이라는 명령어는 Clien URL이라는 말의 줄임말인데요.
이 명령어를 이용하여, 터미널에서 간단히 http요청을 하고, 결과를 확인할 수 있습니다.
종종 API문서들 에서도 보게되는 명령어이기도 하지요.
사용방법은 아래와 같은데요.
curl <옵션> <URL>
예를 들어, naver.com을 get메소드로 요청해보겠습니다.
다음과 같이 결과가 터미널에 찍히는 것을 볼 수 있습니다.
curl명령어에 사용할 수 있는 대표적인 옵션은 다음과 같습니다.
명령어 | 내용 |
-X | -X옵션뒤에, 요청할 메소드 종류를 넣어준다.(POST, PUT) 예> curl -X POST http://test.xxx |
--data-urlencode | urlEncode하여 주소를 보내준다. 예> curl --data-urlencode "addr=청학동" http://test.xxx |
-I (대문자 아이) | 결과값에서 header만 출력합니다. -i(소문자)를 사용하면 header와 body를 모두 보여줍니다. |
-L (--location과 동일) | 접속하자마자 서버가 redirection할 경우, 해당 url을 따라가서 접속해 준다. |
-H | request보낼 때 Header값을 설정해서 보낼 때 사용합니다. 예) curl -H "Content-Type: application/x-www-form-urlencoded" |
-D | Post요청을 할 때, data를 같이 보내줍니다. curl -d "key=value&key2=value2" -X POST http://test.xxx |
-K | https 사이트를 SSL certificate 검증없이 연결해 줍니다. SSL연결을 테스트 할 때 유용합니다. 예) curl -IK https://test.example.com (I를 붙인이유는 헤더값을 통해서 테스트하기 위해서 입니다.) |
5. NameServer 조회
Linux에 NameServer를 조회하는 명령어가 있는데요.
바로 nslookup입니다.
서버의 network가 제대로 설정되었는지 확인할 때 사용하게 되는데요.
사용법도 간단하니다.
nslookup <domain>
6. 기타 자주 사용하는 명령어들
이외에도 다음과 같은 자주 사용하는 명령어들이 있습니다.
명령어 | 의미 |
clear | 화면 clear하기 |
ps | Process 리스팅 |
kill | Process 죽이기 |
bc | 계산기 |
date | 날짜 보기 |
echo | 문자열을 터미널에 출력 아래 명령어로 현재 user명을 볼수 있음 ex> echo $USER |
printenv | 환경변수 출력하기 |
free | 메모리 사용량 보기 |
help | 도움말 보기 |
id | 계정정보보기 |
ping | 패킷을 목적지서버로 보내서 네트워크가 정상적으로 동작하는지 확인 |
ssh | 암호화되어진 연결을 통해서 안전하게 원격호스트에 연결하도록 하는 명령어 로컬 컴퓨터에서 서버에 접속 할 때 많이 사용 |
who | 사용자 정보 확인하기 |
grep | 텍스트에서 패턴을 검색하기 |
time | 명령어 수행 시간 확인하기 |
7. 명령어 도움말
이런저런 검색도 해보고, 이 글도 읽어보았지만,
잘 모르겠다고 하는 명령어가 있다면,
man 명령어를 사용하면 됩니다.
manual의 약자라고 외워도 될 것 같은데요.
예를 들어 curl이라고 하는 명령어의 옵션에 대해서 더 알고싶다면,
아래와 같이 해주면 되겠지요.
man curl
실행을 시키면 아래 이미지와 같은 화면이 나오는데요.
GUI만 하던 사람들에게는 매우 당황스러운 화면입니다.
man을 사용하기 위해서 아래와 같은 명령어나 단축키를 알아두면 좋습니다.
space바 - 눌러서 다음 페이지로 이동
"/검색어" - 입력후 엔터를 입력하면 검색가능, n키가 다음문자, N키가 이전문자로 이동하는 단축키
q - 화면 나가기
h - man명령어 도움말
man 명령어 이외에도,
linux명령어 뒤에 --help를 붙이면 해당 명령어에 대한 설명을 볼 수 있습니다.
8. 파일과 프로세스 현황
lsof라는 명령어가 있는데요.list open files의 줄임말입니다.
리눅스에서 열려있는 파일과 그 파일을 연 프로세스를 모두 나열해 줍니다.
lsof
이것을 활용해서 의도치 않게 살아서 열려있는 포트등도 확인해 볼 수 있는데요.
예를 들면, "lsof -i :53087" 이라고 하면 53087포트를 동작시키는 프로세스를 확인할 수 있습니다.
그럼 해당 프로세스 id를 확인할 수 있구요.
이를 이용해서 "kill -9 {프로세스id}"명령어로 해당 프로세스를 멈추게 할 수 있습니다.
9. 저장공간 현황 확인
저장 공간의 사용 현황이나 여유상황을 보기 위해서는,
df 명령어를 사용하면 되는데요.
disk free의 약자이기도 합니다.
-h 옵션을 붙이면 메가나 기가단위로 좀더 쉽게 볼 수 있습니다.
df -h
10. OS 정보(Ubuntu 정보 )
아래 명령어는 현재 시스템의 운영 체제 정보가 포함된 os-release 파일을 출력합니다.
cat /etc/os-release
간단한 버전정보는 다음의 명령어를 통해서 얻을 수 있습니다.
cat /etc/issue
11. 단축키
11-1. Linux 터미널 단축키들
마지막으로 linux 터미널 화면에서, 자주 사용하게 되는 단축키들은 다음과 같은데요.
예를 들면, 줄이 너무 길어졌을 경우,
ctrl + L을 해서 위의 줄들을 모두 clear한 다음,
입력하고 있던 해당 줄까지 지우려면, ctrl + U를 해 주면 되겠지요.
단축키 | 내용 |
Tab | 자동완성 예> cd f하고 탭을 누르면, f로 시작하는 디렉토리나 파일이 자동완성된다. |
Ctrl + L | 화면을 Clear 해 줍니다. clear를 타이핑해서 화면을 clear할 수도 있겠지만, 이 단축키도 사용할 수 있습니다. |
Ctrl + A | 입력줄의 처음으로 이동. 예> cd testousProject123 쓰다가 맨 앞으로 이동하고자 할 때 사용 |
Ctrl + E | 입력줄의 끝으로 이동 |
Alt + -> (왼쪽 화살표) |
커서를 다음 단어로 이동 |
Alt + <- (오른쪽 화살표) |
커서를 이전 단어로 이동 |
Ctrl + U | 현재 라인 지우기(U는 upto의 약자) |
11-2. 홈 디렉토리
단축키는 아니지만 ~기호에 대해서도 알아두면 좋습니다.
이 기호는 자신의 홈 디렉토리를 의미하는데요.
홈디렉토리 밑의 test디렉토리로 이동하고자 한다면, 아래와 같이 해주면 됩니다.
cd ~/test
'~'로 나타낼수도 있고,
'$HOME'으로 나타낼수도 있습니다.
11-3. 현재 디렉토리
현재 작업디렉토리는 다음과 같이 점 하나로 표현할 수 있습니다.
.
예를 들어서, 현재 디렉토리내의 지울 파일을 삭제한다면,
아래와 같이 표현할 수 있겠지요.
rm -f "./지울파일.txt"
11-4. 다음 라인으로 연결
명령어등을 입력하다가, 줄이 너무 길어져서 다음 줄에서 이어서 써야 하는 경우들이 있습니다.
이 때는 아래와 같이 역슬래시('\')를 사용해주면 됩니다.
echo "이것은 매우 긴 \
문장입니다."
이상으로 리눅스에서 자주 쓰는 명령어와 단축키에 대해서 알아보았는데요.
추가적으로 유용한 명령어와 단축키에 관해서는 이 글에서 계속 업데이트 하도록 하겠습니다.