[TIL] 210824-30

슬지로운 개발생활·2021년 8월 30일
0

TIL

목록 보기
63/73
post-thumbnail

Shell?!

Unix

종류

  • Bourne Shell
  • Bash
  • fish
  • zsh

사용이점

Linux BSD, Mac OS, Windows에서 unix shell을 사용할 수 있다.
→ Windows 예전엔 Cygwin을 썼지만, 현재는 Windows안에 Linux가 포함 되어 있다. ( WSL : Windows Subsystem for Linux )
→ WSL 설치하기 번거롭다면 PowerShell을 이용할 수 있다.(CMD 보다 강력하다!)

Unix는 다 텍스트로 이루어진 반면 PowerShell은 객체(Object)로 구성되어있기 때문에 다른 터미널이다.
하지만, PowerShell에서 Unix에서 사용하는 명령어들을 사용할 수 있게 aliases를 제공한다.



Terminal 명령어

Manual : 사용자 메뉴얼

1. Manual

man은 Manual / Users manual의 약자로 명령어가 무엇인지 모를때,
어떤 옵션들을 함께 써야하는지 모를때 메뉴얼을 이용하여 자세히 알아볼 수 있다.
man모드에서 나가고싶을땐 q를 이용하면 된다.

  1. Unix
> man

> man man 
// → man에 대한 manual을 보고싶을때 활용할 수 있다.
// ( man에 대한 설명, 어떤 옵션들이 있는지 자세한 내용들이 함께 있다. )
  1. PowerShell
> man

or

> Get-Help

2. clear

터미널 화면에 있는 모든 텍스트들을 깔끔하게 청소해주는 명령어

> clear

1. pwd

Print Working Directory의 약자
내가 현재 어느 경로에 있는지 확인하는 커멘드 ( 현재 위치하고 있는 곳의 전체 경로 프린팅 )

  1. Unix
> pwd
  1. PowerShell
> pwd

or

> Get-Location

2. ls

list의 약자로 목록을 나타낼때 쓰인다.
현재 디렉토리 안에 있는 폴더와 파일을 확인할 수 있다.

1. Unix
i. 현재 경로에 있는 파일/폴더를 보고 싶을 때

> ls

ii. 특정한 폴더내부를 보고 싶을 때

> ls dir1

iii. 파일에 대해 더 자세한 내용을 보고싶을 때
long format을 이용하면 파일 이름, 사이즈, 언제 저장이 되었는지, 파일의 owner도 확인 가능

> ls -l

iv. UI상에서 보여지지 않는 파일/폴더를 보고 싶을 때
all option을 이용하면 숨겨진 파일도 다 볼 수 있다.

> ls -a

v. 3, 4번 옵션을 합쳐 쓸 때

> ls -la

...이 있다.
. : 현재 경로
.. : 현재 경로의 바로 상위 경로

2. PowerShell
i. 전체적인 조금 더 자세한 내용 확인 가능

> ls
or
> Get-ChildItem

ii. 이름만 확인하고 싶을때

> ls -name

iii. 특정한 경로안의 컨텐츠를 보고 싶을때 (unix 2번과 동일)

> ls dir1

iv. 숨겨진 파일을 보고싶을 때

> ls -force

Bonus : Open / explorer

현재 경로를 열고 싶을 때
1. Unix

> open .
  1. PowerShell
> explorer .

3. cd

change directory의 약자로 현재있는 경로의 위치를 변경할때 쓰인다.

  1. Unix
> cd . // 현재 경로로 이동
> cd .. // 상위 경로로 이동
> cd dir1 // dir1 디렉토리로 이동
> cd ~ // 사용자의 홈 디렉토리(최상위 경로)로 이동
> cd - // 이전 경로로 왔다갔다 할 수 있다.
  1. PowerShell
    명령 옵션은 Unix와 동일하다.
> cd // Set-Location의 aliase
or
> Set-Location

4. find / Get-ChildItem

파일 시스템에서 특정한 파일이나 디렉토리를 찾을때 유용하게 사용할 수 있다.

1. Unix

예시_1. 내가 현재 있는 경로 및 하위 모든 폴더에 한에 텍스트 파일을 찾고 싶을때

> find . -type file -name "*.txt"
// . : 현재 경로에서부터 시작해서 
// -type file : 타입은 파일이고
// -name "*.txt" : 이름은 모든 파일인데 txt확장자로 끝나는 모든파일

예시_2. 내가 현재 있는 경로 및 하위 모든 폴더에 한에 json 파일을 찾고 싶을때

> find . -type file -name "*.json"

예시_3. 내가 현재 있는 경로 및 하위 모든 폴더에 한에 이름이 2로 끝나는 폴더를 찾고 싶을때

> find . -type directory -name "*2"

2. PowerShell

aliase가 따로 없기 때문에 find명령어를 쓸 수가 없다.

> Get-ChildItem

예시_1. 내가 현재 있는 경로 및 하위 모든 폴더에 한에 텍스트 파일을 찾고 싶을때

> get-childitem -File -Filter "*.txt" -Recurse
// -File : file을 찾고
// -Filter : filter옵션을 이용하고
// "*.txt" : 원하는 파일 이름
// -Recurse : 하위 폴더 안에 있는 폴더 안에 있는-... 재귀적으로 겁색이되게 옵션을 주어야 한다.

4. which / Get-Command

내가 실행하고자 하는 프로그램이 어디에 설치/설정되어 있는지 경로를 확인할 수 있다.

1. Unix

