Terminal Friday: Bash [Perluasan Kunci]

Pertama-tama saya ingin meminta maaf, karena hari jumat lalu saya tidak bisa menulis postingan maka hari ini saya akan menambahkan tambahan untuk mengganti hari yang hilang. 🙂

Ekspansi Brace

Dalam ekspansi kunci Spanyol menurut saya menjadi fungsi yang terinspirasi oleh kulit C, ini menghasilkan kombinasi antara karakter yang dimasukkan di dalam kurung kurawal, urutan yang digunakan adalah dari kiri ke kanan. Ini tidak rumit sama sekali tetapi ini adalah opsi yang akan sangat berguna dalam tur GNU / Linux kami.

Contoh:

$ echo a {1,2,3} a1 a2 a3

Saat digunakan dengan koma (,) menghasilkan kombinasi antara nilai a dan nilai di dalam kurung kurawal. Jika tidak ada nilai di luar kunci, itu hanya akan ditampilkan sekali setiap nilai yang berisi kunci tersebut.

$ echo {a, b, c} abc

Penggunaannya tidak rumit sama sekali, ada contoh lain yang lebih umum seperti membuat banyak direktori dalam satu folder

$ mkdir ~ / Pekerjaan / {satu, dua, tiga, empat, lima}

Ini membuat lima folder di dalam folder pekerjaan, seperti memasukkan satu perintah dalam satu waktu. Membuat 5 direktori.

Ada ekspansi dua poin .. ini membuat serangkaian angka atau karakter yang pergi dari nilai awal ke nilai akhir, jangan gunakan angka berhuruf.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} #Saya rasa saya tidak akan pernah terbiasa dengan ini warna biru dalam huruf

Kita dapat menghemat waktu dengan membuat siklus untuk

# Daripada menulis $ for ((i = 1; i <= 5; i ++)); lakukan echo "Nomor saya $ i"; selesai Nomor saya 1 Nomor saya 2 Nomor saya 3 Nomor saya 4 Nomor saya 5 #Simpan kode menggunakan ekspansi brace. $ untuk saya di {1..5}; do echo "Nomor saya $ i; selesai Nomor saya 1 Nomor saya 2 Nomor saya 3 Nomor saya 4 Nomor saya 5 #Tentu saja valid untuk digunakan meskipun keluarannya berbeda. $ echo" Nomor saya "{1..5} Nomor saya 1 Nomor saya 2 Nomor saya 3 Nomor saya 4 Nomor saya 5

Nah menurut saya konsepnya sudah jelas, haha ​​sekarang saya hanya akan berkomentar bahwa itu bisa digabung dan bersarang Apa yang saya maksud dengan ini?
Dengan combinable itu kita bisa menggabungkan satu atau lebih kunci

$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3

Dengan bersarang, seperti yang dibayangkan banyak orang, Anda dapat menggunakan kunci ekspansi dalam kunci ekspansi

$ echo {a, c {1..3}, d} a c1 c2 c3 d

Dan akhirnya dari Bash NOTHING adalah mungkin untuk meningkatkan nilai.

$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20

Ini semua untuk hari ini, jadi terima kasih telah membaca saya orang 🙂

ekstra

Cara membuat tempat sampah lokal

Saat saya mengatakan a bin local Maksud saya direktori di mana kita memiliki skrip kita sendiri dan dimungkinkan untuk mengeksekusinya sebagai perintah sederhana ...

Untuk mencapai ini relatif mudah, hal pertama yang perlu Anda lakukan adalah membuat direktori tempat kami akan menyimpan skrip.

mkdir ~ / .bin # Dalam contoh ini, ini akan disembunyikan

Sekarang kita memiliki folder untuk menyimpan skrip tetapi tidak akan berfungsi sampai kita menambahkan jalur .bin baru ke $ PATH
Untuk ini file tersebut diedit bash_profile, dan garis itu ditambahkan.

ekspor PATH = $ PATH: ~ / .bin

Dan voila, itu sudah cukup untuk membuat local bin tentunya akan meminta izin root jika perlu misalnya kita menulis quick script.

