본문 바로가기

Zsh5

[리눅스] if문 정리 셸스크립트를 처음 접하고 딱 하루 정도가 지날 즈음 든 생각은, 아니, 셸스크립트는 파이썬보다 막장이잖아? 막연하게나마 저런 생각이 들었다. 변수 타입도 없고, 따옴표도 어떤 땐 있으나마나 하고... sh의 "1 2 3 4 5"는 파이썬의 [1, 2, 3, 4, 5]와 같다는 것도 충격이었다. 우선 콤마란 게 필요없다. 어떤 때는 괄호도 필요없다. 또 어떤 경우에는 따옴표도 필요없다ㄷㄷㄷ 하여튼, 셸스크립트의 if문은 파이썬과 상당히 비슷한 면이 있다. 간단한 if문을 써보면 파이썬은 a = 10 if a == 10: print("equal") elif a < 10: print("less than 10") else: print("greater than 10") 이런 느낌이라면, 셸스크립트는 a=9 # 등.. 2024. 2. 10.
[셸스크립트] for문의 스코프를 정하는 do와 done 먼저 파이썬에서는 for문을 통한 반복문의 범위는 들여쓰기로 결정한다.(는 점은 다들 알고 계실 것) #python3 for i in range(5): print(i) print("Keep going!") # 한 번만 출력됨 sh에서는 do와 done 사이에 반복 스코프를 넣으면 된다. #!/bin/bash for i in $* do # 들여쓰기 컨벤션이 궁금하다. echo $i done echo "Keep going!" 갑자기 궁금한 게 생겼다. 파이썬의 range 배열은 sh에서는 어떤 방식으로 만들 수 있을까? ChatGPT에게 물어보자. 이건 뭐, 다른 언어랑 비슷해 보이는 문법이라서 생소하지는 않은데, ...괄호가 두 겹이네. 신기한 건 , `for i in $*` 처럼 사용할 수도 있고, `f.. 2024. 2. 10.
[리눅스] 셸스크립트기초 - 지역변수와 전역변수 자바스크립트 같기도 하고, C 같기도 하면서, 파이썬 같기도 한... (사실 sh가 이들을 닮은 게 아니고, 얘들이 sh를 닮은 거겠지.) 셸 스크립트를 공부하는 중에, 전역변수와 로컬변수라는 개념이 내심 반가웠다. 파이썬에서는 함수 안에서 변수를 정의하면 그냥 자동으로 지역변수가 되는데, sh에서는 local 이라는 키워드를 넣어줘야 한다. #!/bin/bash language="Korean" function learn() { local learn_language="English" # 등호 좌우에 빈칸이 있으면 오류남ㅜ. 지역변수 정의 echo "I am learning $learn_language" # echo는 print와 같음. } function print_() { echo "I can spea.. 2024. 2. 10.
[리눅스] print 함수를 재정의해봤더니 화면이 와장창 깨진다ㅜ 필자는 현재 zsh에 oh-my-zsh를 설치하고 powerlevel10k 테마를 사용중이다. 아래 내용의 myshell.sh를 만들고, (따라하지 말 것ㅜ) #!/bin/bash function print() { echo $1 } print "Hello world!" 터미널에서 `source ~/myshell.sh`를 실행했더니 테마고 프롬프트고, 모든 화면이 와장창 깨지기 시작했다. 근데 터미널을 재시작해도, 리눅스 재로그인을 해도 깨진 화면이 돌아오지 않아서 여기저기 검색하다가 별 수 없이 ~/.zshrc를 템플릿에서 재복사했더니 정상으로 돌아오기는 했다. 무식한 방법일지도 모르지만 내가 시도한 방법은 rm ~/.zshrc cp ~/.oh-my-zsh/templates/zshrc.zsh-templa.. 2024. 2. 10.
zsh에서 프로젝트 가상환경 자동활성화 feat. zsh-autoenv 터미널을 최근 bash에서 다시 zsh로 변경해보았습니다. 리눅스 터미널을 강력하게 사용하는 편은 아닌데, 강의 때 wsl을 활용하면서 너무 프롬프트 경로가 길어서 제가 입력하는 명령어가 자꾸 줄이 바뀌는 게 학생들 보기에 불편할 것 같았습니다. 마침 예전에 사용하던 oh-my-zsh 중에 powerlevel10k가 예뻤던 게 기억나서 오늘 테마 세팅까지 후다닥 마쳤습니다. 다만, 몇 가지 걸리는 게 있었는데 bash에서는 --rcfile 옵션을 줘서 간단히 가상환경을 설정할 수 있었는데 zsh에서는 이상하게 --rcs가 잘 먹지 않아서 스택오버플로, 스택익스체인지 등의 답변을 참고하면서 가상환경 자동 활성화를 시도해보다 결국 askdjango 이진석 님께서 추천해주신 autoenv를 사용하게 됐습니다... 2023. 10. 18.