Linux command

Linux 왕초보를 위한 command - 실무명령어 10

쥴리정 2025. 4. 6. 17:57

이번에는 IC 레이아웃 검증이나 layout 관련 실무에서 자주 사용하게 되는 리눅스 명령어들 중, 조금 더 다양한 기능을 가진 명령어들을 소개해 본다.
기본적인 디렉토리/파일 이동과 열람은 마스터했다면, 이제 이런 유틸리티성 명령어들을 익혀두는 것이 업무 효율에 큰 도움이 된다.

 


1. split – 파일 나누기 (라인 수 또는 용량 기준)

파일이 너무 클 때, 한 번에 열어서 보기 어려운 경우 split 명령어로 파일을 나눌 수 있다.
업무 중 DRC 결과 로그나 netlist처럼 매우 큰 텍스트 파일을 처리할 때 유용하다.

라인 수 기준으로 나누기

split -l 1000 bigfile.txt part_   :  bigfile.txt를 1000줄씩 잘라 part_aa, part_ab, part_ac 식으로 저장한다.

용량 기준으로 나누기

split -b 1m bigfile.txt part_     : 1MB 단위로 나누어 저장한다.
 

참고로, 파일명 접두사(part_)를 지정하지 않으면 기본값은 x로 시작하는 이름이 만들어진다 (예: xaa, xab, xac...).


2. sort – 줄 단위로 정렬하기

파일 안의 내용을 줄 단위로 정렬하고 싶을 때 사용하는 명령어이다.
예를 들어 netlist 안의 instance 이름 리스트나 error log 등을 알파벳 순서로 정렬하고 싶을 때 유용하다.

기본 정렬 (오름차순)

sort filename.txt   :  filename.txt의 내용을 가나다 / ABC 순으로 정렬해준다.

반대로 정렬 (내림차순)

sort -r filename.txt    :  -r 옵션을 주면 역순으로 정렬된다. (즉, Z → A 순서)

숫자 기준 정렬 (예: 에러 개수 등)

sort -n filename.txt   :  숫자 순서로 정렬하고 싶을 때는 -n 옵션을 사용한다.

3. uniq – 중복 제거 또는 중복 확인

sort 명령어와 함께 자주 쓰이며, 중복된 라인을 제거하거나, 중복된 항목을 찾아낼 수 있다.

sort instance.txt | uniq   :  중복 제거
sort instance.txt | uniq -d   :  중복된 것만 출력

 


4. paste – 라인 병합

두 개의 파일의 같은 줄을 나란히 붙여서 보고 싶을 때 사용한다. 비교 작업에 유용하다.

paste file1.txt file2.txt

 


 5. touch – empty 파일 생성 & 타임스탬프 변경

 

가장 기본적인 용도는 새로운 empty 파일을 만드는 것이다.

새로운 empty 파일 만들기

touch newfile.txt  :  newfile.txt가 없으면 새로 생성되고, 있으면 최종 수정 시간만 현재 시간으로 갱신된다.

 

실무 팁: 디렉토리 전체의 타임스탬프를 특정 날짜로 변경하기

새로운 tape-out 용 레이아웃 작업을 시작할 때, 기존에 존재하던 라이브러리, 셀, GDS, LVS/DRC DB 등의 타임스탬프를 작업 시작일 기준으로 통일하고 싶을 때가 있다.
이럴 때 touch 명령어로 날짜를 일괄 변경하면 정리하기 좋다.

 
 
touch -t 20250401 layout.db   :  layout.db 파일의 타임스탬프를 2025년 4월 1일 00:00으로 변경한다.

(형식: [[CC]YY]MMDDhhmm[.ss])

하위 디렉토리 포함 전체 파일 날짜 변경

find . -type f -exec touch -t 20250401 {} \ ;  :   현재 디렉토리(.) 이하 모든 파일의 날짜를 2025년 4월 1일로 변경한다.
 

 


6. gzip – 파일 압축 및 해제

파일을 .gz 형식으로 압축할 때 사용한다.


압축 해제는 gzip -d, gunzip 등으로 할 수 있다.

 
gzip layout.gds             :   layout.gds.gz 생성
gzip -d layout.gds.gz    :   압축 해제

 

현업 팁: Calibre에서 .gds.gz 파일 사용하기

Calibre로 레이아웃 검증을 수행할 때, .gds.gz 형식의 GDS 파일을 직접 사용할 수 있다는 점도 꼭 알아두자.

예를 들어 GDS 파일이 디스크 공간 절약을 위해 압축되어 있을 경우, 굳이 압축을 풀 필요 없이 아래와 같이 rule file에서 바로 사용하면 된다:

 
LAYOUT SYSTEM GDSII
LAYOUT PATH "topcell.gds.gz"
LAYOUT PRIMARY topcell
 

