Ini adalah tulisan kedua saya terkait Seri Linux Programming. Tulisan ini akan membahas sedikit lebih detail tentang manipulasi file di Linux. Mungkin ada beberapa perintah — sudah dibahas pada tulisan sebelumnya — yang akan dibahas ulang.

Daftar Perintah untuk Manipulasi File di Linux
1. echo
Perintah echo
pada linux digunakan untuk menampilkan teks pada terminal. Misalnya kita ingin mencetak tulisan Halo dunia!
,
echo "Halo dunia!"
Output:

Selain menampilkan teks secara langsung, perintah echo
juga bisa digunakan untuk menampilkan isi dari variabel,
nama="Dede Irwanto"
echo "Halo, nama saya $nama"

Eksplorasi perintah echo dengan operator pengalihan (redirection).
echo
bisa digabungkan dengan operator pengalihan seperti: >
dan/atau >>
untuk menuliskan teks pada sebuah file. Misalkan kita ingin menuliskan Halo dunia!
pada file halo.txt
,
echo "Halo dunia!" > halo.txt

📝 Sebagai catatan: Gunakan operator >
dengan hati-hati karena akan menimpa seluruh isi file.
Perbedaan operator >
dengan >>
Operator >
akan menimpa semua isi file dengan teks baru. Misalnya pada file halo.txt
tadi.
Isi file sebelumnya,

Tulis teks baru dengan operator >
,
echo "Halo dunia 2" > halo.txt

Terlihat teks sebelumnya sudah ditimpa teks yang baru. Lantas bagaimana jika kita ingin menambahkan teks baru tanpa menimpa teks sebelumnya?
Untuk kasus ini, kita bisa menggunakan operator >>
.
echo "Halo dunia 3" >> halo.txt

Teks ditambahkan pada baris baru tanpa menghapus isi file sebelumnya.
2. cat (concatenate)
Perintah ini digunakan untuk menampilkan isi file secara keseluruhan. Karena menampilkan seluruh isi file sekaligus, perintah ini kurang cocok untuk teks panjang. Apalagi dengan ukuran monitor yang kecil. Selain itu, tidak ada juga fitur scroll
sehingga isi kalimat bagian atas akan terpotong.
Misalnya, kita akan menampilkan isi file CREDITS ini,
cat CREDITS

Masalah:
Isi file pada bagian atas terpotong dan kita tidak bisa melakukan scroll up
.
Menampilkan isi file yang lebih interaktif
Untuk mengatasi permasalahan di atas, kita bisa mengkombinasikan perintah cat
dengan less
atau more
menggunakan pipeline (|
).
cat CREDITS | more

atau,
cat CREDITS | less

Secara umum, kedua perintah di atas memiliki fungsi yang sama, yaitu menampilkan teks dengan lebih interaktif — bisa melakukan navigasi, pencarian, dan sebagainya — namun terdapat beberapa perbedaan fitur antara keduanya.
Fitur | more | less |
---|---|---|
Navigasi | Hanya ke depan (forward) | Bisa ke depan dan belakang (forward & backward) |
Search (pencarian) | Hanya ke depan (/ ) | Bisa ke depan (/ ) dan ke belakang (? ) |
Jump (lompat) | Tidak bisa | Lompat ke awal file (g ), lompat ke akhir file (G ) |
Ulangi pencarian | Hanya bisa ke depan (n ) | Bisa ke depan (n ) dan ke belakang (N ) |
Keluar | q | q |
3. head
Perintah ini digunakan untuk menampilkan beberapa baris awal teks pada sebuah file. Misalnya kita ingin menampilkan 20 baris awal pada file CREDITS
,
head -n 20 CREDITS
Output:

4. tail
Perintah ini digunakan untuk menampilkan beberapa baris akhir teks pada sebuah file. Misalnya kita ingin menampilkan 30 baris akhir dari file CREDITS
,
tail -n 30 CREDITS
Output:

Selain itu, perintah ini juga sering digunakan untuk mamantau log error pada sebuah aplikasi. Misalnya jika kita ingin melihat log error pada nginx
,
tail -f /var/log/nginx/error.log
Secara otomatis perintah di atas akan menampilkan log error secara real time.
5. grep
Perintah ini sering dikombinasikan dengan pipeline (|
) dan perintah lainnya seperti cat
, tail
, dsb. untuk memfilter kata kunci tertentu.
Sebagai contoh, kita ingin memfilter teks dengan kata kunci intel
pada file CREDITS
,
cat CREDITS | grep intel
Output:

6. file
Perintah ini digunakan untuk mendeteksi tipe/jenis dari sebuah file. Misalkan pada file CREDITS
, walaupun file ini tidak memiliki ekstensi seperti: .txt
, .jpg
, .png
, dsb. kita tetap bisa mendeteksi tipe dari file ini.
file CREDITS
Output:

