[TIL] 210824-30
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
를 이용하면 된다.
- Unix
> man > man man // → man에 대한 manual을 보고싶을때 활용할 수 있다. // ( man에 대한 설명, 어떤 옵션들이 있는지 자세한 내용들이 함께 있다. )
- PowerShell
> man
or
> Get-Help
2. clear
터미널 화면에 있는 모든 텍스트들을 깔끔하게 청소해주는 명령어
> clear
Navigating file system : 파일 시스템 탐색
1. pwd
Print Working Directory의 약자
내가 현재 어느 경로에 있는지 확인하는 커멘드 ( 현재 위치하고 있는 곳의 전체 경로 프린팅 )
- Unix
> pwd
- 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 .
- PowerShell
> explorer .
3. cd
change directory의 약자로 현재있는 경로의 위치를 변경할때 쓰인다.
- Unix
> cd . // 현재 경로로 이동 > cd .. // 상위 경로로 이동 > cd dir1 // dir1 디렉토리로 이동 > cd ~ // 사용자의 홈 디렉토리(최상위 경로)로 이동 > cd - // 이전 경로로 왔다갔다 할 수 있다.
- 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
>
: 덮어 씌우기> echo "Hello Brave New World" > new_file3.txt > cat new_file3.txt >> Hello Brave New World
>>
: 덧 붙이기(append)> echo "Goodbye world" >> new_file3.txt > cat new_file3.txt >> Hello Brave New World >> Goodbye world
4. mkdir
make directory의 약자로 디렉토리를 만드는 명령어이다.
> mkdir dir3 // 현재 경로에 dir3이라는 디렉토리 생성
- mkdir -p옵션
> mkdir -p dir4/subdir1/subdir2
5. cp
copy 약자로 파일을 복사한다.
- Unix
> cp [파일명] [복사하고싶은경로] > cp file1.txt dir1/ // file1.txt를 dir1에 복사한다.
- 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
- 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:
환경변수는 대부분 대문자로 만들고, 단어 사이 구분자는 _
을 사용한다.
- Unix
> export MY_DIR="dir1" // MY_DIR은 dir1이다.
- PowerShell
> $env:MY_DIR = "dir1"
2. env / ls env:
모든 환경변수를 볼때 사용
- Unix
> env
- PowerShell
> ls env:
3. cd $ / cd $env:
이동시 $을 환경변수 앞에 붙인다.
- Unix
> cd $MY_DIR
- PowerShell
> cd $env:MY_DIR
4. unset / ''
지정된 환경변수 삭제
- Unix
> unset MY_DIR
- 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!
Author And Source
이 문제에 관하여([TIL] 210824-30), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seulgea/TIL-210830저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)