명령어 | 기능 | 옵션 |
---|---|---|
man | 커맨드의 매뉴얼 문서 확인 | - |
mkdir | 폴더 생성 | - |
ls | 현재 접근한 폴더 파일확인 | -a : 전체 파일,폴더 출력 , -l : 권한,소유자,만든날짜,용량 출력 -h : GB, MB표현으로 용량표현 |
- | - | ls -al , ls -lh, ls ~ (ls 뒤에 경로 적어주면 해당 경로 하위 경로 확인가능) 등으로 사용 |
pwd | 현재위치 | - |
cd | 경로 이동 | - |
echo | print처럼 출력 | - |
echo `pwd` | ``안의 커맨드 결과 출력 | - |
cp | 파일이나 폴더 복사 | -r : 디렉토리 복사할때, 그 안의 파일 재귀적으로 모두 복사, -f : 강제로 실행 |
vi | vim 편집기로 파일 생성 | i: INSERT 모드로 바뀌게 파일 수정 가능 |
- | - | :wq 저장 후 나가기, :q 그냥 나가기 , :wq! 강제로 저장하고 나가기 |
bash | 쉘 스크립트 실행 | - |
sudo | 관리자 권한으로 실행 | - |
mv | 파일 이동, 이름변경 | - |
cat | 파일안의 내용 출력 | cat A > B : 파일 B에 overwrite cat / A >> B : 파일 B에 A를 추가 |
clear | 터미널창 지워줌 | - |
history | 최근에 입력한 쉘 커맨드 이력 출력 | 결과에서 느낌표 붙여 숫자입력하면 해당 커맨드 다시 활용 가능 |
find | 파일 및 디렉토리 검색시 사용 | find . -name "File" : 현재 디렉토리(.)에서 File이라는 이름 가지는 파일이나 디렉토리 검색 |
export | 환경 변수 설정 | vi ~/.bashrc 또는 vi ~/.zshrc 로 실제 사용하는 쉘에 환경변수를 저장할 수 있음 |
- | - | 최하단에 export 변수="값" 으로 저장하고 저장하면 됨 |
source | linux환경설정 재로그인하지않고 즉시적용 | source ~/.basrhc 또는 vi ~/.zshrc 로 즉시적용할 수 있음 |
alias | 현재 별칭으로 설정된 것들을 볼 수 있음 | 뒤에 export처럼 변수명과 '명령어' 지정하게되면 별칭으로 지정할 수 있음 |
최초의 기본 Mode와 동일하다고 볼 수 있다.
(sudo) apt-get install tree
tree -L
tree -L 1
tree -L 2
level에 맞게 depth 설정해서 출력해줌
head -n 3 vi-test.sh
-r : 내림차순 정렬 (default : 오름차순)
-n : Numeric Sort
cat fruits.txt | sort
중복된 행이 연속으로 있는 경우 제거한다. 따라서, sort를 통해 중복된것을 연속으로 있게 한 이후에 uniq으로 제거한다.
-c : 중복 행의 개수 출력
cat fruits.txt|uniq
cat fruits.txt|sort|uniq
cat fruits.txt|sort|uniq | wc -l (wc -l은 출력 결과물이 몇줄인지 출력한다)
파일에서 주어진 패턴 목록과 매칭되는 라인 검색
-i : 대소문자 구분없이
-w : 정확한 단어만 찾기
-v : 특정 패턴 제외한 결과 출력
-E : 정규표현식 사용
grep은 pipe(|)와 같이 사용되고 한다. 정규표현식에 대한 링크는 위에 옵션 -E에 걸어뒀다.
파일에서 특정 필드를 추출할때 사용한다.
-f : 잘라낼 필드 지정
-d : 필드 구분하는 구분자 (default : \t)
cat A | cut -d : -f 1,7
A 문서에서 :를 기준으로 자른 값들 중, 1번째와 7번째 값을 가져온다.
텍스트 처리 도구
특정 pattern을 지정하고, 해당 pattern에 action을 수행한다.
awk 'pattern {action}' input_file
$1,$2 : 구분자 기준으로 나눴을때 첫번째 field, 두번째 field를 의미한다.
-F : 구분자에 대한 옵션이다
awk -F : '{print $1}' cut_file
cut_file이라는 파일을 :를 기준으로 나누고, 첫번째 field를 출력한다.
표준 스트림
Unix에서 동작하는 프로그램은 command 실행시 3개의 stream이 생성된다. 이는 아래와 같다.
redirection은 프로그램의 출력 (stdout)을 다른 파일이나 스트림에 전달하는 것이다.
> : 덮어쓰기, 파일이 없으면 생성후 저장
>> : 맨 아래에 해당 내용 추가하기
이전에 예시로 있었던 cat참고
python train.py > log_file 2>&1 &
위의 명령어는 redirection을 응용한 명령어이다. 차례로 따져보면, train.py를 실행하고 해당 결과를 log_file에 저장하며, stderr(2)에 해당하는 오류발생 메시지를 stdout(1)로 리다이렉트하여 백그라운드에서 (&) 실행한다는 것을 의미한다.
pipe는 프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하고 싶은 경우 사용한다.
ls | grep "vi"
현재 폴더 경로(ls)에서 "vi"라는 이름을 가진 파일이나 폴더를 찾는 것을 pipe를 통해 한번에 실행할 수 있다.
현재 실행되고 있는 process status를 출력한다. 실행하고 있는 PID를 찾기 위해서 활용한다.
-e : 모든 프로세스
-f : Full Format으로 자세히 보여줌
command line 기반 data transfer command이다. Client URL
Request를 테스트할 수 있는 명령어로 서버가 제대로 작동하는지 확인할 수 있다.
curl -X localhost:5000/ {data}
현재 사용중이 disk 용량 상태를 확인해준다.
-h : 사람이 읽기 쉬운 형태로 출력해준다.
disk가 꽉 차있으면 멈추게 된다.
ssh는 안전하게 원격으로 컴퓨터에 접속하고 명령을 실행할 수 있는 프로토콜이다.
ssh -L 8080:localhost:30952 사용자명@SSH_서버
위의 명령어를 예시로 터널링을 진행할 수 있다.
1. 명령어 실행시킨 컴퓨터의 8080포트 오픈
2. 8080포트로 들어오는 트래픽은 SSH 터널을 통해서
3. SSH 서버의 3095 포트로 전달됨
4. localhot:8080에 접속하게 되면 SSH 서버의 30952 포트에 접속하게됨
ssh -i /private-key.pem의 경로/username@hostname(ip) -p portnum
위의 명령어로 접근하게 된다. private key의 local에서의 파일 경로를 넣어주고, username에는 root나 아니면 사용자의 이름, 그리고 hostname은 서버의 ip 그리고 -p 이후엔 server와 연결할 port번호를 입력해준다.
ssh를 이용해서 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어이다. Secure Copy를 의미한다.
-r : 재귀적으로 복사
-P : ssh 포트 지정
-i : ssh 설정을 활용해 실행
scp local_path user@ip:remote_directory
내 컴퓨터에서 서버로 데이터를 보내게된다.
scp user@ip:remote_directory local_path
remote directory에서 내 컴퓨터로 파일을 보낼 수 있다.
scp user@ip:remote_directory user2@ip2:target_remote_directory
terminal이 종료된 이후에도 백그라운드로 작업이 유지되어 실행될 수 있게 해주는 명령어이다.
nohup python3 app.py &
nohup으로 실행하는 파일의 권한은 755여야한다.
만약 백그라운드로 실행되는 파일을 종료시키고 싶다면,
ps ef | grep app.py
를 실행하여, ps ef로 나오는 pid 중 app.py의 pid를 찾아
kill -9 pid
위의 명령어로 pid를 종료할 수 있다. 종료된 app.py의 로그는 nuhup.out에 저장된다.
파일의 권한을 변경하는 경우 사용한다.
r= Read 4
w= Write 2
x= eXecute 1
-= denied
r-x →Read,eXecute : 가능 Write : 불가능 (4+1=5)
755 권한 →7/5/5 의미하고 각각 소유자 권한/ 그룹 권한 / 기타 사용자 권한 으로 이루어져있다. 즉, 755 권한은 소유자는 모든권한이 주어지고 그룹,기타 사용자는 읽고 사용하는 것만 가능한 것이다.
chmod 755 test.sh
이렇게 변경할 수 있다.