IT/리눅스 2025. 1. 9.
쉡 스크립트 if []; then 에 등장하는 세미콜론의 의미?
원래 if 와 then 사이에 엔터가 필요하는 구나. 단순한 lex를 사용해서 그런듯. 아무튼 ;가 한줄로 쓸때는 꼭 필요합니다.쉘 스크립트에서 if []; then fi 구조에서 세미콜론(;)의 의미는 명령의 끝을 나타내는 것입니다.세미콜론의 역할명령 구분자:쉘 스크립트에서 한 줄에 여러 명령을 작성할 때, 명령을 구분하기 위해 세미콜론을 사용합니다.예를 들어:echo "Hello"; echo "World"위 코드는 두 개의 echo 명령을 한 줄에 실행하도록 작성한 것입니다.then 키워드와의 연결:쉘에서 if 구문의 조건 평가와 then 키워드는 기본적으로 새 줄로 구분됩니다.하지만 한 줄로 작성하고 싶을 때, 세미콜론으로 명령의 끝을 명시하여 구분합니다.예:if [ condition ]then ..
IT/리눅스 2025. 1. 9.
쉡 스크립트에서 환경변수 값 비교시 null, empty 체크를 위한 팁
정말 간단하고도 놀라운 팁이다. 원래 비교하고 싶은 환경변수가 실제로 없을 수 있으니까, 앞에 임의의 문자를 붙이고 가져와서, 비교할 때 임의의 문자만 남아 있으면 비어 있는 것을 판단하는 아주 유용한 팁이다. 아래 자세한 내용을 살펴보자. 변수가 비어 있거나 정의되지 않았을 때, 단순히 if [] 구문에서 사용되면 쉘에서 에러가 발생할 수 있습니다. if [ "x$_ROOT" == "x" ]; then 구문의 "x$_ROOT"는 쉘 스크립트에서 변수가 비어 있거나 정의되지 않은 경우를 안전하게 처리하기 위한 관용적인 방법입니다.상세 설명:$_ROOT:환경 변수 _ROOT의 값을 참조합니다.만약 _ROOT가 설정되어 있지 않거나 빈 문자열이라면, $_ROOT는 빈 값("")으로 평가됩니다."x$_ROOT..
IT/Software 2025. 1. 6.
VS Code - Markdown Preview 폰트 변경
너무 미리보기 화면이 별로라, 그냥 폰트만 변경해도 볼만 하겠다 해서 변경해봄. VS code 에서 F1 혹은 Ctrl+Shift+P 눌러서 Command Palette 를 실행시키고, Markdown Preview Enhanced: Customize CSS (Global) 메뉴를 찾아서 클릭한다. 그럼 CSS를 수정할 수 있도록 나오고, 그냥 보통 아는 CSS 로 폰트를 지정하면 된다. CSS 파일은 아래 블로그 글에서 그대로 가져와서 넣었더니 이뻐지네 그 글을 참고하시길 vscode 마크다운 프리뷰 테마 커스터마이징 하기Markdown Preview Enhanced라는 확장을 사용하면 테마를 커스터마이징할 수 있습니다.velog.io 머 간단하게 아래 정도만 해줘도 볼만하다. 보통 한글 때문에 보..
IT/ASIC | FPGA 2024. 12. 18.
WaveDrom - waveform 그리는 스마트 툴
WaveDrom: 웨이브폼을 그리는 스마트 툴디지털 시스템을 설계하거나 프로토콜을 다룰 때, 웨이브폼은 신호의 타이밍과 동작을 표현하는 데 중요한 역할을 합니다. 디버깅이나 문서화를 하더라도 명확한 웨이브폼은 큰 차이를 만들어냅니다. 하지만 이걸 수작업으로 그리는 건? 시간도 많이 걸리고, 실수할 가능성도 큽니다.이런 문제를 해결할 수 있는 스마트한 도구가 바로 WaveDrom입니다.WaveDrom이란?WaveDrom은 텍스트 기반으로 간단히 웨이브폼을 그릴 수 있는 오픈소스 도구입니다. JSON 형식으로 신호를 정의하면, WaveDrom이 이를 자동으로 시각화해줍니다. 사용자는 복잡한 그래픽 툴에 의존할 필요 없이, 간단히 코드 몇 줄로 정확하고 깔끔한 웨이브폼을 생성할 수 있습니다.WaveDrom의 ..
IT/파이썬 2024. 12. 16.
Microsoft MarkItDown - 파일 및 오피스 문서를 Markdown으로 변환
살짝 돌려봤는데 잘되네.원하는 파일명 쓰고, 저장해서 활용해 보세요. GitHub - microsoft/markitdown: Python tool for converting files and office documents to Markdown. GitHub - microsoft/markitdown: Python tool for converting files and office documents to Markdown.Python tool for converting files and office documents to Markdown. - microsoft/markitdowngithub.com 간단하게 아래와 같이 install 하고 사용하면 됨.pip install markitdown 파일로 저장하기 예제..
IT/리눅스 2024. 12. 5.
특정 이름의 폴더만 빼고 복사 하고 싶을 때 - rsync
find와 cp 명령어를 조합해서 특정 폴더를 제외하고 원본 디렉터리 구조의 일부만 유지하려면 --parents 옵션 대신 rsync 또는 find와 함께 상대 경로를 활용해야 합니다.방법 1: rsync 사용rsync는 기본적으로 디렉터리 구조를 유지하며 복사를 수행하므로 가장 간단한 방법입니다.rsync -av --exclude='csrc' --exclude='simv.daidir' /home/RTL/ ./RTL/옵션 설명:-a: 원본 파일의 권한과 시간 정보를 유지.-v: 진행 상황을 출력.--exclude='csrc': 이름이 csrc인 폴더 제외.--exclude='simv.daidir': 이름이 simv.daidir인 폴더 제외./home/RTL/: 원본 디렉터리../RTL/: 현재 경로에 R..
IT/리눅스 2024. 11. 28.
현재 Shell 정보 확인하기
현재 bash 인지 csh 인지 자꾸 헷갈리네. 현재 쉘 정보를 보고 싶다면, 아래 3가지 방법으로 /home> echo $SHELL /bin/csh/home> echo $0csh/home> ps PID TTY TIME CMD 5150 pts/397 00:00:00 csh17956 pts/397 00:00:00 ps https://hianna.tistory.com/870 [Linux] 현재 Shell 확인하기Linux에서 현재 이용중인 Shell을 확인하는 방법은 여러 가지가 있다. 그 중 몇가지를 정리해보았다. 1. echo $SHELL $SHELL 변수는 default shell에 대한 정보를 가지고 있다. 2. echo $0 이 명령어는 현재 실행hianna.tistor..
IT/Software 2024. 11. 26.
리그레션 테스트 - Regression test 의미
리그레션이라는 단어가 들려서 조사해본다. 그냥 이전 테스트 작업을 다시 하면서 꼭 리그레션 테스트라고 얘기들 하는 것 같아서 자세한 의미를 찾아봤다. 퇴행 퇴보의 의미는 아닌것이겠지...당연히반대말은 progression 이네 ^^; ‘리그레션 테스트’를 정의소프트웨어의 개선(Progression) 을 보증하기 위해서는 테스트 대상이 ‘퇴보(Regression) 하지 않음’ 을 확인 할 필요가 있고, 그 목적에 따라 수행하는 테스트가 바로 리그레션 테스트 입니다. 리그레션 여부를 점검하는것이죠!https://kyhwan91.medium.com/regression-test%EB%8A%94-%EC%99%9C-regression-%EC%9D%B4%EC%A7%80-%ED%9A%8C%EA%B7%80-%ED%87%..
IT/Software 2024. 11. 22.
Makefile - 쉘 조건문 내에서 make 다른 타겟 호출 방법
쉘 조건문 내에서 $(if $(findstring gzip,$(MAKECMDGOALS)),gzip_step)처럼 다른 타겟을 호출하는 것은 직접적으로는 불가능합니다. 쉘 조건문([ -n "" ])은 Makefile의 실행 단계에서 동작하며, 이 단계에서는 Makefile 자체의 타겟 호출(예: make target)을 수행할 수 없습니다. 하지만 우회 방법을 통해 쉘 조건문을 사용해 다른 타겟을 호출하는 효과를 낼 수 있습니다.우회 방법 1: $(MAKE)를 사용한 재귀 호출$(MAKE) 변수는 현재 실행 중인 make 명령을 나타냅니다. 이를 활용해 쉘 조건문 내부에서 다른 타겟을 호출할 수 있습니다.예제cdc_quick: @echo "Running cdc_quick..." @[ "$(fin..
IT/Software 2024. 11. 22.
Makefile - -@[ -n "$(wildcard reports/*)" ]의 상세 설명
이 코드는 Makefile에서 디렉토리 내 파일이 존재하는지 확인하기 위해 사용되는 구문입니다. 이를 세부적으로 나누어 설명하겠습니다.1. 구문 전체-@[ -n "$(wildcard reports/*)" ]구성 요소:-@: -: 명령어 실행 중 오류가 발생해도 Makefile 실행을 중단하지 않도록 설정.@: 해당 명령어를 터미널에 출력하지 않음.[ -n "$(wildcard reports/*)" ]:[와 ]: 조건식을 작성하는 데 사용되는 POSIX 표준 구문.-n: 문자열이 비어 있지 않음을 확인하는 테스트 옵션.$(wildcard reports/*): reports/ 디렉토리에서 파일 목록을 가져오는 Makefile 함수.2. $(wildcard reports/*)설명:Makefile의 wildca..
IT/Software 2024. 11. 22.
Makefile - `gzip`을 유연하게 다루는 방법: `@`와 `-` 옵션의 역할
Makefile은 빌드 자동화를 위한 강력한 도구이며, gzip 같은 명령을 포함할 때도 유용하게 사용할 수 있습니다. 하지만 명령어 실행 중 오류가 발생하거나, 실행 로그를 깔끔하게 관리해야 할 때 어떻게 처리해야 할까요? 이 글에서는 Makefile에서 @와 - 옵션을 활용해 gzip 명령을 유연하고 깔끔하게 다루는 방법을 소개합니다.1. gzip 명령어와 Makefile 기본 구성아래는 Makefile에서 특정 디렉토리(reports와 logs)의 파일을 압축하는 예제입니다:gzip_step: @echo "Running gzip_step..." -@\gzip -f reports/* -@\gzip -f logs/*이 간단한 코드로 두 가지 작업을 수행합니다:reports와 logs 디..
IT/Software 2024. 11. 22.
Makefile - 예약 및 특수 변수 정리: 효율적인 Makefile 작성 가이드
Makefile은 빌드 자동화를 위한 강력한 도구이며, Makefile 내에서 사용되는 특수 변수(reserved variables)는 빌드 과정을 동적으로 제어하고 유연하게 만듭니다. 이 글에서는 Makefile에서 자주 사용되는 예약 변수와 특수 변수를 정리하고, 각 변수의 역할과 활용 예제를 제공합니다.예약 변수 총정리변수 이름설명예제$(MAKECMDGOALS)실행 중인 타겟 목록cdc_quick gzip$@현재 타겟 이름gcc -o $@$첫 번째 의존성gcc -c $$^모든 의존성 목록gcc $^ -o program$?수정된 의존성 목록gcc -c $? -o $@$*타겟 이름에서 확장자 제거file.c -> file$(MAKE)현재 Make 명령어$(MAKE) -C subdir$(CURDIR)현재..
IT/Software 2024. 11. 22.
Makefile - target: $(if $(findstring gzip,$(MAKECMDGOALS)),gzip_step)
cdc_quick: $(if $(findstring gzip,$(MAKECMDGOALS)),gzip_step) 이 코드는 Makefile에서 조건부 의존성을 설정하는 방식입니다. 이를 통해 make cdc_quick 명령어가 특정 키워드(gzip)를 포함하는 경우에만 추가적인 의존 타겟(gzip_step)을 실행하도록 만듭니다.1. 구성 요소와 역할1.1 $(MAKECMDGOALS)$(MAKECMDGOALS)는 Make에서 현재 실행 중인 명령어의 타겟 목록을 의미합니다.예: make cdc_quick gzip을 실행하면 $(MAKECMDGOALS)는 cdc_quick gzip 값을 가집니다.예: make cdc_quick만 실행하면 $(MAKECMDGOALS)는 cdc_quick 값만 가집니다.1.2 ..