File CREDITS
tersebut bertipe text
dengan Encoding UTF-8
. Teks di dalamnya merupakan Unicode
, yang artinya mendukung karakter dari banyak bahasa, simbol atau karakter non-ASCII seperti emoji, dll. Perintah file
mendeteksi jenis file berdasarkan content bukan ekstensi. Sehingga, walaupun ekstensinya diubah atau dihapus, tidak akan mempengaruhi hasil dari pendeteksian jenis file tersebut.
7. tee
Perintah ini akan membaca input dari stdin
(standard input) lalu menampilkan outputnya ke layar dan menuliskannya ke sebuah file. Berbeda dengan operator pengalihan (redirection), tee
tidak akan menyembunyikan output pada layar sehingga kita tetap bisa melihatnya.
Perhatikan contoh berikut:
Misalkan kita ingin menampilkan isi dari direktori /home/dee
lalu menuliskannya ke sebuah file bernama home.txt
,
ls -l | tee home.txt
Output:

Cek isi file home.txt
,
cat home.txt

8. printf
Perintah ini memiliki fungsi yang sama dengan echo
yaitu untuk menampilkan teks pada layar. Namun printf
lebih fleksibel karena bisa menampilkan teks dengan format tertentu (mirip seperti C-style).
Misalkan kita ingin menampilkan teks dengan tab (\t
) dan new line (\n
),
printf "Nama lengkap \t: Dede Irwanto\nTanggal lahir \t: 30-05-1992\n"
Output:

9. find
Perintah ini digunakan untuk mencari letak suatu file berdasarkan nama atau ukuran.
Sintaks dasar pencarian berdasarkan nama file,
find lokasi_pencarian -name "nama_file"
Sintaks dasar pencarian berdasarkan ukuran file,
find lokasi_pencarian -size +/-ukuran_file
Misalkan kita akan mencari file bernama CREDITS
pada semua lokasi (.
),
find . -name "CREDITS"
Output:

Atau pencarian pada folder Documents
berdasarkan ukuran file lebih dari 100 kilobyte,
find Documents/ -size +100k
Output:

Atau untuk pencarian kurang dari 100 byte,
find Documents/ -size -100b
Output:

Selain itu, kita juga bisa menambahkan aksi tertentu seperti: -fprint
(menuliskan outputnya pada sebuah file) atau -delete
(menghapus file).
find Documents/ -size -100b -fprint file_found.txt

Atau dengan opsi -delete
,
find Documents/ -name "kawan*" -delete

10. whereis
Perintah ini digunakan untuk mencari lokasi dari sebuah file binary. Misalnya kita ingin mencari lokasi dari text editor vi
.
whereis vi
Output:

Dari output di atas, terlihat bahwa file binary vi
terletak di direktori /usr/bin
.
11. « EOF
Perintah ini sering dikombinasikan dengan cat
dan redirection untuk membuat file yang berisi teks multiline (langsung dari terminal atau shell skrip). Teknik ini dikenal dengan Here Document (heredoc).
Sebenarnya, kita bisa saja membuat teks multiline (pada sebuah file) dengan echo
atau printf
. Namun hal ini rasanya kurang praktis. Sebagai contoh:
Penulisan teks multiline dengan echo
,
echo "Ini baris pertama" > file.txt
echo "Ini baris kedua" >> file.txt
echo "Ini baris ketiga" >> file.txt
Output:

Atau dengan printf
,
printf "Ini baris pertaman\nIni baris kedua\nIni baris ketiga\n" > file1.txt
Output:

Jika hanya berisi 1-3 baris saja, tentu ini tidak jadi masalah, namun bagaimana jika jumlah baris lebih dari 10?
Pertimbangkan untuk menggunakan « EOF (heredoc)
Salah satu alternatif yang perlu dipertimbangkan ketika ingin menuliskan teks dengan jumlah baris yang cukup banyak (lebih dari 10) adalah menggunakan << EOF
(heredoc).
Teks multiline dengan << EOF
,
cat << EOF > file2.txt
Setelah menjalankan perintah di atas, kita tingal mengetikkan teks — dengan baris yang cukup banyak — kemudian mengetikkan EOF
untuk mengakhirinya.

Lihat isi dari file2.txt
,

Penutup
Rasanya pembahasan ini sudah cukup panjang (dan mungkin membosankan) sehingga tulisan lainnya — terkait manipulasi file — seperti: wildcard, permission, dan sebagainya akan dibahas pada bagian tersendiri.
Sekian, semoga bermanfaat.
CMIIW.