옵시디언 활용/Templater

Templater 심화: User Functions (tp.user)

반응형

Templater 플러그인의 사용자 정의 함수는 크게 두 가지 유형으로 나눌 수 있습니다: Script User FunctionSystem Command User Function입니다.

Script User Function

JavaScript 파일에 정의된 JavaScript 함수를 호출하고 그 출력값을 받을 수 있습니다. 사용하기 위해서는 Templater 설정에서 스크립트 폴더를 지정해야 합니다. 이 폴더는 Vault에서 접근 가능해야 합니다.

Script User Function 정의하기

스크립트 폴더로 Scripts 폴더를 지정합니다. Templater는 Scripts 폴더 내의 모든 JavaScript 파일(.js 확장자)을 로드합니다. Scripts/my_script.js와 같은 스크립트를 생성하여 사용할 수 있습니다. 스크립트는 CommonJS 모듈 사양을 따라야 하며, 단일 함수를 내보내야 합니다.

function my_function (msg) {
    return `Message from my script: ${msg}`;
}
module.exports = my_function;

이 스크립트를 사용자 함수로 호출하려면 다음과 같이 입력합니다:

<% tp.user.my_script("Hello World!") %>

"Message from my script: Hello World!"라는 메시지를 출력합니다.

 

Script User Function에서는 app이나 moment와 같은 전역 네임스페이스 변수에 접근할 수 있지만, tptR과 같은 템플릿 엔진 범위 변수에는 접근할 수 없습니다. 이 변수들을 사용하려면 함수의 인자로 전달해야 합니다.

System Command User Function

시스템 명령을 실행하고 그 출력값을 받을 수 있습니다. 사용하기 위해서는 Templater 설정에서 시스템 명령 사용자 함수를 활성화해야 합니다.

System Command User Function 정의하기

System Command User Function을 활성화를 합니다.

플러그인 설정으로 이동하여 Add New User Function를 클릭합니다. 함수 이름을 시스템 명령과 연결해 Add New User Function을 정의합니다. 

 

함수 인자는 선택적으로 전달할 수 있으며, 단일 JavaScript 객체로 전달됩니다. 이 인자는 환경 변수의 형태로 프로그램이나 스크립트에서 사용할 수 있습니다.

 

예를 들어, 다음과 같이 명령을 선언할 수 있습니다:

<% tp.user.echo({a: "value 1", b: "value 2"}) %>

만약 이 시스템 명령이 bash 스크립트를 호출한다면, $a$b를 사용하여 변수 ab에 접근할 수 있습니다.

 

시스템 명령 내에서 내부 함수를 사용할 수도 있으며, 시스템 명령이 실행되기 전에 내부 함수가 대체됩니다. 예를 들어, cat <% tp.file.path() %>라는 시스템 명령을 구성했다면, 실행 전에 실제 파일 경로로 대체됩니다.

예시 1. 현재 날짜 작성

함수 이름을 write_current_date로 설정하고, 연결할 시스템 명령을 echo "$(date)" >> ~/Documents/Obsidian/Logs/current_date.txt로 입력합니다. 이 명령은 현재 날짜와 시간을 current_date.txt 파일에 추가합니다.


Obsidian 노트에서 다음과 같은 코드를 사용하여 방금 정의한 시스템 명령 사용자 함수를 호출할 수 있습니다:

<% tp.user.write_current_date() %>

이 코드를 실행하면 Templater가 write_current_date 사용자 함수를 호출하고, 설정한 시스템 명령에 따라 현재 날짜와 시간을 ~/Documents/Obsidian/Logs/current_date.txt 파일에 기록합니다.

예시 2. 디스크 사용

함수 이름을 disk_usage로 설정하고, 시스템 명령으로 df -h를 입력합니다. (df -h 명령은 Unix 기반 시스템에서 디스크 사용량을 인간이 읽을 수 있는 형식으로 보여줍니다. Windows 사용자는 wmic logicaldisk get size,freespace,caption을 사용할 수 있습니다.)

Templater 문법을 사용하여 다음과 같이 함수를 호출합니다:

<% tp.user.disk_usage() %>

결과는 다음과 같이 나타날 수 있습니다:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        40G   11G   27G  30% /

 

위 예시처럼, 시스템 명령 사용자 함수는 Obsidian 사용자가 시스템 관련 정보를 쉽게 조회하고, 그 결과를 자신의 노트에 기록할 수 있도록 도와줍니다. 자신의 작업 환경에 대한 중요한 정보를 빠르게 문서화하고, 필요한 정보에 쉽게 접근할 수 있게 됩니다.

고려 사항

  • 환경에 따른 명령 실행: UNIX 계열 시스템(예: macOS, Linux)과 Windows는 명령어 구문이 다릅니다. 
  • Obsidian 모바일 지원: 현재 Templater의 User Function는 Obsidian의 모바일 버전에서 지원되지 않습니다. 이 기능은 데스크톱 버전에서만 사용 가능합니다.
  • 보안 고려 사항: 외부 스크립트나 시스템 명령을 실행할 때는 보안을 주의해야 합니다. 신뢰할 수 있는 스크립트만 실행하고, 개인 정보를 다룰 때는 특별히 주의해야 합니다.

 

반응형