GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada file executable tiruan standar yang tidak melakukan apa pun di Linux?

Ada utilitas standar true dan false . Yang pertama tidak melakukan apa-apa selain mengembalikan status keluar 0 untuk eksekusi yang berhasil, yang kedua tidak melakukan apa-apa selain mengembalikan nilai bukan nol yang menunjukkan hasil yang tidak berhasil. Anda mungkin menginginkan yang pertama.

Meskipun beberapa sistem yang benar-benar ingin Anda memasukkan beberapa teks (melakukan pesan, dll.) akan memeriksa apakah file yang "diedit" benar-benar dimodifikasi, dan hanya menjalankan true tidak akan terbang dalam kasus itu. Sebagai gantinya, touch mungkin berhasil; itu memperbarui stempel waktu dari file apa pun yang didapatnya sebagai argumen.

Namun, jika editor mendapatkan argumen lain selain nama file touch akan membuatnya sebagai file. Banyak editor mendukung argumen seperti +NNN untuk memberi tahu baris awal untuk memasukkan kursor, sehingga editor dapat disebut sebagai $EDITOR +123 filename.txt . (Misalnya less melakukan ini, git sepertinya tidak.)

Perhatikan bahwa Anda ingin menggunakan true , bukan mis. /bin/true . Pertama, jika ada shell yang terlibat, menentukan perintah tanpa jalur akan memungkinkan shell menggunakan implementasi bawaan, dan jika shell tidak digunakan, file biner akan ditemukan di PATH omong-omong. Kedua, tidak semua sistem memiliki /bin/true; misalnya di macOS, ini adalah /usr/bin/true . (Terima kasih @jpaugh.)

(* atau seperti yang dikatakan halaman manual GNU, false "[tidak] apa-apa, tidak berhasil". Terima kasih @8bittree.)


Di shell, Anda dapat menggunakan : bawaan . Ini bukan file yang dapat dieksekusi, tetapi dalam skrip shell atau apa pun yang dieksekusi dari skrip shell akan berfungsi:

$ help :
:: :
    Null command.
     
    No effect; the command does nothing.
     
    Exit Status:
    Always succeeds.

Ini mungkin paling dikenal untuk digunakan dalam pernyataan while (while :; do break; done ), tetapi tidak terbatas pada penggunaan tersebut. Jika Anda perlu melakukan ini berkali-kali, jauh lebih cepat jika tidak memulai proses terpisah:

$ time for i in $(seq 1000); do :; done

real    0m0,007s
user    0m0,002s
sys     0m0,004s
$ time for i in $(seq 1000); do /bin/true; done

real    0m0,686s
user    0m0,462s
sys     0m0,217s

Saran @ilkkachu untuk menggunakan true perintah mungkin adalah jawaban terbaik, tetapi Anda juga bisa menggunakan perintah

sleep 0

Linux
  1. Linux – Bagaimana Cara Memeriksa Informasi Struktur Direktori File Unix/linux?

  2. Linux – Sinkronisasi File Waktu Nyata?

  3. Apakah ada kode status keluar standar di Linux?

  1. Linux mengurutkan file shell menurut kolom kedua?

  2. Apakah ada log yang merekam shutdown di Linux?

  3. Mengapa Ctrl + V tidak menempel di Bash (Linux shell)?

  1. Temukan file lalu cd ke direktori itu di Linux

  2. (C/C++) Bagaimana cara menghasilkan file yang dapat dieksekusi yang dapat berjalan di Windows dan Linux?

  3. Linux Bash Shell - Kisaran spesifik globbing file?