Máy mới chỉ cần:
ln 13
ln 13 24
lnk "tát đát"
Script của thầy là:
#!/usr/bin/env bash
→ Nó chạy trong Git Bash / MINGW64, không chạy trong:
- ❌ CMD
- ❌ PowerShell thuần
👉 Chỉ cần cài Git for Windows là OK.
Trên máy mới:
git clone https://github.com/henrydoth/chu_vang_sanh.git
cd chu_vang_sanh
Giả sử file nằm ở:
/d/GitHub/chu_vang_sanh/ln_lang_nghiem.bash
Thêm vào ~/.bashrc:
source /d/GitHub/chu_vang_sanh/ln_lang_nghiem.bash
Sau đó:
source ~/.bashrc
- Có Git for Windows (Git Bash)
- Hoặc có WSL (Ubuntu)
- Clone repo từ GitHub
- Vào thư mục
source ln_lang_nghiem.bash- Gõ:
ln 13
lnk "tát đát"
👉 Chạy bình thường trong Git Bash
⚠ Không chạy trong CMD hoặc PowerShell thuần (trừ khi vào WSL)
MacOS mặc định có:
- bash
- zsh
- sed
- grep
- stty
👉 Script của thầy 100% tương thích
Chỉ cần:
chmod +x ln_lang_nghiem.bash
source ln_lang_nghiem.bash
Hoặc thêm vào ~/.zshrc:
source /path/to/ln_lang_nghiem.bash
Sau đó mở terminal là dùng được.
- Project phải có file
chu_vang_sanh.Rproj - Cấu trúc tối thiểu:
chu_vang_sanh/
├─ R/
│ ├─ run_all.R
│ ├─ ln_md.R # tụng Lăng Nghiêm từ Markdown
│ ├─ niem_nam_mo.R # niệm Nam mô A Di Đà Phật
│ └─ vang_sanh_chu.R # chú Vãng Sanh
├─ lang_nghiem_chi.md # nội dung chú Lăng Nghiêm
├─ phap_khi/
│ ├─ chuong.mp3
│ └─ mo.mp3
Trong R / RStudio:
source("R/run_all.R")
Sau đó các hàm sẽ sẵn sàng dùng ngay.
niem()
- Mặc định: 27 câu
- Có chuông + mõ
- Phù hợp ban đêm (âm lượng thấp)
Ví dụ:
niem(108) # 108 câu
niem(18, mo_moi_chu=TRUE) # 18 vòng = 108 chữ, mỗi chữ 1 mõ
vs() # tiếng Việt
vs1() # chữ Hán
Ví dụ:
vs(delay = 2)
vs1(delay = 2)
ln(1, 12)
ln(1, 4) # dòng 1 → 4
ln(13, 24) # chu kỳ kế tiếp
lnnc(0) # chu kỳ đầu
lnnc(0, 1, 2) # nhiều chu kỳ
- 🔔 Chuông: mỗi 12 dòng
- 🪵 Mõ:
- Mỗi từ / ký tự = 1 nhịp
Nam-mô→ 2 nhịp (Nam/mô)- Ký tự
🙏không gõ mõ - Bỏ số thứ tự đầu dòng
- Âm lượng fade-out trong 1 dòng → tiếng cuối =
1/2tiếng đầu
- ⏱️ Nhịp mặc định:
mo_interval = 0.80 # có thể chỉnh nhanh/chậm
Ví dụ:
ln(1, 12, mo_interval = 1.0) # tụng chậm, rõ chữ
ln(1, 12, manual = TRUE)
Phím:
Enter/n: dòng tiếpp: lùi dòngq: thoát
README.md của project /Users/mac/Documents/chu_vang_sanh.
Bạn chỉ cần copy & paste.
chu_vang_sanh/
└── zs_h/
├── b_1_hello.zsh
└── b_2_echo.zsh
- Editor: RStudio (chỉ để edit text)
- Runtime: Terminal macOS
- Ngôn ngữ: Zsh (Z shell)
zs_h/b_1_hello.zsh
#!/usr/bin/env zsh
# b_1: Hello World
echo "Hello, World"
cd zs_h
chmod +x b_1_hello.zsh # chỉ cần làm 1 lần
./b_1_hello.zsh
chmod +x= cho phép file được chạy./file.zsh= chạy file trong thư mục hiện tại- Shell không tự chạy file nếu không có
./
- Hiểu biến
- Hiểu tham số dòng lệnh (
$1,$#,$@)
zs_h/b_2_echo.zsh
#!/usr/bin/env zsh
# b_2: variables & arguments (simple)
NAME="Liêm"
COUNT=2
echo "Xin chào $NAME"
echo "Số lần: $COUNT"
echo "---------------------"
echo "Câu niệm: $1"
echo "Số tham số: $#"
echo "Tất cả: $@"
Không truyền tham số:
./b_2_echo.zsh
Truyền 1 câu (có khoảng trắng → phải dùng dấu ngoặc kép):
./b_2_echo.zsh "Nam Mô A Di Đà Phật"
-
Khai báo biến không có dấu cách:
A=1 # đúng A = 1 # sai -
Tham số:
$1: tham số thứ nhất$#: số lượng tham số$@: tất cả tham số
-
Chuỗi có dấu cách bắt buộc dùng
"..."
-
RStudio chỉ dùng làm editor
-
Terminal là nơi chạy thật
-
.zshlà shell script -
Luồng chuẩn:
edit → chmod +x → ./script.zsh
-
ln12()→ đọc 12 dòng Lăng Nghiêm -
ln12(time = 3)→ đọc chậm -
ln12(1:3)→ đọc nhiều blockhere::here()
dir.create(here::here("tmp"), showWarnings = FALSE)dir() list.files() list.files(here::here("md_files"))file.exists(here::here("md_files", "test.md"))
writeLines("Nam mô", here::here("tmp", "test.md"))cat(" A di Đà Phật", file = here::here("tmp", "test.md"), append = TRUE)cat("\nNam mô A Di Đà Phật", file = here::here("tmp", "test.md"), append = TRUE)📌 Nhớ:
\n= xuống dòngappend = TRUE= ghi thêm, không mất chữ cũ
readLines(here::here("tmp", "test.md"))
Không sửa trực tiếp file → luôn: đọc → sửa vector → ghi lại
f <- here::here("md_files", "ke_tan_a_di.md")
x <- readLines(f)
x[3] <- "Bốn mươi tám nguyện viên thành" writeLines(x, f)
x[6] <- gsub("dậc", "bậc", x[6]) writeLines(x, f)
x[x == "Bốn mươi tám"] <- "Bốn mươi tám nguyện viên thành" writeLines(x, f)
x <- readLines(f) x <- x[-5] writeLines(x, f)x <- readLines(f) x <- x[!duplicated(x)] writeLines(x, f)
x <- readLines(f) writeLines(paste(x, collapse = " "), f)x <- readLines(f) x <- x[nzchar(trimws(x))] writeLines(x, f)
file.copy(f, paste0(f, ".bak"), overwrite = TRUE)
setwd("...")
Việc Lệnh Biết mình ở đâu here::here()Ghi file mới writeLines()Ghi thêm cat(..., append=TRUE)Đọc file readLines()Sửa đọc → sửa → writeLines()