[ServerProgramming] UNIX의 BASIC COMMAND를 배워보자!

2024. 10. 5. 07:00CS/ServerProgramming

1. Shell

쉘이란 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램

  • BASH : 거의 모든 리눅스 배포판에서 사용하는 쉘. 가장 많고 가장 범용적이다.
  • CSH : C 스타일 문법의 쉘
  • KSH, DASH, TCSH 등..
  • SH : 스크립트 용으로 많이 사용됨.

shell commands의 기본 규칙은 다음과 같다.

  • command --option xxx
  • command -option xxx
  • 빈칸이 구분자로 사용된다. 빈칸을 구분자가 아닌, 명령에 포함하려면 " 또는 ' 를 사용하면 된다.
  • command —help , man command: 옵션 등 도움말

2. 기본 명령어

로그인/로그아웃

명령 기능 주요 옵션 예제

ssh 유닉스 시스템에 접속
logout, exit 유닉스시스템 접속해제
passwd 암호 변경

파일/디렉토리 조작

명령 기능 주요 옵션 예제

pwd 현재 디렉토리 경로 출력    
ls   -a : 숨김파일출력  
-l : 파일 상세정보 출력      
-F : 종류 구분      
cp 파일/디렉토리 복사 -r : 디렉토리 통째로 복사 cp a.txt b.txt : 파일 명 바꾸기
mv 파일/디렉토리 이름변경과 이동    
mkdir 디렉토리 생성    
rm 파일/디렉토리 삭제 -r : 디렉토리 통째로 삭제  
주의! rm -r 로 디렉토리를 삭제하면 하위 디렉토리의 모든 파일이 삭제되고 복구도 불가능.      
cat 파일 내용 출력    
grep 특정한 파일에서 특정한 패턴 검색 -r : 하위 폴더까지 검색  
-n : 검색 결과 파일의 행 번호 표시 grep abcd a.txt : a.txt 에서 abcd 패턴 모두 검색    
grep -rn 'YouGotIt' : 작업 디렉토리에서 YouGotIt 문자열 검색      
find 경로 표현식1 표현식2 ... 파일 시스템에서 파일 검색 주요 표현식은 다음과 같다.  
-name 문자열 : 제목 검색      
-empty : 빈 디렉터리 혹은 크기가 0인 파일을 검색 find /tmp/kernel -name fcntl.c    

프로세스 조작

명령 기능 주요 옵션 예제

ps 현재 실행 중인 프로세스의 정보 출력 -ef : 모든 프로세스에 대해 상세 정보 출력 `ps -ef
kill 프로세스 강제 종료 -9 : 강제 종료  

경로 및 환경설정 & Tips

절대 경로

  • / 로 시작하는 경로

상대 경로

  • /로 시작하지 않는 경로

alias

  • 특정 명령의 다른 이름 지정

env

  • 지금 자신의 환경 변수 나열

PATH

  • 실행파일 또는 참조할 파일의 위치 결정

tar

  • 여러 파일을 하나로 묶음

zip , gz

  • 여러 파일을 하나로 압축

history

  • 사용한 명령어들 나열

indent

  • 소스코드 예쁘게 정렬
  • indent npsl bli0 sob nbc i8 l1000 code.c
  • alias ind='indent npsl bli0 sob nbc i8 l1000'

Ctrl + s && Ctrl + q

  • 스크린 출력 정지/재개

ctrl + r

  • history에서 최근 사용된 명령 자동 완성

Meta characters

Characters Function

> 결과물을 새로운 파일로 저장.
ls > aa.txt : ls의 결과를 aa.txt 파일에 저장  
aa.txt가 이미 있으면 삭제하고 새로 만듬.  
>> 파일이 이미 있으면 그 파일에 덧붙여서 추가.
< standard 입력으로 파일을 사용.
? 하나의 어느 문자
` `
; 한 라인에 여러 명령어를 줄 때 ;로 구분
& background 실행

 

scp

  • cp 명령과 유사하나 ssh 프로토콜을 이용해서 원격 머신에 복사 수행
  • scp filename server_name:path
  • scp -P 221 aa.txt swist2.cbnu.ac.kr:/tmp/bb.txt : aa.txt를 swist2 서버에 /tmp/ 경로에 bb.txt 이름으로 복사
  • 단, tmp는 서버에 존재하는 디렉토리어야 함.

실습

작업 디렉토리의 모든 하위 디렉토리에 대해 `YouGotIt`이 포함된 파일과 그 행을 출력해보자!

grep -rn 'YouGotIt'