Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 4
- 3121
- 503
- Darryl Ritchie
Melanjutkan seri kami tentang tips dan trik baris perintah bash yang berguna, dalam artikel hari ini, kami akan menjelajahi hanya grepping apa yang Anda butuhkan, dan mulai dengan primer on PWD
dan bagaimana menemukan jalan dari sebuah naskah dimulai dari.
Dalam tutorial ini Anda akan belajar:
- Tips, trik, dan metode baris perintah bash yang bermanfaat
- Cara berinteraksi dengan baris perintah bash secara canggih
- Cara mempertajam keterampilan bash Anda secara keseluruhan dan menjadi pengguna bash yang lebih mahir
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi Linux-independen |
Perangkat lunak | Baris perintah bash, sistem berbasis Linux |
Lainnya | Utilitas apa pun yang tidak termasuk dalam shell bash secara default dapat diinstal menggunakan sudo apt-get install-name utilitas (atau instalasi yum untuk sistem berbasis redhat) |
Konvensi | # - mengharuskan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$-mengharuskan Linux-Commands untuk dieksekusi sebagai pengguna biasa |
Contoh 1: Direktori Kerja Path? Atau tidak?
Kami mungkin terbiasa menelepon PWD
Di baris perintah untuk memberi tahu kami nama direktori kami saat ini:
$ pwd/home/roel/workspace
Tetapi jika kita ingin mendapatkan direktori dari mana skrip dimulai, menggunakan variabel ini dari skrip juga bekerja dengan cara yang sama?
$ cat test_pwd.SH #!/bin/bash my_path1 = "$ pwd" echo "$ my_path1" my_path2 = "$ (pwd)" echo "$ my_path2"
Menyalin Kami akan menggunakan dua cara untuk mengambil jalan: kami melihat (untuk yang pertama My_path1
penugasan) di PWD
(Level OS) secara otomatis menyajikan variabel, dan dalam kasus kedua (untuk yang kedua My_path2
tugas) kami mengeksekusi PWD
di subshell ($ (...)
) dan tetapkan ke My_path2
. Mari kita jalankan hal yang sama:
$ ./test_pwd.sh/home/roel/workspace/home/roel/workspace
Terlihat bagus, benar? Ya, mungkin, tetapi begitu kita berubah menjadi direktori yang berbeda, dan panggil skrip dengan menggunakannya nama jalur penuh atau relatif, PWD
variabel (atau PWD
perintah) di dalam skrip akan mengembalikan direktori tempat kami berada saat skrip dimulai. Mari kita verifikasi ini:
$ mkdir uji $ cd test $… /test_pwd.sh/home/roel/workspace/test/home/roel/workspace/test
Yang bisa kita lihat di sini adalah itu PWD
(atau $ Pwd
variabel) akan selalu mengembalikan jalur saat ini yang sebenarnya.
Ini mungkin menjadi masalah: kami mungkin ingin memulai subskrip, atau mengakses file, dari dalam direktori yang sama (atau subdirektori itu) seperti yang ada di mana skrip berada di dalam. Ini sering terjadi pada skrip bash yang lebih kompleks yang memanggil beberapa subskrip dan/atau data dan file konfigurasi.
Jadi apa cara yang seragam untuk mendapatkan jalur dari mana naskah dimulai?
Seseorang dapat mempertimbangkan untuk menggunakan dirname "\ $ 0"
memerintah:
$ Cat test2.SH #!/bin/bash echo "\ $ 0" Dirname "\ $ 0"
Menyalin Dirname akan menghasilkan - relatif - nama direktori dari opsi apa pun yang diteruskan ke sana, dan dalam hal ini \ $ 0
- variabel khusus yang diatur saat skrip mulai dengan nama skrip saat dimulai. Mari kita mengujinya:
$ ./test2.SH ./test2.SH . $ cd test $… /test2.sh… /test2.SH…
Lebih baik, saya kira, dan mungkin sedikit membantu (untuk mendapatkan ide terutama), tetapi masih belum menghasilkan kita dengan nama pathname yang sepenuhnya memenuhi syarat. Untuk ini, kita dapat menggunakan pembungkus subshell ganda Dirname
dalam kombinasi dengan jalur berkualitas penuh yang sebenarnya diperoleh dari a PWD
eksekusi:
$ CAT MAKE_IT_WORK.SH #!/bin/bash my_path = "$ (cd" $ (dirname "\ $ 0") "&& pwd)" echo "$ my_path"
Menyalin Mari kita lihat apakah itu berhasil:
$ ./buat itu bekerja.sh/home/roel/workspace
Sejauh ini bagus, tetapi apakah itu berhasil saat Anda menjalankannya dari subdirektori?
$ CD test && pwd/home/roel/workspace/test $…/make_it_work.sh/home/roel/workspace $/home/roel/workspace/make_it_work.sh/home/roel/workspace
Ya!
Pertama -tama kita berubah menjadi tes
dan verifikasi kami berada di tes
direktori, jika itu mengubah direktori (CD
) Perintah berhasil (seperti yang diperintahkan oleh &&
).
Dalam kedua kasus - apakah itu disebut secara relatif (… /
), atau dengan nama jalur yang sepenuhnya memenuhi syarat (/home/roel/workspace/
), hasilnya adalah kita melihat direktori dari mana skrip dimulai (/home/roel/workspace/
) dan bukan direktori kerja saat ini, atau PWD (/home/roel/workspace/test
).
Singkatnya, Anda dapat menggunakan My_path = "$ (cd" $ (dirname "\ $ 0") "&& pwd)"
Skrip One-Liner untuk mendapatkan nama direktori yang benar, memenuhi syarat, dari dalam skrip Anda. Setelah ini, menggunakan tambahan relatif akan bekerja dengan baik. Misalnya, Anda dapat menggunakan $ My_path/include/mysubscript.SH
dan bahkan $ My_path /... /one_dir_up_file.txt
dll.
Contoh 2: hanya grepping apa yang Anda butuhkan
Pernahkah Anda menggunakan grep
? Grep adalah utilitas baris perintah bash serbaguna yang memungkinkan Anda memilih teks dari file dengan mudah. Sebagian besar waktu digunakan sebagai berikut:
$ Cat Test Line 1 My Line Line 2 Line Your Line 3 Line kami $ Grep 'Line 2' Test Line 2 Line Anda
Kami memiliki file input dengan 3 baris, dan kami mencari tes tertentu (Baris 2
) dalam file itu. Tapi bagaimana jika Anda hanya menginginkan garis yang memiliki kelipatan garis
(Saya.e. baris
) disebutkan di dalamnya? Dan, bagaimana jika Anda hanya ingin memiliki kata sebelum itu termasuk baris
sedikit, tapi bukan yang sebenarnya baris x
keluaran?
Dalam hal ini, kita hanya dapat menggunakan apa yang kita butuhkan menggunakan -Hai
('Only') opsi untuk grep:
$ grep -o 'lines' test line $ grep -o '\ w \+ lines' uji kalimat Anda
Bingo! Kami pertama kali menyegarkan hanya untuk kata 'baris', yang ditemukan. Kami kemudian diawali dengan ruang, dan ekspresi reguler yang menyatakan di pseudo-text: temukan batas kata (\ w
), setidaknya sekali dan sebanyak yang berlaku (\+
) diikuti oleh ruang. Hasilnya adalah itu milikmu
(yang memiliki dua batas kata; awal dan akhir) disertakan. Baris 2
tidak termasuk. Sementara itu memiliki batas kata, tidak ada akhiran baris
untuk yang itu.
Jika Anda ingin mempelajari lebih lanjut tentang ekspresi reguler di Bash, silakan lihat Bash Regexps untuk pemula dengan contoh, canggih Bash Regex dengan contoh dan Anda mungkin juga menyukai ekspresi reguler Python semi-terkait dengan contoh.
Kesimpulan
Di artikel ini, kami menjelajahi PWD
dan melihat cara menggunakan PWD
dari dalam skrip dalam kombinasi dengan Dirname
Untuk mengambil jalur direktori yang sepenuhnya memenuhi syarat dari mana skrip dimulai, dengan cara yang akan selalu berhasil. Kami juga hanya melihat Grepping apa yang kami butuhkan menggunakan -Hai
opsi dan, dalam hal ini, ekspresi reguler untuk mencocokkan batas kata.
Tinggalkan kami komentar dengan tips dan trik baris perintah bash terbaik Anda!
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 1
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 2
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 3
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 4
- Contoh dan trik Contoh Tip Baris Bash Berguna - Bagian 5
Tutorial Linux Terkait:
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Menguasai loop skrip bash
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 1
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 3
- Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 2
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Loop bersarang dalam skrip bash
- Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
- Contoh dan trik Contoh Tip Baris Bash Berguna - Bagian 5
- Ubuntu 20.04 Panduan
- « Contoh dan trik Contoh Tips Baris Bash Berguna - Bagian 3
- Contoh dan trik Contoh Tip Baris Bash Berguna - Bagian 5 »