Shell 사용법

줍줍·2023년 6월 24일
0

>_

목록 보기
4/5

Shell의 한글 뜻은 껍데기이다.

예전에 GUI가 발달하지 않았을 때 Shell만 사용하는 것을 껍데기만 있었기 때문에 이렇게 불린다고 한다.

command interpreter로서 Shell에는

sh(Bourne shell)
bash(Bourne Again shell)
zsh(Z shell)
ksh, tcsh, csh...

이 있다.

현재 내 mac에서는 zsh을 사용하고 있었고 linux를 실행하기 위한 ubuntu에서는 bash를 사용했다.

  • 다 외우려 하지 말고 이해하려고 하자. 그러려면 뭐의 줄임말인지 알면 될 듯하다.

shell을 변경하는 방법

chsh -s /usr/bin/bash
chsh -s /usr/bin/zsh

난 위 명령어가 안 되어서 아래와 같이 변경했다.

/bin/bash
/bin/zsh

리눅스에서는 윈도우 터미널에서 dir과 달리 pwd(print working directory)를 사용하고 있었다.

리눅스는 unix에서 파생되었고 unix에서 mac도 파생되었기 때문에 dir이 아니라 같은 pwd(print working directory)를 사용한다.

어떤 shell을 사용하는지 알 수 있는 방법

echo $SHELL

추가적으로 어떤 shell이 있는지 아는 방법

cat /etc/shells

manual 보는 법

more less

만약 ls에서 -l 옵션이 궁금하다고 하면

man ls | more

more은 스크린 단위로 출력한다.

man ls | less

Screen 앞뒤 페이지로 vi의 scroll command가 사용가능하다.

나에게는 less가 더 보기 편했다. less를 사용하고 d(down)와 u(up)을 통해서 이동한다.

(less는 more 다음에 나와서 less라고 한다! copyright와 copyleft의 관계를 생각하면 될 듯하다.)

저는 d, u를 이용하면 half forward backward라서 더 사용하기 편리했습니다! 😄

(()괄호 안은 그냥 제 생각입니다!)

-l 은 use a long listing format을 사용한다.

중간에 이동할 때 명령어는 h를 누르면 알 수 있다.

궁금한 걸 검색하는 방법

vim editor를 사용할 때와 같다.

/(keyword)

/를 누르고 원하는 키워드를 검색한다.

이동은 n(next)를 통해서 이동한다.

?(keyword)

backward에서 검색하고 싶으면 ?를 사용한다.

마찬가지로 반대로 이동은 N를 통해서 이동한다.

View Files

cat

cat man ls

File 내용을 그냥 screen에 출력한다.

여기서도 더 쉽게 보기 위해서 pipe line을 사용한다.

more less head tail

cat {$filename} | more
cat {$filename} | less

위의 manual을 볼 때처럼 사용한다.

cat {$filename} | head
cat {$filename} | tail

head tail도 manual을 볼 때 사용할 수 있지만

파일을 볼 때는 파일의 앞부분만 출력할 수 있는 head

파일의 뒷부분만 출력하는 tail이 더 좋지 않나 싶다.

vi filename

vi는 vim의 전신으로 리눅스 개발자들이 정말 많이 사용한다고 한다.

이것만의 단축키는 따로 정리하려고 한다.(너무 많아서..)

vi {$filename}
vim {$filename}

을 사용하면 파일 텍스트를 직접 편집할 수 있다.

아직 나에게는 vscode가 훨씬 편하다.

number of lines, words, characters

wc [-lwc] {$filename}

을 사용한다.

출력 결과는 다음과 같다.!

diff

diff {$file1} {$file2}

파일의 차이를 보여준다.

file

file {$filename}

파일의 속성을 보여준다.

directory

cd

cd는 change directory로 말 그대로 directory를 바꾼다는 것

command

cd ~
cd

위 명령어를 입력하면 home으로 가게 된다.

가끔 cd를 잘못 입력했을 때 왜 처음으로 가는지 이제 이해했다.