> which node // 노드 경로 확인
> which code // VSCode 경로 확인

2. PowerShell

aliase가 따로 없다.

> Get-Command cmd.exe // cmd.exe 경로
or
> gcm notepad // notepad 경로

Create and manage files : 파일 생성 및 관리

1. touch / new-item

만약 파일이 존재하지 않는다면 새로운 파일 생성,
기존 존재하는 파일을 터치하면 그 파일의 수정한 날짜가 터치한 시점으로 업데이트가 된다.

1. Unix

> touch new_file1.txt

2. PowerShell

> new-item new_file1.txt
//touch 명령어가 없다.

2. cat

파일안에 있는 내용을 빠르게 확인해 볼 수 있다.
한개 또는 여러개의 파일들의 컨텐츠를 한번에 확인할 수 있다.

> cat new_file1.txt new_file2.txt 
// cat 명령어 다음 한개/여러개의 파일명을 작성한다.

3. echo

echo자체만 쓸때는 메아리 치는 느낌으로 되돌아 온다.

> echo "hello world"
>>hello world

BUT!!!
echo 'string' + > 파일명 = 새로운 파일을 만들면서 문자열을 컨텐츠로 넣어준다.

> echo "Hello World" > new_file3.txt
> cat new_file3.txt
>> Hello World
  1. >: 덮어 씌우기
> echo "Hello Brave New World" > new_file3.txt
> cat new_file3.txt
>> Hello Brave New World
  1. >>: 덧 붙이기(append)
> echo "Goodbye world" >> new_file3.txt
> cat new_file3.txt
>> Hello Brave New World
>> Goodbye world

4. mkdir

make directory의 약자로 디렉토리를 만드는 명령어이다.

> mkdir dir3 // 현재 경로에 dir3이라는 디렉토리 생성
  1. mkdir -p옵션
> mkdir -p dir4/subdir1/subdir2

5. cp

copy 약자로 파일을 복사한다.

  1. Unix
> cp [파일명] [복사하고싶은경로]
> cp file1.txt dir1/
// file1.txt를 dir1에 복사한다.
  1. Powershell
> cp ~
or
> Copy-Item

6. mv

move 약자로 파일을 이동시킬때 쓰인다.

> mv [파일명] [이동경로]
> mv file2.txt dir1/

새로운 파일로 이동(복사)하고 싶을때

> mv [원하는 파일] [대상]
> mv file1.txt file2.txt

7. rm

remove의 약자로 파일을 삭제할 수 있다.

> rm file2.txt

dir 삭제: recursive옵션을 넣어 삭제해야한다
1. Unix

> rm -r dir2 
  1. PowerShell
> rm dir2 -Recurse

8. grep / Select-String

Global regular expression print의 약자로 키워드로 검색할때 사용

1. Unix

> grep [키워드명] [특정파일]
> grep "world" *.txt 
// 특정파일을 찾고 싶은경우 파일명을 입력하던가
// wild card인 *을 사용한다.

i. -n: 키워드가 몇번째 줄에 있는지 확인하고 싶을때

> grep -n "world" *.txt 

ii. -i: 대소문자 상관없이 검색하고 싶을때

> grep -ni "world" *.txt 

iii. -r .: 현재의 경로(하위 폴더 포함)를 검색하고 싶을때

> grep -nir "world" .
// 현재 경로와 그 하위 서브폴더의 한해서 world검색
  • Wild Card란 컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 기호를 가리킨다.

2. PowerShell

> Select-String [특정 경로/파일] -pattern "world"
> Select-String *.txt -pattern "world"

i. recursive 옵션이 없어 ,를 이용하여야한다.

> Select-String *, */* -pattern "world"
// * : 현재 경로, */* : 현재 경로안에 있는 폴더에 대해 나타냄

ii. -CaseSensitive: 기본적으로 대소문자 구분이 없기 때문에 구분을 주고싶다면 사용

> Select-String *, */* -pattern "world" -CaseSensitive

Work with environment variables : 환경변수 설정하기

환경변수란 내 컴퓨터에서 특정한 키워드가 어떠한 일을 하거나 경로를 결정할 수 있도록 만든다.

1. export / $env:

환경변수는 대부분 대문자로 만들고, 단어 사이 구분자는 _을 사용한다.

  1. Unix
> export MY_DIR="dir1"
// MY_DIR은 dir1이다.
  1. PowerShell
> $env:MY_DIR = "dir1"

2. env / ls env:

모든 환경변수를 볼때 사용

  1. Unix
> env
  1. PowerShell
> ls env:

3. cd $ / cd $env:

이동시 $을 환경변수 앞에 붙인다.

  1. Unix
> cd $MY_DIR
  1. PowerShell
> cd $env:MY_DIR

4. unset / ''

지정된 환경변수 삭제

  1. Unix
> unset MY_DIR
  1. PowerShell
> $env:MY_DIR = ""

Bonus. Vi/Vim(텍스트 에디터)

1. vim

새로운 파일 생성

> vim [fileName]
> vim file1.txt

2. i

insert 약자로 파일을 수정하고 싶을때

3. ESC버튼

insert 모드에서 나갈때 사용
이후 :을 누르고 원하는 명령어 작성

4. w

write changes로 수정한걸 저장하기 위한 명령어

~
:w

5. q

quit 약자로 끄는 의미를 가지고 있다.

:wq // 저장후 종료~!
:q // 저장하지 않고 종료하고 싶을때

! : 수정후 저장하지 않고 강제종료 원할시

:q!

0개의 댓글