Linux & Shell command

skh951225·2022년 2월 14일
0
post-thumbnail

Linux를 알아야 하는 이유

  • 서버에서 자주 사용하는 OS
  • Free, 오픈 소스
  • 안정성, 신뢰성

Linux 기본 쉘 커맨드

mkdir (Make Directory)

mkdir (디렉토리명)


test 디렉토리가 생성된 것을 확인할 수 있습니다.

ls (List Segments)

ls (옵션)

옵션

-a : .으로 시작하는 파일, 폴더를 포함해 전체 파일 출력
-l : 퍼미션, 소유자ㅡ 만든 날짜, 용량까지 출력
-h : 용량을 사람이 읽기 쉽도록 GB, MB 등 표현 '-l'과 함께 사용

ls : 하위 디렉토리인 test가 나타난다.
ls ~ : 상위 디렉토리의 집합이 나타난다.
ls -a : 파일, 폴더를 포함한 전체 파일명을 출력한다.
ls -al : -a 와 -l을 합친것 (a와 l의 순서가 바뀌어도 무관)
ls -lh : -l 과 -h를 합친것으로 용량의 단위가 나오는 것을 볼 수 있다.

pwd (Print Working Directory)

pwd


현재 폴더 경로를 절대 경로로 보여줌

cd (Change Directory)

cd (디렉토리명)


test 디렉토리로 이동한 것을 볼 수 있다.
Tab을 통해 자동완성할 수 있다. 위의 예에서는 하위 디렉토리로 test 뿐이므로
cd t까지 입력한 상태에서 Tab을 누르게 되면 cd test/ 가 입력된다.

echo

echo (텍스트) or (`쉘 커맨드`) 
#`쉘 커맨드`의 `는 backtick으로 키보드 좌측 상단 esc 밑의 키


echo 'hi' : hi 출력
echo `pwd` : 현재 절대경로 출력

vi(vim)

vi (파일명.확장자)

해당 파일명을 가진 파일이 없다면 생성하고 편집, 있다면 해당 파일 편집

실행하게 되면 이렇게 편집창으로 들어오게되는데 3가지의 Mode가 있다.

vi 편집기의 Mode

Insert Mode
- Command Mode 에서 i를 누르면 Insert Mode로 변경 가능
- 파일을 수정할 수 있는 모드

Command Mode
- vi 실행시 기본모드

dd : 현재 위치한 한 줄 삭제
i : INSERT 모드로 변경
x : 커서가 위치한 곳으로 글자 1개 삭제
yy : 현재 줄을 복사
p : 현재 커서가 있는 줄 바로 아래에 붙여 넣기
k : 커서 위로
j : 커서 아래로
l : 커서 오른쪽으로
h : 커서 왼쪽으로

Last Line Mode
- ESC를 누른후 콜론(:)혹은 /를 누르면 나오는 모드

:w : 현재 파일명으로 저장
:q : vi 종료(저장되지않음)
:q! : vi 강제 종료(!는 강제의 의미)
:wq : 저장한 후 종료
/문자 : 문자 탐색, 탐색한 후 n을 누르면 계속 탐색 실행
:set nu : vi 라인 번호 출력(:set nu!로 삭제할 수 있음)

bash

bash (파일명)



test.sh 가 실행된 결과를 확인할 수 있다.

sudo(superuser do / substitute user do)

sudo (명령어)


관리자 권한으로 (명령어)를 실행
관리자 권한으로 실행하는 만큼 신중하게 사용해야한다.

cp(Copy)

cp (copy파일/폴더) (paste파일/폴더)

-r : 디렉토리를 복사할 때 디렉토리 안에 파일이 있으면 재귀적으로 모두 복사
-f : 복사할 때 강제로 실행

test.sh 를 복사하여 test_.sh로 붙여넣음

상위폴더를 이동하여 test폴더를 test_폴더로 복사함(폴더 안의 파일을 재귀적으로 모두 복사)

mv(Move)

mv (파일/폴더에서) (파일/폴더로)

파일, 폴더 이동하기(또는 이름 바꿀 때도 활용)

test_.shtest1.sh로 이름을 바꿈

cat(concatenate)

cat (파일1) (파일2) .. (파일n)            

파일의 내용을 순차적으로 출력(1\leqn)

파일이 1개일때도 출력된다.

cat (파일1) (파일2) .. (파일n) > (파일k)
cat (파일1) (파일2) .. (파일n) >> (파일k)

파일을 저장(OVERWRITE)하고 싶은 경우 >를 사용한다.
파일을 추가(APPEND)하고 싶은 경우 >>를 사용한다.

history

history 	# !N 으로 N번째 History 재실행가능

최근에 입력한 쉘 커맨드 History 출력

!366 : 366번째 커맨드인 cat new_test.sh 를 실행

find

find (파일명)

해당 파일명을 가진 파일을 찾음

export

export (변수명)=값


변수를 불러올땐 $를 앞에 붙여줘야한다. ex) echo $water

이러한 변수는 터미널이 꺼지면 사라지게 되는데 매번 쉘을 실행할 때 마다 환경변수를 저장하고 싶으면 .bashrc 혹은 .zshrc에 저장하면됨

alias

alias (별칭)=('명령어')


터미널에서 alias라고 치면 현재 별칭으로 설정된 것을 볼 수 있음
alias ll3='ls -h'를 선언해서 ll3ls -hl과 같은 결과가 나오는 것을 확인할 수 있다.

head/tail

head -n (k) (파일)
tail -n (k) (파일)

파일의 앞/뒤 (k)줄 출력

head -n 3 new_test.sh : new_test.sh 파일 앞 3줄 출력

sort

sort (파일)

파일을 오름차순으로 정렬(파일은 변하지 않음)

sort fruits.txt : fruits.txt 파일을 오름차순으로 정렬(fruits.txt 파일은 변하지 않음)
sort -r : 내림차순으로 정렬
sort -n : Numerical Sort

uniq

uniq (파일)

중복된 행이 연속으로 있는 경우 중복 제거(파일은 변하지 않음)

sort와 함께 사용되는 경우가 많음
cat fruits.txt|sort|uniq : fruits.txt를 출력하는데, 먼저 정렬을 하고 중복제거
uniq -c : 중복 행의 개수 출력

grep

grep (패턴) (파일명)

grep -c : 대소문자 구분 없이 찾기
grep -w : 정확히 그 단어만 찾기
grep -v : 특정 패턴 제외한 결과 출력
grep -E : 정규 표현식 사용

cut

cut -d (구분자) -f (잘라낼 필드)


cat cut_file | cut -d : -f 1,7 : 구분자는 : 필드는 1,7을 출력

Redirection & Pipe

Redirection : 프로그램의 출력을 다른 파일이나 스트림으로 전달
> : 파일이 없으면 생성하고 저장 (Overwrite)
>> : 맨아래에 추가 (Append)

Pipe : 프로그램의 출력을 다른 프로그램의 입력으로 사용하고 싶은 경우
(A)|(B) : A의 출력을 B의 입력으로 전달

0개의 댓글