Calibre는 내부적으로 gzip 포맷을 자동으로 인식해서 백그라운드에서 압축을 해제하며 처리해 준다.
실제로는 압축된 상태로 사용하는 것이 디스크 I/O 성능 면에서도 유리할 수 있으므로, 가능하면 압축 상태로 사용하는 것을 추천한다.


7. wc – 라인 수, 단어 수, 바이트 수 확인

netlist 파일의 line 수나 DRC 결과 파일의 통계를 확인할 때 유용하다.

 
wc -l netlist.cdl    :  라인 수만 출력
wc -lwm summary.log   : 라인수, 단어수, 바이트 수 모두 출력

8. date – 현재 시간 확인

리눅스 시스템의 현재 시간과 날짜를 확인할 수 있는 명령어이다.

 
명령어  :  date

 

실행하면 아래처럼 출력된다:

 
Sat Apr 6 12:34:56 KST 2025

1. 서버 시간 기준 확인

서버에 접속해 작업할 때 자신의 로컬 컴퓨터 시간서버 시간이 다를 수 있다.
특히 해외에 있는 서버나, 시간이 제대로 동기화되지 않은 서버의 경우 수정한 파일의 시간 정보가 헷갈릴 수 있는데,

date 명령어를 사용해 현재 서버가 인식하는 시간을 확인해두면 이후 ls -l, touch, make 등으로 파일의 최종 수정 시간을 확인할 때 혼동을 줄일 수 있다.

2. 원하는 형식으로 출력하기

시간 출력 형식을 지정할 수도 있다. 예를 들어:

 
date "+%Y-%m-%d %H:%M:%S"   
 
 2025-04-06 12:34:56 같은 형식으로 출력된다.

스크립트 작성 시 로그에 시간 찍어둘 때 유용하게 사용된다.

3. UTC 기준 시간 보기

date -u      :    UTC(GMT) 기준의 현재 시간을 출력해준다. 타 지역 서버 시간과 비교할 때 참고하면 좋다.
 

 


9. ln – 파일 링크 생성 (하드 링크, 심볼릭 링크)

 

하나의 파일을 여러 위치에서 참조할 수 있도록 도와주는 명령어.
하드 링크심볼릭 링크(바로가기) 두 가지 방식이 있다.

1) 하드 링크 만들기

 
명령어 : ln 원본파일 링크파일
  • 원본과 링크는 동일한 inode 번호를 공유함.
  • 원본 파일을 삭제해도 링크는 유효.
  • 같은 파일 시스템 내에서만 사용 가능.

2)심볼릭 링크 만들기

 
명령어 : ln -s 원본파일 링크파일
 
링크는 파일 이름(경로)을 참조하는 "가상 링크".
원본이 삭제되면 링크가 끊어지고(broken link), 다른 디렉토리, 다른 파일 시스템에도 사용 가능하다.
 
 
ln -s /home/layout/common/DRC.run ./run_drc     :   현재 폴더에 run_drc라는 심볼릭 링크 생성.
 

3) 링크 확인 

ls -l        :   파일명 -> 경로 형식으로 심볼릭 링크 확인 가능.
 

 

4) 실무 팁

 심볼릭 링크로 공용 스크립트나 PDK 경로를 설정해 두면 유지보수에 매우 유리함.

 필요할 때 unlink로 조심스럽게 링크만 제거 가능하니, 실수로 원본 지울 걱정도 줄어든다.


10. unlink -링크 삭제 (해제)

링크 삭제는 두 가지 방법으로 가능한데, rm 명령어를 사용하는 방법과 unlink를 사용하는 방법이 있다.

 1) rm 사용

사용법 : rm 링크파일
 
하드 링크든 심볼릭 링크든 삭제 가능한데, 하드 링크의 경우 원본과 구분이 어려워 주의해야 한다.
 

2) unlink 사용 (심볼릭 링크 삭제에 적합)

 
사용법 : unlink 링크파일
 
이름 그대로 링크 하나만 제거하는 명령어로 하드 링크에도 사용 가능하지만, 보통은심볼릭 링크 삭제 시 더 명확하고 안전하게 사용된다.
 
unlink run_drc    :  run_drc라는 심볼릭 링크만 제거됨. 원본은 그대로!

 

설명을 보면 알겠지만 하드 링크는 원본과 구분이 어려운 단점이 있기 때문에 이 글을 읽는 이들은 링크를 실행시킬 때는 무조건 ln -s 를 사용하고, 링크를 해제할 때는 unlink 명령어를 사용하는 것을 권한다.

 

이번 글에 소개한 명령어들은 실무에서 자주 사용되는 툴들과 함께 쓰이게 되며, 알고 있으면 업무 속도가 훨씬 빨라진다.

열심히 연습들 해보시길!!