Take note with shell script

Mình tìm được đoạn shell script rất hay giúp ta ghi chú trên nvim khá hay. Các bạn có thể tham khảo đoạn script qua đường link sau https://github.com/nickjj/notes

mình download đoạn script vào /usr/local/bin/

sudo curl \
  -L https://raw.githubusercontent.com/nickjj/notes/master/notes \
  -o /usr/local/bin/notes && sudo chmod +x /usr/local/bin/notes

Mình chỉnh sửa đôi chúc cho phù hợp với mình.

[dt]% cat notes      
#!/usr/bin/env sh
# Create a dated text file at a specific location and append text to it.
#
# Usage:
#   $ notes something you want to jot down (appends that text to the file)
#   $ xclip -o | notes                     (appends your clipboard to the file)
#   $ notes                                (opens the file in your editor)
#
# Produces:
#   YYYY-MM.txt in your $NOTES_DIRECTORY (this is set below).

set -e

readonly NOTES_DIRECTORY="${NOTES_DIRECTORY:-"/run/media/dt/HDD_1T/notes"}"
readonly NOTES_EDITOR="${EDITOR}"

readonly NOTES_FILE="$(date +%Y-%m).txt"
readonly NOTES_PATH="${NOTES_DIRECTORY}/${NOTES_FILE}"

if [ ! -d "${NOTES_DIRECTORY}" ]; then
    while true; do
        printf "%s does not exist, do you want to create it? (y/n) " "${NOTES_DIRECTORY}"
        read -r yn

        case "${yn}" in
            [Yy]* ) mkdir -p "${NOTES_DIRECTORY}"; break;;
            [Nn]* ) exit;;
            * ) printf "Please answer y or n\n\n";;
        esac
    done
fi

if [ ${#} -eq 0 ]; then
    if [ -p "/dev/stdin" ]; then
        (cat; printf "\n\n") >> "${NOTES_PATH}"
    else
        eval "${NOTES_EDITOR}" "${NOTES_PATH}"
    fi
else
    printf "%s\n\n" "${*}" >> "${NOTES_PATH}"
fi
[dt-arco:bin]

Mình chỉnh lại đường dẫn là usb của mình

run/media/dt/HDD_1T/notes

khi chạy script thì sẽ tạo file text ở đường dẫn trên, file có tên có cấu trúc sau: year-month.txt.

Để chạy file shell script này ta vào /usr/local/bin và gõ notes hoặc ./notes

Nhưng mình không muốn mỗi lần phải vào thư mục trên mới chạy được script. Ta cấu hình thêm alias.

sudo nvim ~/.zshrc

Thêm vào các dòng sau:

alias nt="cd /usr/local/bin/ && notes"

export EDITOR="nvim"

fnt() {
 cd /usr/local/bin
 notes "$*"
}

xnt() {
 cd /usr/local/bin
 xclip -o | notes
}

Update lại .zshrc

source ~/.zshrc

Bây giờ chỉ cần mở terminal lên. Gõ fnt sẽ tạo file, ví dụ hôm nay là 31/03/2022 sẽ tạo file 2022-03.txt.

Muốn mở file 2022-03.txt thì gõ nt.

Còn 1 cách dùng khác là, khi ta thấy nội dung nào ta cần lưu lại ta chỉ cần tô đen nội dung đó và vào terminal gõ xnt, như vậy nội dung tô đen đã được lưu vào file, lưu ý là ta phải cài thêm gói xclip nhé. Quá nhanh phải không nào ?

Tóm lại ta có:

  • nt : mở file.
  • fnt: tạo file.
  • xnt : copy nội dung tô đen vào file.

Sau một thời gian ta có rất nhiều file

2022-03.txt
2022-04.txt
2022-05.txt
2022-06.txt

Ta muốn lưu lại 1 file cho năm 2022.

cat 2022-*.txt > 2022.txt 

Như vậy là ta có 1 file note cho năm 2020. Chúc vui nhé.