GNU/Linux >> Belajar Linux >  >> Linux

$_ Vs !$. Argumen Terakhir Dari Perintah Sebelumnya Dan Pengalihan Output?

Pertanyaannya adalah tentang variabel khusus. Dokumentasi mengatakan:

!!:$

menunjuk argumen terakhir dari perintah sebelumnya . Ini mungkin
disingkat menjadi !$ .

($_ , sebuah garis bawah.) Saat memulai shell, setel ke nama path absolut yang digunakan untuk menjalankan skrip shell atau shell yang dieksekusi seperti yang diteruskan di lingkungan
atau daftar argumen. Selanjutnya, diperluas ke argumen terakhir ke perintah sebelumnya setelah ekspansi. Juga disetel ke nama path lengkap yang digunakan untuk memanggil setiap perintah yang dijalankan dan ditempatkan di lingkungan
yang diekspor ke perintah itu.

Pasti ada perbedaan yang tidak bisa saya tangkap, karena:

$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt

$ echo "hello" > /tmp/a.txt
$ echo $_
hello

Apa bedanya?

Jawaban yang Diterima:

!$ adalah penanda kata dari perluasan histori, yang diperluas ke kata terakhir dari perintah sebelumnya di sejarah . TKI, kata terakhir dari entri sebelumnya dalam sejarah. Kata ini biasanya merupakan argumen terakhir untuk perintah, tetapi tidak dalam hal pengalihan. Dalam:

echo "hello" > /tmp/a.txt

seluruh perintah 'echo "hello" > /tmp/a.txt' muncul di riwayat, dan /tmp/a.txt adalah kata terakhir dari perintah itu.

_ adalah parameter Shell, itu diperluas ke argumen terakhir dari perintah sebelumnya. Di sini, pengalihan bukan bagian dari argumen yang diteruskan ke perintah, jadi hanya hello adalah argumen yang diteruskan ke echo . Itu sebabnya $_ diperluas menjadi hello .

_ bukan lagi salah satu parameter khusus standar shell. Ini berfungsi di bash , zsh , mksh dan dash hanya jika interaktif, ksh93 hanya ketika dua perintah berada pada baris yang terpisah:

$ echo 1 && echo $_
1
/usr/bin/ksh

$ echo 1
1
$ echo $_
1

Linux
  1. Cara menangkap sesi terminal dan output dengan perintah skrip Linux

  2. Lewati Output Perintah Sebelumnya Ke Berikutnya Sebagai Argumen?

  3. Pengalihan Io Dan Perintah Kepala?

  1. 3 trik untuk mendapatkan beberapa perintah output di baris yang sama

  2. CentOS / RHEL :Cara mendapatkan tanggal dan waktu perintah yang dieksekusi di output perintah history

  3. Bagaimana cara menambahkan output ke file?

  1. Bekerja dengan Input Output dan Error Redirection di Linux

  2. Output Dari Perintah "terakhir"?

  3. Warna berbeda untuk perintah dan output