Linux
대표적인 Linux 배포판
Linux, Shell Script 학습 가이드
Linux를 사용하는 방법
VirtualBox에 Linux설치, Docker로 설치
윈도우에서는 WSL 사용
Notebook에서 터미널 실행
Cloud에서 띄우는 인스턴스에서 연습
쉘
터미널/콘솔
sh
bash
zsh
쉘 UX
쉘을 사용하는 경우
명령어 | 내용 |
---|---|
위,아래 화살표 | 이전 명령어 가져오기 |
Ctrl + a | 줄 맨 앞으로 커서 이동 |
Ctrl + e | 줄 맨 끝으로 커서 이동 |
Ctrl + l | 터미널을 모두 지우기 (clear,cls 와 동일) |
Ctrl + d | 현재 단어 지우기 |
Ctrl + k | 현재 커서부터 처음까지 지우기 |
Ctrl + c | 터미널 실행 중지 |
명령어 | 내용 | 예시 |
---|---|---|
pwd | 현재 directory 위치 출력 | pwd |
mkdir | directory 생성 | mkdir 생성할 directory |
ls | 현재 접근한 directory의 모든 파일 명을 출력 | ls |
ls -al | 현재 접근한 directory의 모든 파일의 권한, 크기, 날짜, 이름 등을 출력 | ls -al |
mv | 파일이나 directory를 이동할 때 사용, 주로 파일명을 변경할 때 사용 | mv 현재 directory, 이동할 directory |
cp | 파일 및 directory를 복사할 때 사용(하위 directory나 file이 있으면 실행x) | cp 복사할 directory, 생성될 directory |
cp -r | 파일 및 directory를 복사할 때 하위 directory까지 모두 복사 | cp 복사할 directory, 생성될 directory -r |
rm | 파일 삭제 | rm 제거할 파일 |
rmdir | directory 삭제 | rmdir 제거할 directory |
echo | python의 print문과 비슷하게 결과를 출력, 1옆의 ` 를 통해 쉘 커맨드 결과를 출력 | echo “hi” , echo ‘pwd` |
bash | 쉘 스크립트 실행 | bash ~ |
history | 최근에 입력한 쉘 커맨드 history 출력 , ! 줄번호로 다시 커맨드 활용 가능 | history , !35 |
명령어 | 내용 |
---|---|
cd | 디렉토리 변경 |
cd . | 현재 위치한 디렉토리로 이동 (새로고침) |
cd .. | 상위 디렉토리로 이동 |
cd - | 이전에 위치했던 디렉토리로 이동 (뒤로가기) |
cd / | ROOT 디렉토리로 이동 |
cd ~ | 홈 디렉토리로 이동 |
명령어 | 내용 |
---|---|
cat | 특정 파일 내용 출력 (concatenate) |
cat ... ... | 여러 파일을 인자로 주면 합쳐서 출력 |
cat ... > ... | 파일에 OVERWRITE 하고 싶은 경우 |
cat ... >> ... | 파일에 APPEND 하고 싶은 경우 |
명령어 | 내용 |
---|---|
find | 현재 디렉토리의 파일 및 디렉토리 출려 |
find . -name “STR” | 지정된 이름을 가지는 파일 검색 |
find . -name “*STR” | 지정된 문자열로 시작되는 파일 검색 |
find . -name “STR*” | 지정된 문자열로 끝나는 파일 검색 |
find . -name “STR” | 지정된 문자열을 포함하는 파일 검색 |
find . -name test -type d | test라는 이름의 디렉토리 검색 |
find . -name test -type f | test라는 이름의 일반 파일 검색 |
명령어 | 내용 |
---|---|
sort | 해당 파일 행 정렬 (오름차순) |
sort -n | 라인의 각 필드를 비교하는 대상을 숫자로 변경 |
sort -f | 영어를 정렬할 때, 대소문자 구별 x |
sort -r | 출력 순서를 내림차순으로 변경 |
sort -b | 앞에 붙는 공백 무시 |
sort -t | 필드 구분자 무시 |
sort -m | 정렬된 파일을 병합 |
sort -u | 정렬 후 ,중복행 제거 |
명령어 | 내용 |
---|---|
uniq | 중복된 행이 연속으로 있다면 중복되는 행 제거 |
uniq -c | 중복되는 행이 몇 번 나오는지를 출력 (개수 세기) |
uniq -d | 중복되는 행 중 한 행만 출력 |
uniq -D | 중복되는 모든 행 출력 |
uniq -N | N번째 행부터 중복 검사 |
uniq -i | 중복되는 행을 한 라인이라 생각하고 출력 |
uniq -u | 중복 행이 없는 것만 출력 |
uniq -w | N번째 문자까지만 비교대상으로 정렬 |
uniq -s | N번째 문자까지는 비교대상에서 제외하고 정렬 |
uniq -f | N번째 필드를 비교대상에서 제외하고 정렬 |
명령어 | 내용 |
---|---|
grep “STR” 파일 | 파일에 주어진 패턴 목록(글자)과 매칭되는 라인 검색 (특정 문자열 검색) |
grep “STR” 파일1 파일2 | 여러 디렉토리에서 문자열 찾기 |
grep “STR” * | 모든 디렉토리에 있는 파일에서 문자열 찾기 |
grep “STR” *.txt | 특정 확장자를 가진 모든 파일에서 문자열 찾기 |
grep -i | 대소문자 구별x |
grep -m 숫자 | 최대로 표시될 수 있는 결과 제한 |
grep -c | 일치하는 행의 수를 출력(count) |
grep -o | 검색하여 일치하는 문자열만 표시 |
grep -v | 일치하지 않는 행만 출력 |
grep -l | 패턴이 포함된 파일의 이름을 출력 |
grep -w | 단어와 일치하는 행만 출력 |
grep -x | 라인과 일치하는 행만 출력 |
grep -r | 하위 디렉토리를 포함한 모든 파일에서 검색 |
grep -e | 정규 표현식 패턴으로 검색 |
명령어 | 내용 |
---|---|
cut | 파일에서 특정 필드 추출 |
cut -d | 지정한 문자를 구분자로 사용 |
cut -c | 문자열을 기준으로 잘라내기 |
cut -f | 필드를 기준으로 잘라내기 |
cut -z | 라인의 구분자를 개행문자가 아닌 NULL을 사용 |
command mode
명령어 | 내용 |
---|---|
dd | 현재 위치한 한 줄 삭제 또는 잘라내기(3dd 는 3 줄 삭제) |
i | INSERT 모드로 변경 |
x | 커서가 위치한 곳의 글자 1개 삭제 또는 잘라내기(5x : 문자 5개 삭제) |
yy | 현재 줄을 복사(1줄을 ctrl + c) |
p | 현재 커서가 있는 줄 바로 아래에 내용 붙여넣기 |
u | 방금 한 명령 취소 (ctrl +z) |
Last line mode
명령어 | 내용 |
---|---|
w | 현재 파일명으로 저장 |
q | vi 종료(저장 x) |
q! | vi 강제 종료 |
wq | vi 저장 후 종료 |
wq! | vi 저장 후 강제 종료 |
/문자 | 현재 커서 위치부터 앞으로 문자 탐색 |
?문자 | 현재 커서 위치부터 뒤로 문자 탐색 |
set nu | vi 라인 번호 출력 |
명령어 | 내용 | 예시 |
---|---|---|
env | 환경 변수 조회, 등록 | env |
env grep ... | 특정 환경 변수 조회 | env grep 환경변수명 |
export | 환경 변수 일시 적용 | export 환경변수명 = 값 |
unset | 환경 변수 해제 | unset 환경변수명 |
환경 변수 영구 적용
sudo
alias
표준 스트림(Stream)
Unix에서 동작하는 프로그램은 커맨드 실행시 3개의 Stream이 생성
stdin : 0으로 표현, 입력(비밀번호, 커맨드 등)
stdout : 1로 표현, 출력 값(터미널에 나오는 값)
stderr : 2로 표현, 디버깅 정보나 에러 출력
Redirection
프로그램의 출력(stdout)을 다른 파일이나 스트림으로 전달
: 덮어쓰기(Overwrite) 파일이 없으면 생성하고 저장
: 맨 아래에 추가하기(Append)
기존의 vi-test3.sh를 hi로 덮어쓰고 hello추가해서 출력
Pipe
test.txt 파일에 “Hi!!!!”를 입력해주세요(vi 사용 금지)
test.txt 파일 맨 아래에 “kkkkk”를 입력해주세요(vi 사용 금지)
test.txt의 라인 수를 구해주세요(힌트 : wc -l를 쓰면 라인 수를 구할 수 있음)
서버에서 자주 사용하는 쉘 커맨드
현재 실행되고 있는 프로세스 출력하기 : Process Status
-e : 모든 프로세스
-f : Full Format으로 자세히 보여줌
현재 사용 중인 디스크 용량 확인 : Disk Free
-h : 사람이 읽기 쉬운 형태로 출력
r = Read(읽기), 4
w = Write(쓰기), 2
x = eXecute(실행하기), 1
r-x : 읽거나 실행할 수는 있지만 수정은 불가능
chmod 755 vi-test2.sh 를 실행하면 Permission이 변경되는 것을 볼 수 있다.
.sh 파일을 생성하고, 그 안에 쉘 커맨드를 추가
파이썬처럼 if, while, case 문이 존재하며 작성시 bash name.sh로 실행 가능하다
쉘 스크립트 = 쉘 커맨드의 조합
지금은 쉘 커맨드에 익숙해진 후, 추후에 하나씩 스크립트로 생성
#!/bin/bash : Shebang
$(date +%s) : date를 %s(unix timestamp)로 변형
START=$(date + %s) : 변수 저장