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/리눅스 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/리눅스 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/리눅스 2024. 8. 28.
vi - gf 로 파일열기시 환경변수 있어도 가능하게
vi에서 'gf'를 치면 cursor가 가리키고 있는 file로 jump를 하게된다.이 기능은 보통 debugging시 log 파일에서 error 또는 warning message가 떴을 때 사용하게 된다.https://sunshowers.tistory.com/80 문제점은 이러한 gf이 기능을 쓸 때, 대상 파일 경로 안에 ${project_name}과 같이환경 변수(environment variable)이 포함되어 있으면 사용할 수 없다는 점이다. 이런 메세지에서 gf를 쓰면vi는 '${project_name}/temp.txt' 라는 file을 찾을 수 없다고 message를 띄운다. 이러한 문제점은 .vimrc에서 file이름 구분법을 설정함으로써 해결할 수 있다. set isfname+=$,{,}..
IT/리눅스 2024. 8. 28.
윈도우에서 리눅스로 파일 이동시 ^M 문자 제거 방법
텍스트 파일에 포함된 도스 스타일의 줄 끝 문자(^M, 즉 carriage return, \r)를 제거하려면 여러 가지 방법을 사용할 수 있습니다. 주로 이 문제는 Windows에서 작성된 파일을 Unix/Linux 시스템에서 열 때 발생합니다. Unix/Linux는 줄 끝을 나타내는 데 개행 문자(\n)만 사용하지만, Windows는 carriage return과 개행(\r\n)을 함께 사용하기 때문입니다.다음은 ^M 문자를 제거하는 방법들입니다:1. dos2unix 명령어 사용가장 간단한 방법은 dos2unix 유틸리티를 사용하는 것입니다. 이 도구는 파일에서 Windows 스타일의 줄 끝을 Unix 스타일로 변환해줍니다.dos2unix filenamefilename: 변환할 파일의 이름입니다.이 명..
IT/리눅스 2024. 8. 19.
윈도우 WSL 에서 csh 사용하기
WSL(Windows Subsystem for Linux)에서 C shell(csh)을 실행하는 방법을 안내해드리겠습니다. 1. WSL 설치먼저 WSL이 설치되어 있어야 합니다. 아직 WSL을 설치하지 않았다면 다음 단계를 따르세요:WSL 설치관리자 권한으로 PowerShell을 실행합니다.다음 명령어를 입력하여 WSL을 설치합니다:wsl --installWSL 배포판 설치설치할 Linux 배포판(Ubuntu 등)을 선택하고, Microsoft Store에서 설치합니다.2. csh 설치이제 WSL 배포판(Ubuntu 등)에서 csh을 설치하고 실행할 수 있습니다.WSL에서 터미널 실행WSL을 설치하고 원하는 배포판(Ubuntu)을 설치한 후, 해당 배포판의 터미널을 실행합니다.Windows의 명령 프롬프..
IT/리눅스 2024. 7. 12.
Vim - 파일 오픈 여러개 한 이후 화면 돌아가기
Vim에서 파일을 오픈한 후 이전 파일로 이동하는 방법은 다음과 같습니다:기본 방법: :e # 명령어 사용Vim에서 다른 파일을 열 때마다 현재 파일의 이름이 내부적으로 기록됩니다. 이 기록을 이용해 이전 파일로 이동할 수 있습니다.:e # 명령어를 입력하면 이전에 열었던 파일로 돌아갑니다.파일 탐색 기록을 활용하는 방법: :b 명령어 사용여러 파일을 열고 닫을 때, 파일 탐색 기록을 활용하여 쉽게 이전 파일로 이동할 수 있습니다.:ls 명령어를 입력하면 현재 열린 파일 버퍼 목록을 확인할 수 있습니다.:b N 명령어를 입력하여 버퍼 번호 N에 해당하는 파일로 이동할 수 있습니다.대체 파일로 이동: CTRL-^ 또는 CTRL-6 사용CTRL-^ (또는 CTRL-6) 단축키를 사용하면 마지막에 열었던 파일..
IT/리눅스 2024. 5. 24.
Bash 쉘 vs C 쉘 스크립트 간단 차이점
바쉬 쉘 스크립트와 C 쉘 스크립트, 헷갈리시죠? 오늘은 이 두 쉘 스크립트의 차이점을 친절하고 캐주얼하게 풀어보도록 하겠습니다. 예제도 함께 보여드릴 테니 재미있게 따라와 주세요!1. 문법의 차이가장 먼저 눈에 띄는 건 바로 문법의 차이입니다.Bash Shell은 Bourne-Again SHell의 약자로, Unix의 전통적인 sh 쉘을 확장한 것입니다. 프로그래밍에 있어서 상당히 유연하며, 변수를 다루거나 함수를 작성하는 방식이 직관적이죠.# Bash 예제: 변수 사용my_var="Hello Bash!"echo $my_varC Shell은 C 프로그래밍 언어에서 영감을 받아 만들어졌습니다. C 언어를 좀 아신다면 문법이 낯설지 않을 거예요. 하지만 복잡한 스크립트를 작성할 때는 다소 제한적일 수 있습..
IT/리눅스 2024. 5. 23.
리눅스에서 큰 폴더 찾기: du 명령어 활용법
서버 공간이 꽉 차서 어디서부터 청소를 시작해야 할지 모르시겠다고요? 'du' 명령어와 몇 가지 유용한 옵션을 활용하면, 가장 많은 공간을 차지하는 파일과 폴더를 빠르게 찾아낼 수 있습니다. 이제 du 명령어를 좀 더 빠르게 실행해 보는 방법을 소개합니다!참고글은 아래와 같습니다.리눅스 폴더별 용량 확인(du 명령어) (tistory.com)빠른 'du' 명령어로 리눅스에서 대형 폴더 식별하기빠르게 큰 폴더 찾기du -ah --max-depth=1 | sort -rh | head -n 5이 명령어는 다음과 같은 기능을 수행합니다:-ah: 파일과 폴더의 용량을 사람이 읽기 쉽게 표시합니다.--max-depth=1: 현재 디렉토리 바로 아래에 있는 항목들만 조사하여 속도를 향상시킵니다.sort -rh: 결과..
IT/리눅스 2024. 4. 5.
실행한 프로세스 ID 가져오는 방법
방금 실행한 프로세스의 ID (PID)를 가져오는 방법에는 여러 가지가 있습니다. 다음은 몇 가지 일반적인 방법입니다: 1. $! 변수 사용하기 리눅스 쉘에서, $! 변수는 가장 최근에 백그라운드로 실행된 작업의 PID를 저장합니다. 만약 프로세스를 백그라운드로 실행했다면, 이 변수를 사용해 해당 PID를 쉽게 얻을 수 있습니다. your_command & echo $! 이 명령어는 your_command를 백그라운드에서 실행한 후, 바로 그 PID를 출력합니다. 2. ps 명령어와 함께 사용하기 ps 명령어는 시스템의 현재 실행 중인 프로세스 목록을 보여주며, 이를 통해 방금 실행한 프로세스의 PID를 찾을 수 있습니다. 예를 들어, 특정 명령어 이름으로 실행된 프로세스의 PID를 찾으려면 다음과 같이..
IT/리눅스 2024. 4. 5.
작업중인 프로세스 강제로 죽이기
kill -9 %1 명령어는 리눅스에서 특정 작업(job)이나 프로세스를 강제 종료시키는 데 사용됩니다. kill: 프로세스에 시그널(signal)을 보내는 명령어입니다. 기본적으로 TERM (terminate) 시그널을 보내어 프로세스에 종료를 요청합니다. -9: SIGKILL 시그널을 나타냅니다. 이는 가장 강력한 종료 시그널로, 운영 체제에게 프로세스를 즉시 종료하도록 요청합니다. SIGKILL은 프로세스에 의해 무시될 수 없으며, 정상적인 종료 절차를 밟지 않고 즉시 종료시킵니다. %: 이 기호는 작업 제어를 위해 사용되며, 일반적으로 백그라운드에서 실행 중인 작업을 지정할 때 사용됩니다. 예를 들어, %1은 현재 쉘 세션의 첫 번째 백그라운드 작업을 의미합니다. 올바른 사용 예는 kill -9 ..