본문 바로가기
linux

Linux 기본 명령어

by 오우지 2023. 1. 23.

도커를 만듦에 있어서 리눅스 기본 명령어에 대한 공부가 선행되어야 겠다는 생각이 들었다. 유투브 뉴렉처 채널 리눅스 강의를 봤다. 아는건 정리 안하고 모르는 것만 할거다.

 

1. Shell

OS와 사용자가 커뮤니케이션 하기 위해서는 대화 창구가 필요하다. OS를 감싸고 있다고 해서 Shell이라고 불린다. 윈도우에는 탐색기와 프롬프트 창 두 가지가 존재하고 리눅스도 GUI와 CLI 둘 다 존재한다.

 

Linux의 쉘 종류

1.  bash shell(bourn again shell)

2. csh

3. ksh

4. tcsh 등등이 있다.

 

bash가 모든 유닉스 계열 OS가 가지고 있는 쉘로 가장 많이 쓰인다.

 

1. root 권한 실행

 

switch user

sudo su - root

sudo su -

sudo su
유저는 유지한 상태에서 권한만 root로 변경한다

 

 


2. 경로이동

기본 명령어

pwd
print working directory

ls
list

ls -l
list 자세히

cd
change directory

 

상대경로와 절대경로

 

cd var
cd ./var
상대경로

cd /dev/hojin
절대경로

clear
내용들 지우기

man {command}
메뉴얼 보기

ls --help
를 이용도 가능하다

 

여기서 보면 알 수 있듯 root는 / 로 표시되고 home은 ~로 표시되며 ~로 이동도 한번에 가능하다.

 


3. 파일 시스템 명령어

mkdir
디렉토리 생성

rmdir 
디렉토리 삭제

touch
빈 파일 생성

mv
파일이동 / 변경

rm
파일 삭제

rm -r
해당 파일의 recursive한 삭제

cp
파일 복사

rename bin aa
기본 유틸리티가 아니라 mv를 쓴다

폴더는 mkdir로 만들면 될 것이고 파일은 touch로 만든다. 그러고 나서 -l을 이용해 목록을 찍어보면

touch와 ls -l

보라색은 디렉토리라 d가 앞에 붙게되고 text.txt는 파일이다.

 

위에서 rmdir이 디렉토리를 삭제하는 명령어라고 했지만 만약 해당 디렉토리를 rmdir로 지우려 한다면 그 안의 트리들을 전부 수동으로 삭제해줘야 한다. 이럴때 rm의 -r 명령어를 사용하면 된다. 만약 그 안에 파일들을 보면서 삭제하고 싶다면 rm -ri 옵션을 사용하면 된다.

디렉토리와 파일을 만들고 -ri 옵션으로 삭제하는 과정


4. vi, nano

visual의 축약으로 unix기반 운영체제에서 POSIX를 기반으로 만들어진 텍스트 편집기라고 보면 된다. 명령어부터 살펴보자.

기본적으로 만들어진 파일에 vi 명령어를 통해 진입할 수 있다.

 

vi Hello.java

vi +n Hello.java

vi -r Hello.java

위의 vi 명령어를 통해 파일에 들어간 후 i를 입력하면 insert 모드로 들어간다.

 

여기서 ESC를 누르면 아래 insert가 사라진다. :wq를 누르면 저장할 수 있고 거기서 혹은 :q를 누르면 저장 없이 종료 가능하다.

입력을 시작할 때 여러 모드를 사용할 수 있다.

vi 시작하면 끝도 없을 것 같아서 다음으로 넘어가자

 

nano라는 것도 사용할 수 있는데 리눅스 기본 편집기로 nano와 editor 두 가지 명령어로 접근 가능하다.

nano Hello.java

editor Hello.java

이 또한 텍스트 편집기이므로 리눅스로 돌아가보자.

 


5. 파일 찾기와 파일정보 확인

 

- find

해당 워크스페이스의 구조가 다음과 같고 .java 파일을 모두 찾고 싶다면

find ./ -name *.java

find ./ -name *Hello*
Hello 포함된 것 찾기

이렇게 적어주면 java 파일의 경로가 모두 나오게 된다. 용량으로도 찾아줄 수 있는데

find . -name *.java -size +1c

이렇게 검색해주면 바이트 단위의 검색이 가능하다.

기본 셋팅 자체가 512바이트를 1 사이즈로 보기 때문에 바이트 검색을 위해선 c를 입력해줘야 한다

 

- cat

concatenate file and print on the standard output

문서 전체를 출력하는 명령어다.

cat Hello.java

 

- head

output the first part of files

문서의 일부를 출력하는 명령어로

head -n2 Hello.java
앞의 두 줄만 검색
tail -n2 Hello.java
뒤의 두 줄만 검색

 

- grep

print lines matching a pattern

grep class Hello.java
Hello.java에서 class를 찾아 해당 라인을 출력

grep -i class Hello.java
대소문자 구분 X

 

 

- ls

ls Hello[12].java

이렇게 하면 Hello1, Hello2를 동시에 조금 더 정확하게 찾을 수 있다.

 

 

- cmp

cmp Hello.java Hello1.java

이렇게 두 개의 파일이 있다고 했을 때 cmp를 진행하면 다음과 같다.

 

 

- diff

cmp가 일종의 요약이었다면 diff는 다른 부분을 비교해준다.

diff Hello.java Hello1.java

 

- file

해당 파일에 대한 요약정보를 보여준다.


6. 그 외 명령어들

- clear

쉘 초기화

 

- history

지금까지 다뤘던 명령어 리스트업

이곳에 있는 숫자를 이용해서 명령어를 실행할 수도 있는데

!245

는 file Hello1.java가 된다.

 

- redirect

위에서 쓴 명령어 리스트업을 파일화 하고 싶다면

history > listup

이렇게 적어주면 파일화된 history들을 확인할 수 있다.

echo와 redirect를 동시에 사용하면 vi나 기타 편집기를 사용하지 않고도 바로 파일화를 할 수도 있는데

echo helloooo > echotest

이렇게 적어주면 helloooo라는 내용의 echotest파일이 만들어지게 된다.

잠깐 여기서 같은 파일에 또 echo를 해주면?

echo again > echotest

뭘봐 임마 덮어써진다. 이어 쓰려면 >>를 써줘야 한다.

 

echo again2 >> echotest

원하는 결과가 나왔다.

 

- |

| 를 통해 앞에 들어온 입력에 대한 연산을 선택할 수 있다.

cat Hello | grep He

이렇게 적으면 Hello를 입력해서 그 안의 'He'를 확인할 수 있다.

익숙하다. 프로세스 킬이나 네트워크 확인할 때 뭔지도 모르고 썼던 것 같은데 이런 용도였다.

 

cat test | sort -r

이건 파일을 거꾸로 출력해준다

 

cat test | sort -r | grep el

이건 test를 reverse로 정렬해서 el이 있는지 확인하는 구문이다.

 

 

ls 에서도 | 를 이용할 수 있는데

ls -l | less

이렇게 적어주면 해당 디렉토리에 있는 파일 명세를 끊어서 볼 수 있다.

ls -l | more

이건 더 볼수 있다.

 

;

| 가 해당 입력에 대한 연산이었다면 ;은 그냥 명령어를 한 줄에 연속으로 쓸 때 쓸 수 있다.

touch echotest; echo "again3" >> echotest; cat echotest

6. 파일압축

리눅스의 파일 압축에 대해 알기 위해선 tar에 대해 이해하고 있어야 한다.

tar란 Tape Archive의 줄임말로 

tar + zip