Cara menggabungkan unzip dan cat untuk bekerja sebagai satu di terminal


1

Saya bekerja untuk hosting sebagai teknologi tingkat depan dan seringkali kita perlu menginstal SSL untuk pelanggan. Saya menggunakan Mac sekarang, tetapi saya juga akrab dengan Linux.

Apa yang saya ingin lakukan adalah mengambil file zip, mengunduhnya ke mac saya dan kemudian menjalankan perintah untuk unzip dan cat sekaligus. Sehingga menghilangkan proses yang membosankan dari unzip file.zip dan kemudian menyalin setiap file, satu per satu untuk menjalankan cat.

Saya lumpuh ketika harus menulis naskah dan telah bermain-main dengan banyak perintah, tidak ada yang berhasil.


1
cathanya menampilkan konten file (atau dapat digunakan untuk menambahkannya ke yang lain). Bisakah Anda membuat daftar langkah-langkah yang diperlukan (yang Anda lakukan secara manual) secara lebih rinci, idealnya persis seperti yang dijalankan di Terminal?
nohillside

1
Ah, dan jangan tidak memposting pertanyaan yang sama di situs SE yang berbeda sekaligus. Jika Anda tidak mendapatkan jawaban (baik), pertanyaan selalu dapat dimigrasikan ke situs suite yang lebih baik. Dalam kasus Anda, meningkatkan pertanyaan mungkin lebih penting sebelum kami mempertimbangkan untuk memindahkannya.
nohillside

Biasanya saya ingin mencari file zip di folder Downloads. Selanjutnya ketik unzip filename.zip untuk melepaskan konten, biasanya dua file. Setelah itu saya ketik cat dan rekatkan setiap nama file untuk dapat memuat konten dari dua file sekaligus untuk menyalin ke server. Maaf tentang kiriman ganda. Pemikiran lebih banyak paparan mungkin membantu.
sdw215

Apa yang saya masih tidak mengerti: Mengapa hanya cat / tampilan file dan tidak menggunakan skrip shell untuk meletakkannya langsung ke server?
nohillside

@ patrix Saya tidak memiliki akses ssh ke root server untuk menginstalnya. Itulah satu-satunya kesalahan tetapi dengan skrip sejauh ini tidak akan butuh banyak untuk menyelesaikannya untuk mendapatkan akses ssh seperti yang Anda gambarkan.
sdw215

Jawaban:


1

Jadi saya sudah melakukan beberapa pengujian, dan tampaknya gzcat(dan acara zcat) pada OS X hanya berfungsi untuk file gzip, dan bukan file yang menggunakan kompresi zip standar. Yang sedang berkata, saya percaya ini adalah apa yang Anda cari:

"sub.domain.tld.ssl.zip" berisi 2 file:

  • "sub.domain.tld.crt" (sertifikat SSL)
  • "sub.domain.tld.key" (kunci pribadi RSA)

Untuk mencetak semua file STDOUT, Anda akan menggunakanunzip -p

Untuk " cat" sertifikat, Anda dapat menggunakan perintah berikut:

unzip -p sub.domain.tld.ssl.zip | sed -n '/CERT/,/CERT/p'

Untuk " cat" kunci pribadi, Anda bisa menggunakan perintah berikut:

unzip -p sub.domain.tld.ssl.zip | sed -n '/KEY/,/KEY/p'

Setelah itu, Anda dapat melakukan apa yang Anda inginkan, seperti membuat skrip atau fungsi kecil:

#!/bin/bash
unzip -p "$1" | sed -n '/CERT/,/CERT/p' > "/etc/ssl/Certs/${2}.crt"
unzip -p "$1" | sed -n '/KEY/,/KEY/p' > "/etc/ssl/Private/${2}.key"

Script di atas akan mengambil 2 argumen (yang idealnya harus dilampirkan dalam tanda kutip):

  1. Nama file dari file zip
  2. Konvensi penamaan file cert / key

Jika nama skripnya adalah sslinstazip.sh, Anda akan menjalankannya seperti ini:

./sslinstazip.sh "sub.domain.tld.ssl.zip" "sub.domain.tld"

Jelas ada banyak cara Anda dapat memodifikasi ini agar sesuai dengan kebutuhan pribadi Anda, tetapi dalam hal ini, unzipsebenarnya adalah teman Anda.


0

Saya benar-benar menemukan cara untuk melakukan ini dengan bantuan seorang teman di tempat kerja malam ini.

#!/bin/bash
#Script to run unzip and cat in one command

zipinfo -1 $1 > $1.txt;
unzip $1;
for i in $(cat $1.txt); do echo "File : $i >>" && cat $i; done

Menyimpannya di TextWrangler sebagai uzipcat.sh dan menjalankan chmod u + x

Untuk menjalankannya saya mengetik ./uzipcat.sh sslfilename.zip dan mengekstraknya plus mencetak isinya.

Terima kasih atas minat dan sarannya!


-2

Lewati unzip dan gunakan gzcatsecara langsung. Saya tidak yakin apa yang melibatkan "instal SSL", tetapi jika Anda bertanya pada pertanyaan dengan detail itu, tautkan dalam komentar di sini dan saya akan memeriksanya.

Selain itu, membuat skrip shell pendek dapat membantu Anda memilih persyaratan otomatisasi Anda jika Automator tidak cukup kuat untuk kebutuhan Anda.


gzcattidak sama pada sistem operasi berbasis Unix. zcatmungkin diperlukan sebagai gantinya. Namun, ada beberapa cara untuk melakukan ini. Seperti yang Anda katakan, cari tahu perintah yang Anda butuhkan untuk melakukan apa yang perlu Anda lakukan, dan kemudian voila, shell script. Anda juga bisa menggunakannya sebagai fungsi di .bash_profile Anda, karena mungkin tidak akan terlalu banyak perintah.
rubynorails

1
@rubynorails Info bagus - ini berfungsi dengan baik pada sebagian besar OS X jadi saya pikir ini mungkin tempat yang baik untuk OP untuk memulai jika mereka tidak baik dengan pipa dan pengalihan.
bmike

Lihat jawaban saya. Tampaknya kami berdua salah!
rubynorails
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.