AWS, Docker/리눅스

리눅스 command 정리

zooyeonii 2022. 2. 18. 00:46

리눅스 이전 게시글 모음

cat, head, tail

uniq (중복제거), grep (원하는 행 출력)


Shell

 

  • 쉘은 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램이다. 
  • 터미널/콘솔은 쉘을 실행하기 위해 문자 입력을 받아서 컴퓨터에 전달하는 역할을 한다. 
  • bash는 리눅스 표준 쉘을 말한다. 기본적인 명령어는 다 비슷하다. 

쉘 커맨드는 정말 많이 쓰인다. 데이터 전처리를 하기 위해 사용하는 경우, Docker를 사용하는 경우, python pyTorch에서 패키지 install할 때도 쓰인다. 

나도 주로 Docker 실행할 때와, 데이터 전처리를 할 때, 그리고 실행 파일을 만들 때 사용했었다. 

vi 명령어

  • vi vi-test.sh   (sh 파일에서 입력, 수정 가능하다.)
  • ESC :wq  (저장하고 나가기)
  • ESC :wq!  (강제로 저장하고 나오기; 자주 쓰게되는 것 같다..)
  • ESC :q  (그냥 나가기)

sudo 명령어 

관리자 권한으로 실행하고 싶은 경우 커맨드 앞에 sudo를 붙인다. 

꿀팁 명령어

  • history (최근에 입력한 쉘 커맨드 출력해준다. 원래 방향키로 예전 입력을 썼었는데, 이렇게 되면 30번째 입력했던 커맨드를 !30 으로 간편하게 쓸 수 있다.)

Redirection & Pipe

  • Redirection : 프로그램의 출력을 다른 파일이나 스트림으로 전달
  • Pipe : 프로그램의 출력을 다른 프로그램의 입력으로 사용하고 싶은 경우

scp

  • -r  (재귀적으로 복사)
  • -P  (ssh 포트 지정)
  • -i  (SSH 설정을 활용해 실행)
  • 예) scp local_path user@ip:remote_directory

nohup

백그라운드 실행 : nohup python3 app.py &

보통 백그라운드 실행하고 싶은 명령어의 끝에 '&'를 붙였는데, nohup은 파일을 백그라운드로 실행해준다.

굉장히 유용하게 쓰일 명령어라고 생각한다. 진작 알았으면 좋았을텐데..

chmod

파일의 권한을 변경하는 경우 사용한다. (Change mode)

그냥 sh 파일을 실행하려고 하면, 다음과 같은 오류를 만나게 된다. 

ERROR : -bash ./install.sh: Permission denied

.sh 파일을 실행시킬 때는 항상 명심해야하는 것이 있다. 

생성 한 후, 실행하기 전에 반드시 권한을 부여할 것! 

  • $ chmod 755 install.sh 

뒤에 오는 3자리수는, 위치의 의미는 (소유자/소유그룹/기타) 이며, 숫자의 의미는 (읽기, 쓰기, 접근) 권한이다.

즉 3개의 숫자만으로, 각 대상이 파일에 접근해도 되는지, 접근한다면 어디까지 권한이 부여되는지 알수 있다. 

숫자는 8진수이며, 읽기가 가능하면 4 (2^2), 쓰기가 가능하면 2, 접근이 가능하면 1이다.

따라서 chmod 755 라면, 소유자는 읽기,쓰기,접근(4+2+1)이 모두 가능하고, 나머지는 읽기와 접근(4+1)만 가능하다는 것이다. 

 


추가적으로, 명령어를 조합해서 카카오톡 대화글 데이터에서 가장 참여도가 높은 5명을 뽑아보려고 한다.

로컬에서 데이터 컨테이너로 가져오는 방법이 궁금하다면 : Docker 활용하기 <2. 로컬에서 컨테이너로 파일 공유>

 

  • cat kakaotalk.txt | tr -d '[' | cut -d ']' -f1 | sort | uniq -c -d | sort -nr | head -n5

명령어는 tr을 써서 '[' 을 잘라내고, cut을 써서 ']'으로 나뉜 필드 중 1번째를 추출하고, sort, uniq -c (중복 행의 개수 출력) -d (중복 행만 출력), 다시 sort -nr (숫자 내림차순으로), head -n5 (가장 상위 5행) 

 

따라서 결론은 현배와 함께 가장 활발히 톡방 활성화에 기여하였다..ㅎㅎ