Escaper Argumen Shell

Kutip string apa pun dengan aman untuk POSIX sh/Bash/Zsh (tanda kutip tunggal), ANSI-C Bash $'…', atau PowerShell – atau urai kata shell yang dikutip kembali ke nilainya.

19 karakter · 19 byte (UTF-8)

0 karakter · 0 byte (UTF-8)

Berjalan sepenuhnya di browser Anda. Data Anda tidak pernah diunggah.

Apa itu Shell Escape?

Mengubah teks apa pun menjadi satu argumen shell yang diteruskan shell tanpa perubahan – termasuk tanda kutip, $, backtick, spasi, dan newline. Alat ini mendukung shell POSIX, quoting ANSI-C Bash/Zsh, dan PowerShell, serta bisa mengurai kata yang dikutip kembali.

Cara menggunakan Shell Escape

  1. Pilih Escape atau Unescape.
  2. Pilih Jenis shell: POSIX sh/Bash/Zsh, ANSI-C Bash/Zsh, atau PowerShell.
  3. Opsional, aktifkan Setiap baris adalah argumen terpisah atau Selalu tambahkan tanda kutip.
  4. Tempel nilai ke Masukan lalu salin argumen yang sudah dikutip dari Keluaran.

Contoh

Masukan
It's $HOME
Keluaran
'It'\''s $HOME'

Kapan menggunakan Shell Escape

Gunakan saat membuat perintah yang berisi nama file, kata sandi, atau input pengguna – di skrip, perintah SSH, konfigurasi CI, atau dokumentasi. cmd.exe Windows tidak didukung karena tidak memiliki quoting yang aman untuk semua input. Di dalam program, utamakan meneruskan array argumen (mis. execFile, subprocess.run([...])) daripada menyusun string shell.

Cara kerja Shell Escape

Mode POSIX membungkus teks dengan tanda kutip tunggal, di mana tidak ada karakter yang istimewa, dan menulis setiap ' sebagai '\'' (tutup kutip, kutip ter-escape, buka lagi) – pendekatan yang sama dengan shlex.quote di Python. Kata sederhana yang hanya berisi A–Z a–z 0–9 _ @ % + = : , . / - dibiarkan tanpa kutip kecuali Anda meminta kutip. Mode ANSI-C menghasilkan $'…' dengan escape \n, \t, \', dan \xHH, yang membuat karakter kontrol terlihat. Mode PowerShell memakai tanda kutip tunggal dan menggandakan setiap tanda kutip tunggal (termasuk ‘ ’ tipografis). Mode unescape mengurai kata seperti shell (tanda kutip, backslash, $'…') tanpa melakukan ekspansi apa pun.

Kasus Penggunaan Umum

  • Meneruskan nama file berisi spasi atau tanda kutip ke sebuah perintah
  • Menyematkan payload JSON di perintah curl
  • Mengutip argumen untuk ssh host "command"
  • Memahami apa yang sebenarnya diteruskan oleh baris perintah dengan kutip yang rumit

Catatan Keamanan

Quoting yang benar mencegah command injection hanya jika nilai yang dikutip dipakai sebagai satu argumen; quoting tidak membuat perintah yang tidak aman menjadi aman.

Pertanyaan Umum

Mengapa tidak memakai tanda kutip ganda saja?

Di dalam tanda kutip ganda, shell tetap mengekspansi $VAR, backtick, dan \. Tanda kutip tunggal menonaktifkan semua ekspansi, itulah sebabnya aman untuk teks apa pun.

Apa arti '\''?

Ini mengakhiri bagian bertanda kutip tunggal, menambahkan tanda kutip literal yang di-escape, lalu memulai bagian bertanda kutip tunggal baru. Shell menggabungkan potongan-potongan itu menjadi satu argumen.

Apakah cmd.exe Windows didukung?

Tidak. cmd.exe tidak punya quoting yang andal melindungi karakter seperti % dan ^ di semua konteks. Gunakan mode PowerShell atau hindari shell.

Langkah berikutnya yang disarankan

Jelajahi kategori lainnya