Shell Workshop
lesson 1이 끝인건가?
echo
echo
는 javascript의 console.log()
나 python의 print()
같은 콘솔에 텍스트를 보여주는 명령어이다.
$ echo $COLUMNS x $LINES
# 터미널 사이즈를 보여줌. (shell에서 `$`는 변수를 뜻한다.)
;
;
는 js와 마찬가지로 문장의 끝을 뜻한다. 아래와 같이 한가지 커맨드를 끝낸뒤 다음 커맨드를 실행할 수도 있다.
$ ls; cd DEV
ls
ls
는 List라는 뜻으로 현재경로 혹은 특정경로에 있는 파일 및 디렉토리들을 보여준다.
ls -l
l은 long이라는 뜻이다. 파일의 최근 수정날짜 까지 확인 할 수 있다.
mkdir
디렉토리를 만들 수 있는 명령어 이다.
mv
파일 및 디렉토리를 특정 위치로 이동 시킬 수 있다.
cd
cd
는 특정 디렉토리로 이동할 수 있는 명령어이다.
pwd
현재 path를 보여준다.
curl
curl
은 see url이란 뜻이다. 이명령어로 특정페이지를 다운받을 수 있다.
$ curl -o google.html -L "http://google.com"
cat, less
cat
(catenate) 파일을 읽을 수 있다. less
파일을 읽어 한페이 분량씩 보여준다. q
를 눌러 나갈 수 있다.
rm , rmdir
파일이나 디렉토리를 삭제할 수 있다. 명령어 옆에 -i 옵션을 쓰면 지우기 전에 의사를 물어본다.
$ rm -i index.html
# remove index.html? (YES/NO)
grep
파일내에서 특정한 패턴이나 문자열을 찾은후, 그 패턴을 포함하는 모든 행을 출력한다. 디렉토리내에서 지정한 패턴을 포함하는 파일을 찾을 수도 잇따.
-c : 패턴이 일치하는 행의 수를 출력
-i : 비교시 대소문자를 구별 안함
-v : 지정한 패턴과 일치하지 않는 행만 출력
-n : 행의 번호를 함께 출력
-l : 패턴이 포함된 파일의 이름을 출력
-w : 패턴이 전체 단어와 일치하는 행만 출력
Environment variable
아래는 shell의 변수 사용법이다.
$ name='minwoo' #띄어쓰기를 하면 안된다.
$ echo $name
#minwoo
환경변수는 shell에서 어마어마하게 중요하다. 엄청나게 많은 프로그램들이 환경변수들에 묶여 있기 때문에 자칫 잘못 수정하면 프로그램 자체가 안돌아 갈수도 있다.
echo $PATH #대표적으로 이런거.
# /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
이게 지정되어 있기 때문에 위의 많은 커맨드들을 /bin/ls
처럼 사용하지 않고 단순하게 ls
로 사용할 수 있다.
PATH
를 커맨드라인으로 수정하면 터미널을 다시 켰을 경우에는 리셋되어 효과가 없다. 만약 꼭필요한 프로그램에 접근하기 위해 편리한 패스를 저장해두고 계속 쓰고 싶다면, .bash_profile
(혹은 .bashrc)파일에 저장해 준다. 매번 shell을 시작할때 적용된다. (내용 저장후 source .bash_profile
하면 바로 적용된다.)
mac, windows : .bash_profile
linux : .bash_profile (log-in session) / .bashrc (non-log-in session)
# .bash_profile
date
echo 'Hello!'
2017년 7월 9일 일요일 01시 09분 56초 KST
Hello
Controlling the shell prompt
man bash
로 bash에 대한 매뉴얼을 확인할수있다. 이 매뉴얼들을 적절히 사용해서 zsh비스무리한걸 만들 수도 있다.(http://bashrcgenerator.com/\)
Aliases
아래와 같이 **긴 커맨드를 짧게 줄여** 주거나, 오타가 자주나는 sl 을 ls로 자동으로 바꿔 줄 수도 있다. 자주사용하는 npm관련 설치 커맨드 같은것을 줄여줄수도 있을것 같다.
alias ll='ls -al'
alias sl='ls'
alias ..='cd ..'
alias now='date'