loading
본문 바로가기
BACK-END/CS

[리눅스] 나만의 명령어 만들기

by pikiforyou 2024. 4. 22.

 

 

 

 

 

리눅스를 공부하던 중, 디렉토리 구조에서  /bin,  /sbin (=/usr/bin, /usr/sbin) 파일에 기본적인 명령어가 저장되어있고, 리눅스는 파일로 모든것이 실행되는 구조이니 명령어를 만들어서 넣으면 실행되겠구나 생각했다.

실제로 직접 만든 명령어를 권한 편집해서 넣어놓으면 명령어처럼 실행될수 있고, 명령어를 직접 만들진 않아도 alias 별칭처럼 사용하는 방식도 있었다.

그래서  daram 이라고 어디서든 치면, 다람쥐 그림이 출력되면 재밌겠다 싶어서 간단하게 만들어보았다.

 

 

그림을 문자로 변환하기

처음에는 아스키코드로 사진을 넣었을때 변환되게 하는 코드를 짜려고했는데, 역시 세상에는 능력자들이 많다..!

아무래도 shell 에서 볼거다보니 아스키코드보다는 점자로 된게 더 뚜렷하게 잘 보일것 같았는데, 변환해주는 사이트가 이미 있었다.

그래서 잽싸게 사이트에서 변환해서 얻어냈고 사이트는 아래와 같다. 

https://snskeyboard.com/dotart/

완성본을 보고, 아는 후배분이(?) 아스키코드로 사진변환하는 코드를 뚝딱 짜시긴 하더라 ..

 

 

 

리눅스 실행파일

윈도우에서는 파일확장자를 통해 실행파일을 구분하지만, 리눅스는 실행권한이 있는 파일이 실행 파일이 된다. 즉, 파일 확장자가 있긴해도 단순히 구분하는 용도일뿐 파일형식을 결정짓지는 않는다. 흔히 알고있는 리눅스 파일권한에서 (rwx) , x(execute)가 있어야 실행파일이 된다는 소리이다. 

나의 명령어는 단순히 그림문자가 출력되기만 하면 되므로 echo 를 이용했다

$touch daram

## daram파일을 만든후 vim편집기를 이용해 열어 수정
$vi daram

 

echo "
(그림문자 변환한거 복사)
(마우스 휠을 이용하여 붙여넣기 하면 됩니다)
"

 

이후 실행권한을 추가해준다. root 단으로 작업하고 있어서 #로 표시되는데, 유저로 전환해서 추가해도 상관없다

 

$ls -l
-rw-rw-r-- 1 root toot 10 날짜 daram

##실행권한을 추가한다. 744등 진수로 줘도 상관없다.
$chmod u+x daram

 

이제 실행파일로 변환되어 색깔이 달라진것을 확인할 수 있다.

 

 

 

전역 명령어로 등록하기

내 daram 실행파일의 위치는  /test1/daram 에 위치해있다. 현재 상태로는 실행파일은 되었지만, 파일이 있는 위치까지 가서 실행을 하거나, 아니면 전체경로를 다 적어줘야지만 실행된다. 우리의 목적은  cp cd 처럼 명령어로 만들어주는거니 등록을 해줘야하는데 총 3가지의 방법이 있다. 먼저 경로를 적지않고 이름만으로 실행이 가능한 위치를 확인해봐야하니 환경변수를 검색해보자.

  echo $PATH 명령어를 치면 확인할 수 있는 환경변수 경로중에서,  나는  /usr/bin 경로에 넣으려고 한다. 

 

1) 실행파일을 실제 /usr/bin , 즉 환경변수에 등록된 파일에 직접 추가한다

2) 현재 실행파일이 있는 경로를 환경변수에 등록한다.

3) 실행파일의 심볼릭 링크파일을 /usr/bin, 환경변수에 등록된 파일에 생성한다

 

여러방법이 있지만 3번이 가장많이 쓰인다고하는데 그 이유는 아래와 같다.

1) 실제 파일이 내가 관리하고 싶은 디렉토리에 위치할 수 없다

2) PATH에 추가되는 경로가 많으면 명령어 충돌이슈등이 있음 

그래서 나 역시 3번의 방법을 이용해 심볼릭 링크를 만들어서 지정했다

 

## PATH상에 있는 파일로 이동
$cd /usr/bin

## /test1/daram경로의 실행파일을 daram으로 지정해 심볼릭링크생성
$ln -s /test1/daram daram

 

그럼 아래와 같이 심볼릭 링크가 잘 생성된것이 보이고, 어느 경로에서든  daram  만 입력하면 그림이 잘 출력된다!

 

 


- 궁금한 점 / 수정 요청사항 등은 언제든 댓글 달아주세요 :)

- 도움이 되셨다면 ❤️ 하트 한 번 눌러주세요! 감사합니다 ! 

 

댓글