안녕하세요. 이번 시간에는 make의 phony target과 .phony에 대해서 알아봅시다. Makefile에서 이런 것은 흔히 보셨을 거에요. clean 이라는 목표가 있고, 명령어로 rm *.txt를 수행합니다. 그리고 여태까지 이것을 목표 정도로 설명했을 거에요. 이 clean은 action이거나 파일일 수 있습니다. 여기서 하나 반전. 만약에 Makefile이 있는 위치에 clean 이라는 파일이 있으면 어떻게 될까요? clean이라는 파일을 생성했습니다. make clean을 실행했더니, 'clean' is up to date가 뜨게 됩니다. 그러면서 clean이 실행되지 않게 됩니다. 왜 그럴까요? 이 문제는 결론적으로 clean 이라는 파일 때문에 생긴 문제입니다. 그런데, 왜 up to..
OS/리눅스 검색 결과
리눅스에서 mkdir는 디렉토리를 만드는 명령어입니다. 말 그대로 mkdir DIRECTORY는, DIRECTORY를 생성하는데 없으면 생성합니다. 있으면 어떻게 될까요? 혹은, 디렉토리를 만들려고 하는데 parent directory가 없는 경우에 어떻게 될까요? 이 케이스들을 각각 보면서 -p 옵션에 대해 이해해 보도록 하겠습니다. 먼저 -p는 이미 디렉토리가 존재하는 경우, 에러를 떨어트리지 않습니다. 그리고, 필요한 경우에 부모 디렉토리를 만듭니다. 이걸 역으로 보면 -p가 없다면 디렉토리가 존재하는 경우에 에러를 떨어트립니다. 그리고, 필요한 경우에 부모 디렉토리를 만들지 않을 겁니다. 현재 저는 test3에 들어와 있습니다. mkdir t1으로, 디렉토리 t1을 만들었습니다. 그 다음에 tre..
리눅스에서 xargs 명령어를 알게 모르게 봤었는데요. 자주 보면서도 대체 왜 쓰는 것인지. 어떻게 동작하는지 잘 몰랐었습니다. 그래서 쓰게 되었습니다. 어떤 명령어인지만 간단하게 알아보겠습니다. 여기에서는 옵션들을 다루지 않습니다. 필요할 때 하나씩 익히도록 하겠습니다. 먼저, xargs는 명령어를 만들고 실행시킨다고 되어 있습니다. stdio로부터. 표준 입력으로부터 읽어서 명령어를 만든 다음에, 해당 명령어를 수행하게끔 한다. 정도로 이해하면 됩니다. 서문만 읽어보면, blank나 개행을 기준으로 토큰을 분리합니다. 그리고 command를 1번 혹은 그 이상 실행시킵니다. 어떤 것이랑 같이? initial arguments랑 같이. 표준 입력으로부터 읽은 것을 가지고 처리를 한다고 되어 있어요. 무..
grep은 키워드나 패턴을 찾는 데 꽤 유용하게 쓰곤 합니다. 특히, grep -rn "keyword" . 꼴은 상당히 강력합니다. keyword를 포함하고 있는 파일을 제 현재 디렉토리에서부터 재귀적으로 찾아주기 때문입니다. 여기서 한 가지 더 질문. 특정 디렉토리를 제외하고 싶습니다. 혹은, 특정한 확장자만 검색 결과에 나오고 싶습니다. 이런 문제 상황들이 생각보다 자주 발생하는데요. 어떻게 하면 되는지 알아보겠습니다. 먼저 --exclude=GLOB입니다. 파일 이름이 pattern에 걸리는 경우 건너 뛴다고 되어 있어요. 그런데, suffix가 match 된다고 합니다. 접두사가 아니라 접미가 걸린다는 의미입니다. --exclude-dir은 파일 이름이 아닌, 폴더를 의미합니다. 폴더의 suffi..
랜덤한 문자열을 뽑고 싶습니다. 어떻게 하면 좋을까요? python에서는 random.choices와 비슷하게 뽑고 싶다는 이야기입니다. 즉, 같은 문자가 여러 번 나와도 됩니다. 이 때 쓸 수 있는 것이 /dev/random, /dev/urandom을 이용하는 방법입니다. 그러면, 이런 이상한 문자들이 끝도 없이 생성됨을 알 수 있어요. 이들을 적절히 정제한 다음에 상위 x개만 자른다면 비슷한 기능을 구현할 수 있겠네요. 여담으로, /dev/urandom의 file type을 보면 character special이라고 되어 있네요. 문자열 중에서 특정 문자만을 삭제하는 경우 tr 명령어를 잘 쓰게 되는데요. -c 옵션을 붙이면 complement를 의미합니다. 반전의 의미입니다. 예를 들어, ^%123..
최근댓글