OOZOU
Hubungi Kami
Kembali ke TIL
shell

Fungsi Zsh untuk Menampilkan Pohon File

13 Oktober 2020

Saat menjelajahi direktori di command line, sering kali berguna untuk melihat struktur direktori dan subdirektori dalam format "pohon" (tree). Meskipun ada banyak alat yang tersedia, seperti tree, terkadang Anda menginginkan solusi kustom sederhana yang terintegrasi langsung ke dalam shell Anda. Dalam tulisan ini, kami akan membahas cara membuat fungsi Zsh sederhana untuk menampilkan struktur direktori dalam format pohon.

Membuat Fungsi Zsh untuk Menampilkan Pohon File

Jika Anda menggunakan Zsh sebagai shell default, menambahkan fungsi kustom ke file .zshrc dapat membantu Anda membuat perintah yang cepat dan efisien untuk melihat direktori dalam struktur pohon. Fungsi ini bekerja mirip dengan perintah tree yang populer, tetapi dibangun menggunakan ls dan sed, sehingga mudah diintegrasikan langsung ke lingkungan Zsh Anda.

Langkah 1: Tambahkan Fungsi lst() ke .zshrc

Langkah pertama adalah mendefinisikan fungsi lst() di dalam file .zshrc Anda. Fungsi ini menerima argumen opsional, yang dapat berupa path direktori apa pun, dan menampilkan pohon direktori mulai dari titik tersebut. Jika tidak ada direktori yang ditentukan, fungsi ini secara default menggunakan direktori saat ini.

Buka file .zshrc Anda menggunakan editor teks pilihan Anda dan tambahkan fungsi berikut:

lst() {
    if [ "$1" != "" ] # or better, if [ -n "$1" ]
    then
        ls -R $1 | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'
    else
        ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'
    fi
}

Langkah 2: Muat Ulang Konfigurasi Zsh Anda

Setelah menambahkan fungsi tersebut, Anda perlu memuat ulang file .zshrc agar perubahan berlaku. Anda dapat melakukannya dengan menjalankan perintah berikut di terminal:

sh
source ~/.zshrc

Langkah 3: Menggunakan Fungsi lst()

Setelah menambahkan fungsi ke .zshrc, Anda dapat langsung menggunakannya. Fungsi lst() memungkinkan Anda menampilkan semua subdirektori dalam direktori tertentu dalam format pohon. Berikut cara menggunakannya:

Untuk menampilkan subdirektori dari sebuah folder (misalnya, spec), jalankan:

sh
lst spec

Perintah ini akan menghasilkan struktur seperti pohon yang menampilkan semua subdirektori di dalam folder spec.

Jika Anda ingin melihat struktur pohon dari direktori saat ini, cukup jalankan:

sh
lst

Fungsi lst() akan menampilkan struktur folder, sehingga Anda lebih mudah memahami hierarki direktori Anda.

Contoh Output

Misalkan Anda memiliki struktur direktori berikut:

bash
spec/
├── controllers/
│   └── users/
├── models/
└── views/

Menjalankan perintah lst spec akan menghasilkan output yang mirip dengan berikut ini:

css
   spec
   |--controllers
   |   |--users
   |--models
   |--views

Struktur pohon sederhana ini memudahkan Anda memvisualisasikan hubungan antara direktori dan subdirektori.

Cara Kerjanya

Mari kita uraikan fungsi ini langkah demi langkah:

  1. ls -R $1: Perintah ls -R menampilkan isi direktori secara rekursif (atau direktori saat ini jika tidak ada argumen yang diberikan).
  2. grep ":$": Menyaring hasil agar hanya menampilkan nama direktori (baris yang diakhiri dengan :).
  3. Perintah sed:
    • 's/:$//': Menghapus titik dua di akhir setiap nama direktori.
    • 's/[^-][^/]*//--/g': Mengganti garis miring (/) dengan tanda hubung (--), sehingga struktur diubah menjadi format seperti pohon.
    • 's/^/ /': Menambahkan indentasi pada pohon direktori.
    • 's/-/|/': Mengganti tanda hubung dengan garis vertikal (|), sehingga format pohon semakin jelas.

Langkah 4: Sesuaikan Fungsi lst()

Anda dapat dengan mudah menyesuaikan fungsi lst() sesuai kebutuhan. Misalnya, Anda dapat mengubah format struktur pohon atau menambahkan opsi tambahan untuk menampilkan file. Jika Anda sering perlu menampilkan file sekaligus direktori, Anda dapat memodifikasi fungsi ini agar menyertakan file dengan menghapus filter grep yang hanya menampilkan direktori.

Alternatif: Menggunakan Perintah tree

Jika Anda lebih suka, Anda dapat menggunakan perintah tree, yang dirancang khusus untuk menampilkan struktur direktori. tree adalah utilitas yang tersedia luas dan dapat diinstal di sebagian besar sistem mirip Unix. Untuk menginstal tree, gunakan salah satu perintah berikut sesuai sistem Anda:

