목록Linux - Ubuntu/Shell Script (10)
쿼카러버의 기술 블로그
1) sh나 makefile에서 인자의 특정 부분을 대체 할 때 .sh나 makefile에서 쓰기 좋음. s=`echo $1 | sed 's/{대체 당할 문자)/{대체 할 문자}/g'` 참고 : bash에서 사용자가 입력한 인자값에 대한 단축어는 아래와 같다. echo $# #입력한 인자 값 전부 echo $0 #파일 실행 명령어 echo $1~ ~n번째 인자값
개발을 하다보면 makefile을 사용할 때가 정말 많다. 매번 헷갈려서 정리해보고자 한다. 1. subst 2. patsubst 1) subst subst = substitution의 약자다. subst {from},{to},{text} 형식을 가진다. {text}에서 모든 {from}은 {to}로 바뀐다 $(subst ee,EE,feet on the street) 위를 수행하면 "fEEt on the strEEt"이 출력된다. 2) patsubst patsubst는 pattern substitution의 약자다 쉽게 말해서 특정 문자열을 대체하는게 아니라 패턴을 대체한다. 이때 %를 사용하는데, 와일드카드에서 사용되는 *와 비슷한 기능을 한다고 보면된다. patsubst {pattern},{repla..
make에서 %의 의미가 뭘까? 1) %의 의미 간단한 설명 2) 내가 가장 많이 사용하는 경우 1) %의 의미 간단한 설명 makedpsms 패턴 룰 (pattern rule)이라는 개념이 있다. %를 제외하고 다른 패턴들은, 정확하게 일치해야 하지만, %는 any nonempty sunstring과 매칭될 수 있다. (최소 1자 이상은 있어야함.) 예를 들어 설명하자면 %.c에서 %는 모든 .c로 끝나는 문자열과 매칭된다. 마찬가지로 s.%.c를 쓰게되면, s.로 시작하고 .c로 끝나는 문자열과 매칭된다. 즉 최소 5자는 되는 문자열과 매칭되는 것. 이때, %와 매칭되는 substring을 stem이라고 부른다. 여기서 주의사항이 있다. target에만 %가 있고, prerequisite에는 %가 없..
리눅스에서 tr은 치환의 의미를 가진다. (번역 아님 주의) 사용 목적 : tr은 지정한 문자를 바꾸거나 삭제하는 명령어다. 문자를 지우거나 바꾸고 싶을 때 주로 사용한다. 기본 명령어 format tr {옵션} A {B} 옵션없이 tr A B 문자열 내의 A를 모두 B로 변경 옵션 -d : 문자열 A에서 지정한 문자를 삭제한다. (--delete) -s : 문자열 B에서 반복되는 문자를 삭제한다. (--squeeze-repeats) -t : 문자열 A를 문자열 B의 길이로 자른다. (--truncate-set1) tr -d '0-9' : -d옵션으로 지정한 문자열을 모두 삭제한다. 대표적인 예를 보면 다음과 같다. 소문자 대문자로 변환 echo richet | tr '[a-z]' '[A-Z]' ## R..
sed 명령어는 편집에 특화된 명령어다. sed = streamlined editor의 약자 (능률적인) 수정 치환 삭제 글 추가 등 편집기 기능을 수행할 수 있다. vi, vim은 편집기를 열어서 수정하는 방식이라면, sed는 명령행에서 파일을 인자로 받고, sed 명령어를 통해 작업한 후에 결과를 화면으로 확인할 수 있다. sed 명령어를 이용해서 파일을 변경할 경우엔 원본을 손상하지 않는다. 쉘 리다이렉션을 통해서 편집 결과를 저장하지 않는 이상 파일이 변경되지 않는다. 모든 결과는 명령을 수행한 화면으로 출력이 되고, 원본에는 손해가 없다는 것이 명령어의 특징이다. 원리를 자세히 알기 위해선, pattern space, hold space에 대한 개념이해가 돼야 하지만 해당 내용은 추후에 다루고,..
타겟 : find 명령어가 궁금하신 분들 읽는 법: 당장의 커맨드가 궁금하신 분들은 Easy Command 원리가 궁금한 분들은 find in detail까지 읽기 Easy Command 현재 디렉토리 하위에 존재하는 파일 중에 이름이 매칭되는 파일 찾는 법 find . -name '{파일 이름}' $ find . -name '*.txt' 현재 디렉토리 하위에 존재하는 파일 중에 이름이 매칭되는 파일 찾는 법 find . -name {파일 이름} $ find . -name lazy.txt find in detail 리눅스를 쓰다보면 1) 파일/디렉토리를 찾거나 2) 특정 파일이 어떤 문구를 포함하고 있는지 확인하고 싶을 때가 있다. (해당 케이스는 아래 링크 참고) https://etloveguitar...
타겟 : 디렉토리 내에서 특정 파일이 있는지 확인하고 싶은 경우 pipe에 대한 개념 이해가 필요한 경우 등을 고민하는 분은 이 글을 참고하시기 바랍니다. 읽는법 : 쉬운 사용방법만 알고 싶은 분들은 Easy Explanation파트를, 왜?How?등 디테일하게 알아보고 싶다면 하단의 Pipe in Detail 참고. Easy Explanation pipe란? "connect" one standard stream (usually stdout) of one process to standard stream of another process (usually stdin) via pipe. 프로세스 혹은 실행된 프로그램, 명령어 등의 결과를 다른 프로그램으로 넘겨줄 때 사용 헷갈리는 주의 사항: pipe는 순서를..
타겟 : - 커맨드 실행 후 출력 결과를 계속해서 파일에 로그처럼 남기고 싶은 경우 - 프로그램 실행 후 출력 결과를 파일에 로그처럼 남기고 싶은 경우 - redirection에 대한 개념 이해가 필요한 경우 등을 고민하는 분은 이 글을 참고하시기 바랍니다. 읽는법 : 쉬운 사용방법만 알고 싶은 분들은 Easy Explanation파트를, 왜?How?등 디테일하게 알아보고 싶다면 하단의 Redirection in Detail 참고. Easy Explanation redirecting stdout stream 기호 기호들은 데이터의 흐름의 방향을 나타냄 > 출력(overwrite) >> 출력(append) overwrite (>) stdout stream을 redirect하기 위해서는 > or >> 기호를..