Bash ile Dosya Oluşturma Fonksiyonu
Aşağıdaki Bash fonksiyonu, tarih formatıyla birlikte adlandırılmış bir Markdown dosyasını, belirli bir dizinde oluşturmayı sağlar. Her bir satırının işlevini ayrıntılı olarak açıklayalım:
nn () {
# Generate the current date in YYYY-MM-DD format
create_date="$(date +%Y-%m-%d)"
# Convert the input argument ($1) to lowercase and replace spaces with underscores
filename=$(echo "$1" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')
# Combine date and filename to create the new file name
newfile="${create_date}_${filename}.md"
# Navigate to the target directory and create the new file
cd ~/Documents/vault/one-ring-to-rule-em-all/00-inbox/ || return
touch "$newfile"
# Print a success message
echo "File created: $newfile"
}
Satır Satır Teknik Açıklama
1. Tarih Oluşturma
create_date="$(date +%Y-%m-%d)"
- Amaç: Günün tarihini
YYYY-MM-DD
formatında oluşturur. Örneğin, 23 Ocak 2025 tarihi için2025-01-23
değeri döndürülür. date
Komutu: Sistemin tarih bilgisini sağlar.+%Y-%m-%d
: Tarih formatını belirtir: Yıl (Y), Ay (m), Gün (d).
2. Dosya Adını Düzenleme
filename=$(echo "$1" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')
- Amaç: Kullanıcıdan gelen dosya adını küçük harflere çevirir ve boşlukları alt çizgi (
_
) ile değiştirir. $1
: Fonksiyona geçirilen ilk argümandır.tr '[:upper:]' '[:lower:]'
: Büyük harfleri küçük harflere dönüştürür.tr ' ' '_'
: Boşluk karakterlerini alt çizgiyle değiştirir.
3. Dosya Adını Birleştirme
newfile="${create_date}_${filename}.md"
- Amaç: Tarih ve dosya adını birleştirerek yeni bir dosya adı oluşturur.
$create_date
: Tarih bilgisini içerir.$filename
: Kullanıcının sağladığı dosya adı.- Sonuç: Örneğin, tarih
2025-01-23
ve dosya adımy_notes
ise2025-01-23_my_notes.md
dosya adı oluşturulur.
4. Hedef Dizine Geçiş
cd ~/Documents/vault/one-ring-to-rule-em-all/00-inbox/ || return
- Amaç: Dosyanın oluşturulacağı dizine geçiş yapar.
cd
: Dizini değiştiren komuttur.~/Documents/vault/one-ring-to-rule-em-all/00-inbox/
: Hedef dizindir. Kullanıcınınhome
klasöründen itibaren tam yolu belirtilmiştir.|| return
: Eğercd
işlemi başarısız olursa, fonksiyonun çalışmayı bırakmasını sağlar.
5. Dosyayı Oluşturma
touch "$newfile"
- Amaç: Belirtilen adla boş bir dosya oluşturur.
touch
Komutu: Dosya oluşturma veya mevcut bir dosyanın zaman damgasını güncellemek için kullanılır.$newfile
: Daha önce birleştirilen yeni dosya adıdır.
6. Başarı Mesajı Yazdırma
echo "File created: $newfile"
- Amaç: Dosyanın başarıyla oluşturulduğunu kullanıcıya bildiren bir mesaj gösterir.
echo
Komutu: Terminale metin yazdırır.$newfile
: Kullanıcıya oluşturulan dosyanın tam adını gösterir.
Kullanım Örneği
Fonksiyonu çalıştırmak için aşağıdaki komutu terminale yazabilirsiniz:
nn "My Notes"
- Sonuç:
2025-01-23_my_notes.md
adında bir dosya, belirtilen dizinde oluşturulacaktır.
İpuçları ve Geliştirmeler
- Dizin Kontrolü: Eğer hedef dizin mevcut değilse, dizini oluşturmayı düşünebilirsiniz:
mkdir -p ~/Documents/vault/one-ring-to-rule-em-all/00-inbox/
- Argüman Kontrolü: Kullanıcı bir dosya adı sağlamazsa, varsayılan bir ad kullanabilirsiniz:
filename=${1:-"default"}
- Ek Mesajlar: Dosya içeriğini otomatik olarak doldurmak için şablon kullanabilirsiniz.