IT/리눅스 2025. 1. 13.
tcl - regsub 문자열 치환 함수
regsub -all "{|\}" $analyze_vcs_filelist_tmp ""는 TCL에서 문자열 내 특정 패턴을 찾아 치환(replace)하는 명령입니다. 이를 단계별로 자세히 설명하겠습니다.regsub 명령어의 기본 구조regsub ?-all? pattern input replacement ?outputVar?-all: 일치하는 모든 항목을 치환합니다. 생략하면 첫 번째 일치 항목만 치환됩니다.pattern: 치환하려는 문자열을 정규 표현식(regular expression)으로 지정합니다.input: 패턴 검색과 치환을 수행할 원본 문자열입니다.replacement: 패턴이 일치할 때 대체할 문자열입니다.outputVar: 치환 결과를 저장할 변수(옵션). 생략하면 치환된 문자열이 반환됩니다..
IT/ASIC | FPGA 2025. 1. 10.
tcl 에서 info 명령어 예제 모음
Tcl에서는 info 명령이 다양한 서브 명령어들과 함께 사용되어 스크립트 실행 환경에 대한 정보를 제공합니다. 아래는 주요 info 서브 명령어들의 목록과 간단한 설명입니다:info 명령의 주요 서브 명령어info vars현재 정의된 변수 목록을 반환합니다.특정 패턴을 지정하면 해당 패턴에 맞는 변수 이름만 반환됩니다.예:info varsinfo vars myVar*info commands현재 정의된 명령어(커맨드) 목록을 반환합니다.특정 패턴을 지정하면 해당 패턴에 맞는 명령어 이름만 반환됩니다.예:info commandsinfo commands myCommand*info procs현재 정의된 프로시저(함수) 목록을 반환합니다.특정 패턴을 지정하면 해당 패턴에 맞는 프로시저만 반환됩니다.예:info ..
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 디..