cd ..

위 명령어는 parent로 이동한다.

mkdir/rmdir

directory를 생성하고 삭제하는 명령어이다.

command

mkdir {$filename}

{$filename}의 directory를 만든다.

rmdir {$filename}

{$filename}의 directory를 삭제한다. (단, 폴더 안에 아무것도 없어야 함)

폴더에 뭐가 있다면 rm을 이용해서 삭제해준다. -f 옵션을 이용하면 강제적으로 삭제할 수 있다.

rm -r *

rm은 remove의 줄임말로 여기서 *과 함께 입력한다는 것은 다 삭제한다는 의미이다.

추가적으로 - 다음으로 옵션이 붙는다. -r -f -rf 식으로 말이다.

Files

File을 어떻게 관리하는지 배웠다.

li

li는 List Files의 abbreviation으로 주로 폴더 안에 파일들을 list로 보여준다.

alias ll = 'ls -alF' \rarr 자주 사용하는 명령어를 축약해준다.

alias는 뭐의 abbreviation인지 몰라서 찾아봤는데 없어서 chatGPT한테 물어본 결과는 다음과 같다.

In Linux, the "alias" is not an abbreviation for any specific term.

사용법은 아래와 같다.

command

ls
ls -l
ls -lf

alias
ll

permission 결과 보는 법


여기서 제일 위를 살펴보자

drwxrwxr-x 4 jup jup 4096 Jun 24 17:32 ./

이걸 하나씩 분해하면 다음과 같다.

d rwx rwx r-x 4 jup jup 4096 Jun 24 17:32 ./

제일 앞의 d는 directory를 의미한다.

다음 rwx는 owner의 permssion을 의미한다.

r \rarr read / w \rarr write / x \rarr execute

owner 다음으로는 group에 속한 user가 가진 권한을 의미하고 다음은 group 밖 user의 권한을 의미한다.

따라서 여기서 owner와 users of group는 read write execute가 가능하지만 users out of group는 read execute만 가능하고 write는 불가능하다.

다음 jup jup은 각각 owner와 group을 의미하고 그 다음은 size in bytes 이고 그 다음은 수정 일자이다.

read

directory의 내용을 볼 수 있다. ls가 사용 가능하다.

write

directory에 file을 저장하고, directory 이름을 변경, 삭제가 가능하다.

execute

cd로 접근을 가능하지만 ls로 리스트는 불가하다.

cp

command option

cp -f {$filename} dest-file
cp -f {$filename} dest-dir

-f: force to delete and copy even if the same filename exists
강제로 복사할 때 추가하는 옵션 --force도 가능함.

cp -i {$filename} dest-file
cp -i {$filename} dest-dir

-i: inquire copy or not in the case that the same filename exists 물어보고 할 때 추가하는 옵션 --force도 가능함.

mv

rm

cp

Find & Grep

file을 찾을 때

find {$directory} -name {$filename}

예시는 다음과 같다.

find . -name Binaries

참고로 여기서 .은 시스템 전체를 의미한다.

아직 sudo find / -name Binaries를 사용하면 왜 이런 결과가 나오는지 모르겠다.

string을 찾을 때

grep {$string} {$filename}

예시는 다음과 같다.

find apt-get  Binaries

Links

이건 포인터가 주소를 가져오는 거랑 의미가 비슷했다.

date 파일의 hardlink를 만드려면 아래와 ln을 사용한다.

ln date date-hardlink

예시는 아래와 같다.

ln date date-hardlink

hard links에서 -s option만 주면 된다.

ln -s date date-symlink

이외의 Shortcuts

history

기록을 본다

!100

100번째 명령어를 재실행한다.

!!

직전 명령어를 재실행한다.

!c
!f

!c는 c로 시작한 명령어를 재실행하고
!f는 f로 시작하는 명령어를 재실행한다.


참고

https://linuxhint.com/check-file-permissions-with-ls-linux/

profile
쉽게 설명하지 못하면 이해 못한 것

0개의 댓글