Di Ubuntu atau sistem berbasis Debian:

sh
sudo apt-get install tree

Di macOS:

sh
brew install tree

Setelah terinstal, Anda dapat menggunakan perintah tree untuk menghasilkan output serupa:

sh
tree spec

Perintah tree menyediakan lebih banyak fitur bawaan, seperti kemampuan menampilkan ukuran file, izin, dan lainnya. Namun, jika Anda lebih suka sesuatu yang sederhana atau jika tree tidak tersedia, fungsi lst() adalah alternatif ringan yang sangat baik.

Kesimpulan

Fungsi Zsh yang telah kami buat menyediakan cara yang sederhana dan efisien untuk menampilkan struktur direktori dalam format pohon. Dengan menambahkan fungsi lst() ke file .zshrc Anda, Anda dapat dengan cepat memvisualisasikan subdirektori dari folder mana pun di sistem Anda. Hal ini sangat berguna untuk menjelajahi struktur direktori yang kompleks dan memahami hierarki file serta folder dalam proyek Anda.

Jika Anda membutuhkan fungsionalitas lebih, pertimbangkan untuk menggunakan perintah tree yang memiliki fitur lebih canggih. Namun, untuk solusi kustom yang ringan dan terintegrasi langsung ke shell Zsh Anda, fungsi lst() adalah pilihan yang tepat.


Pertanyaan Umum (FAQ)

1. Untuk apa fungsi lst() digunakan?

Fungsi lst() adalah fungsi Zsh kustom yang menampilkan struktur direktori dalam format pohon. Fungsi ini menggunakan ls dan sed untuk memformat output, sehingga Anda mudah memvisualisasikan hierarki folder langsung di terminal.

2. Bagaimana cara menambahkan fungsi lst() ke konfigurasi Zsh saya?

Anda dapat menambahkan fungsi lst() dengan mengedit file .zshrc dan menempelkan definisi fungsi ke dalam file tersebut. Setelah itu, jalankan source ~/.zshrc untuk memuat ulang konfigurasi dan membuat fungsi tersebut tersedia.

3. Apakah saya dapat menyesuaikan output fungsi lst()?

Ya, Anda dapat menyesuaikan fungsi ini dengan memodifikasi perintah sed yang memformat output. Anda dapat mengubah struktur pohon, menambahkan detail lain, atau bahkan menyertakan file dalam daftar.

4. Apa alternatif selain menggunakan fungsi lst()?

Perintah tree adalah utilitas yang tersedia luas untuk menampilkan struktur direktori dalam format pohon. Perintah ini menawarkan lebih banyak fitur daripada fungsi lst() dan dapat diinstal di sebagian besar sistem mirip Unix.

5. Apakah saya dapat menggunakan fungsi lst() di shell selain Zsh?

Fungsi lst() ditulis untuk Zsh, tetapi dapat dengan mudah diadaptasi untuk shell lain seperti Bash dengan menambahkannya ke file konfigurasi yang sesuai (.bashrc untuk Bash).

Dengan mengintegrasikan fungsi lst() ke dalam alur kerja Zsh Anda, Anda dapat meningkatkan pengalaman di command line dan membuat navigasi direktori jauh lebih mudah.

Lainnya tentang shell

shell8 Desember 2020

Menjalankan Perintah Incognito/Privat di Bash dan Zsh

Cukup tambahkan spasi sebelum perintah dan perintah tersebut tidak akan disimpan ke ~/.bash\_history. Contoh: qrencode -o out.png "Some secret text"

shell22 Oktober 2020

Upgrade Database Postgres dengan Homebrew

Untuk melakukan upgrade postgres, Anda dapat menjalankan

shell13 Oktober 2020

Menyalin dengan Amazon AWS S3 CLI sambil Mengatur Izin

Buka term (atau yang setara) lalu tempelkan perintah berikut:

Punya proyek yang ingin diwujudkan?

Kami ingin mendengar apa yang sedang Anda bangun.

Mulai Percakapanhello@oozou.com
OOZOU Logo

Bangkok · Singapura · Hong Kong

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

Layanan

  • Pengembangan Web
  • Agen AI & Generative AI
  • Pengembangan Aplikasi Mobile
  • Analitik Data & Data Engineering
  • Desain UI/UX & Produk
  • Transformasi Digital

Perusahaan

  • Tentang Kami
  • Karier
  • Blog
  • Studi Kasus
  • Demo Langsung
  • Today I Learned
  • Hubungi Kami

Lainnya

  • Industri
  • Jaringan Mitra
© 2026 OOZOU. Hak cipta dilindungi undang-undang.
Kebijakan PrivasiKode EtikKebijakan ABAC