#! / bin / bash echo "Hai $ 1, apa kabar?"

Simpan dengan nama halo
Skrip diberi izin eksekusi dan itu hanya akan cukup untuk memanggilnya dari terminal

$ hello wada #Ini akan menampilkan pesan Hello wada, apa kabar?

Jadi dengan trik cepat ini Anda dapat menjalankan skrip Anda lebih cepat

Sekian untuk hari ini orang yang sehat 🙂
PS Maaf buat kesalahan, kalau ada mataku sudah terpejam hahaha 😀


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   pemburu dijo

    Saya sudah lama terlibat dalam masalah bash dan saya belum memahami ekspansi brace ini, terima kasih.

    Di trik jalur, Fedora secara default melakukan sesuatu seperti ini tetapi di "~ / .local / bin", lihat cuplikan dari bash_profile yang saya bawa ke Jessie.

    JALAN = $ JALUR: $ BERANDA / .local / bin: $ BERANDA / bin
    ekspor PATH

    1.    Ricardo dijo

      Saya memiliki beberapa kekhawatiran:
      1. Bagaimana saya membuatnya memberi saya dua interval dengan ekspansi demi poin; usia {1..24,55..90} dan bahwa saya menambah usia dari 1 menjadi 24 dan berlanjut dengan 55 menjadi XNUMX. seperti yang saya lakukan itu tidak berhasil. Mengapa?

      2. Jika saya ingin nilai pertama menjadi nol dan lanjutkan dengan penomoran:
      dapatkan: http://manga.favorito /gambar http://manga.favorito/imagen1
      Saya mencoba cara berikut tetapi wget tidak mendapatkan: http://manga.favorito/imagen{, 1..42} Menurut saya, saya harus meninggalkan nama depan tanpa nomor dan melanjutkan penomoran dari 1 hingga 42 tetapi ternyata tidak seperti itu. Mengapa?

    2.    Wada dijo

      Anda benar beberapa distro memiliki atau memiliki .bin tetapi itu agar semua orang dapat memahami dan melihat bahwa itu mungkin untuk dilakukan di distro manapun: D, Terima kasih sudah mampir.

  2.   demo dijo

    Sangat bagus, sangat bagus untuk kontribusi pengetahuan ini bagi dunia linux dan keamanannya, pada hari Jumat saya berharap saya bisa membaca bagaimana memformat flashdisk di terminal dan membakar gambar DVD / CD iso dari sistem gratis apa pun di terminal.

    1.    Wada dijo

      Terima kasih atas kata-katamu saudara 😀 Saya berjanji bahwa Jumat depan saya akan melakukan posting itu. Dan saya harus salah satu tentang menyesuaikan Vim hahaha tetapi saya tidak ingin mereka berpikir itu hanya akan mencakup Vim.

  3.   edoardo_or dijo

    Artikel terminal yang luar biasa, yang terbaik yang pernah saya baca dalam waktu yang lama, menghitung beberapa blog yang menerbitkan tutorial gaya ini. Terima kasih banyak!!

    1.    Wada dijo

      Terima kasih banyak 😀 Saya akan berusaha untuk mengikutinya.

  4.   juanli dijo

    Tip Luar Biasa dari Tempat Sampah Lokal!
    Salam!

    1.    Wada dijo

      Luar biasa, mantap bermanfaat buat kamu, terima kasih banyak sudah lewat kakak 😀

  5.   giskard dijo

    Baik sekali! Tidak tahu tentang ini. Terima kasih 🙂

    1.    Wada dijo

      Sama-sama saudara terima kasih telah meluangkan waktu untuk membacanya 😀

  6.   Ricardo dijo

    Saya memiliki beberapa kekhawatiran:
    1. Bagaimana saya membuatnya memberi saya dua interval dengan ekspansi demi poin; usia {1..24,55..90} dan bahwa saya menambah usia dari 1 menjadi 24 dan berlanjut dengan 55 menjadi XNUMX. seperti yang saya lakukan itu tidak berhasil. Mengapa?

    2. Jika saya ingin nilai pertama menjadi nol dan lanjutkan dengan penomoran:
    dapatkan: http://manga.favorito/imagen http://manga.favorito/imagen1

    Saya mencoba cara berikut tetapi wget tidak mendapatkan: http://manga.favorito/imagen{, 1..42} Menurut saya, saya harus meninggalkan nama depan tanpa nomor dan melanjutkan penomoran dari 1 hingga 42 tetapi ternyata tidak seperti itu. Mengapa?
    * Maaf tapi saya menempatkan posting pertama sebagai jawaban dan ternyata salah di beberapa bagian

    1.    Wada dijo

      1.- Logika Anda salah Anda harus bersarang itu hahaha coba $ echo {{1..24},{55..90}}

      2.- Sama seperti yang sebelumnya ... $ echo "URL"{,{1..42}}

      Jangan khawatir saudara, kami di sini untuk membantu kami 🙂

  7.   jvk85321.dll dijo

    Untuk mengganti for dengan echo akan terlihat seperti ini

    echo "Nomor saya" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'

    tetapi saya lebih suka printf

    printf "I, I% d \ n" {1..5}

    dan menggunakan konsep ekspansi kunci yang sama

    atte
    jvk85321.dll

    1.    jvk85321.dll dijo

      Bagaimana Anda meletakkan kotak terminal ????

      atte
      jvk85321.dll

  8.   jvk85321.dll dijo

    Menguji apakah tag kode berfungsi
    hehe

    Untuk mengganti for dengan echo akan terlihat seperti ini

    echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’

    pero prefiero printf

    printf “Mi numero %d\n” {1..5}

    dan menggunakan konsep ekspansi kunci yang sama

    atte
    jvk85321.dll

    1.    jvk85321.dll dijo

      Saya tertinggal dengan beberapa bug tetapi berhasil

      Saya hidup maluco

      Maaf sudah mengganggu

      atte
      jvk85321.dll

      1.    Wada dijo

        Hahaha kamu menjawab sendiri tapi kalau di antara label tidak ada ruang ...

        Dan untuk penggantiannya tidak perlu banyak pipa hahahaha cukup dengan:
        echo -e "Mi numero "{1..5}"\n\b"

        Sejujurnya printf adalah cara terbaik untuk mencetak teks dalam skrip, ini lebih portabel tetapi secara tradisional menggunakan echo.

      2.    Wada dijo

        Saya mengambil ruang! hahahahaha

        mari kita lihat sekarang 😀

      3.    Wada dijo

        Persetan itu "kurang dari" kode "lebih besar dari" "kurang dari" / kode "lebih besar dari" hahahaha

      4.    jvk85321.dll dijo

        Masalah yang echo -e tidak standar, jadi tidak bekerja pada semua sistem.

        Juga terlihat berantakan
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5

        jvk@jvktos:~$
        Dan dengan ini
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Menurut saya yang kedua lebih bagus hasilnya, hahaha

        atte
        jvk85321.dll

      5.    jvk85321.dll dijo

        Label-label ini payah, hehehe, mari kita lihat apakah mereka berhasil sekarang
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Dan dengan ini
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Menurut saya yang kedua lebih bagus hasilnya, hahaha
        atte
        jvk85321.dll

      6.    jvk85321.dll dijo

        Ngomong-ngomong, biarkan spasi di antara garis, itu sebabnya saya benci html, hahahaha

  9.   Joaquin dijo

    Luar biasa! Aku tepuk kakimu haha

    Saya tidak tahu bahwa kunci dapat disarangkan, karena saya juga tidak pernah mencoba menggunakannya, ini benar-benar menghemat banyak kode dan juga lebih mudah dibaca dengan cara ini. Terima kasih!

    1.    Wada dijo

      Terima kasih kepada saudara yang telah lewat, saya senang itu berguna

      1.    Joaquin dijo

        Sama-sama, untuk itulah kami di sini, untuk berbagi dan menyumbangkan ide. Saya tidak tahu bagaimana memprogram, saya hanya melakukan beberapa hal di Bash dan saya menerbitkan beberapa skrip yang saya lakukan dalam dua posting. Saya pikir mengetahui ini dapat membuat kode lebih mudah dipahami.