Pertanyaan Praktik terbaik baris perintah Linux dan tips?


Saya ingin membuka diskusi yang akan mengakumulasi praktik-praktik terbaik dan tips-tips dari Linux command line (CLI) Anda.

Saya telah mencari diskusi semacam itu untuk berbagi komentar di bawah tetapi belum menemukan satu, maka posting ini.

Saya harap kita semua bisa belajar dari ini.

Anda dipersilakan untuk membagikan tips Bash, grep, sed, AWK, / proc dan semua administrasi sistem Linux / Unix lainnya yang terkait, praktik terbaik pemrograman shell untuk kepentingan kita semua.


112
2018-03-02 21:23




Mengapa hanya Linux? Banyak tips yang mungkin berguna untuk hampir semua varian Unix. - mouviciel
Pertanyaan ini mungkin agak luas - ada cukup banyak praktik terbaik baris perintah Linux / Unix untuk mengisi seluruh buku ... - Jonik
Saya setuju bahwa tips unix yang dapat diterapkan ke linux juga sangat diterima, saya sudah menulis linux karena A. Ini yang kami kerjakan disini. B. karena mendapatkan paparan publik yang lebih luas kemudian unix dalam beberapa tahun terakhir. - Maxim Veksler
Saya pikir itu ide bagus untuk membuat daftar perintah yang paling berguna dan menarik yang digunakan orang.
Apakah ada yang relevan? refspecs.freestandards.org


Jawaban:


Menggunakan layar, multiplekser terminal gratis yang dikembangkan oleh Proyek GNU yang akan memungkinkan Anda memiliki beberapa terminal dalam satu.

Anda dapat memulai sesi dan terminal Anda akan disimpan bahkan ketika koneksi Anda hilang, sehingga Anda dapat melanjutkannya nanti atau dari rumah.


111
2018-03-02 22:52



Saklar yang paling umum yang saya gunakan adalah 'layar -D -R' untuk memisahkan dan melanjutkan sesi layar terakhir dan 'layar -x' untuk melihat sesi layar yang sama dari beberapa login. Juga, dapatkan diri Anda dari .screenrc bagus dotfiles.org/.screenrc - Nick Devereaux
Hal lain yang menyenangkan tentang layar adalah Anda dapat berbagi terminal dengan orang lain ketika Anda ingin berkolaborasi dalam sesuatu, menggunakan layar -x - gareth_bowles


SSH!
SSH adalah perintah dewa - saya pikir itu adalah perintah yang paling berharga untuk dipelajari. Pilihannya bisa sangat menakutkan, tetapi sepertinya saya terus-menerus belajar menggunakan opsi baris perintah baru untuk SSH yang saya tidak pernah berpikir akan diperlukan. Saya mungkin telah menggunakan semuanya pada saat ini.

Semakin banyak Anda menggunakannya, semakin banyak Anda mempelajarinya. Anda dapat menggunakannya untuk melakukan beberapa hal yang AMAZING.

Catatan: SEMUA hal ini dapat dilakukan dari jarak jauh tanpa penyetelan di server Anda kecuali menjalankan server ssh.

Pasang sistem file melalui internet 

cari net untuk SSHFS

Meneruskan perintah.

Protokol SSH SVN + adalah Subversion dari klien jarak jauh ke server dengan NO DEAMON yang berjalan di atasnya! Perintah SVN memulai server melalui shell ssh dan meneruskan info bolak-balik melalui pipa yang ada. Program rsync melakukan hal yang sama, berjalan melawan server tanpa deynon rsync dengan memulai sendiri melalui SSH. Sangat mudah untuk menulis file bash Anda sendiri untuk melakukan trik serupa.

Rantai untuk melewati firewall 

Saya menggunakan ini sepanjang waktu untuk melompat melalui server linux saya di rumah ke mac saya.

Meneruskan port:
Tampaknya hanya cukup bermanfaat sampai Anda menyadari bahwa Anda dapat memantul melalui firewall rumah Anda dan mengkonfigurasi router Anda di rumah dari pekerjaan seolah-olah Anda melakukannya dari dalam jaringan rumah Anda).

Meneruskan permintaan X: 

Ini adalah satu lagi yang luar biasa. Dengan atau tanpa X server yang berjalan pada sistem remote Anda, Anda dapat menjalankan program x-windows dan jendela akan muncul di layar lokal Anda. Cukup gunakan tombol -X, itu saja!

Karena Anda tidak perlu memiliki server X yang berjalan di server jarak jauh, dampak CPU pada server Anda minimal, Anda dapat memiliki server TINY Linux yang menyajikan aplikasi besar ke PC game kuat Anda yang menjalankan Windows dan cygwin / X.

Tentu saja VI dan EMACS bekerja di SSH, tetapi ketika saya sedang berlari di rumah, kadang saya ingin lebih. Saya menggunakan ssh -X untuk memulai salinan Eclipse! Jika server Anda lebih kuat daripada laptop Anda, Anda punya GUI yang duduk di sana di laptop Anda, tetapi kompilasi dilakukan di server Anda, jadi jangan khawatir tentang beban sistem.

Jalankan dalam file batch 

(artinya jalankan file batch lokal yang "melakukan hal-hal" di sistem lain):

Dua hal bergabung untuk membuat yang satu ini keren. Salah satunya adalah Anda dapat menghapus permintaan kata sandi dengan menggunakan kunci enkripsi (yang lebih aman). Yang kedua adalah Anda dapat menentukan perintah pada SSH CLI. Saya telah menggunakan ini dengan beberapa cara yang menarik - Seperti ketika kompilasi gagal di server jauh, saya akan memilikinya SSH ke komputer saya dan memutar file suara).

Ingat Anda dapat mengarahkan output dari perintah remote dan menggunakannya dalam file batch lokal Anda, sehingga Anda juga bisa secara lokal mengikuti kompilasi yang berjalan di server Anda.

Dibangun untuk Mac

Baik server dan klien dibangun ke dalam mac dan linux. Dalam kasus Mac dan Ubuntu, memungkinkan server sesederhana menemukan kotak centang yang tepat.

Pada PC menginstal cygwin atau cygwin / X (cygwin / X akan memungkinkan Anda untuk meneruskan output x-window dari mesin Linux Anda ke PC Windows Anda - menginstal X server)

File Tips / konfigurasi penting

Jangan pernah menggunakan port 22 pada firewall Anda. Anda akan mendapatkan banyak upaya retas, hanya saja tidak sepadan. Cukup firewall Anda meneruskan port yang berbeda ke server Anda.

Ada banyak opsi konfigurasi yang memungkinkan Anda menyederhanakan perintah ssh Anda secara signifikan. Berikut ini contoh saya di tempat kerja:

Host home
    hostname billshome.hopto.org
    Port=12345
    user=bill
    LocalForward=localhost:1025 mac:22

Ketika saya mengetik "ssh home" (tidak ada yang lain), ia bertindak seolah-olah saya mengetik:

ssh -p 12345 bill@billshome.hopto.org

dan kemudian meneruskan port lokal saya 1025 ke sistem saya "mac" di rumah. Alasannya adalah karena saya memiliki entri lain di file saya:

Host mac
    hostname localhost
    port=1025

sehingga setelah saya melakukan "ssh home" dan masih memiliki jendela terbuka, saya dapat mengetik "ssh mac" dan komputer yang sedang bekerja di sini akan benar-benar mencoba untuk terhubung ke port sendiri 1025 yang telah diteruskan ke "mac: 22 "oleh perintah lain, sehingga akan terhubung ke Mac saya di rumah melalui firewall.

Edit - skrip keren!

Saya menggali skrip lama yang saya sukai - harus kembali dan mempostingnya untuk siapa pun di sini yang mungkin tertarik. Skrip ini disebut "authMe"

#!/bin/bash
if [ ! -f ~/.ssh/id_dsa.pub ]
then
    echo 'id_dsa.pub does not exist, creating'
    ssh-keygen -tdsa
fi
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub

Jika Anda memiliki skrip ini di direktori home Anda dan ada host yang dapat Anda sambungkan ke (melalui ssh), maka Anda dapat mengetikkan "./authMe hostName".

Jika perlu itu akan membuat keypair publik / pribadi untuk Anda, maka ia akan ssh ke mesin lain dan menyalin kunci publik Anda di atas (perintah ssh akan meminta Anda untuk kata sandi ...)

Setelah ini, perintah SSH seharusnya tidak meminta kata sandi Anda lagi saat memasang ke sistem jarak jauh itu, ia akan menggunakan keypair publik / pribadi.

Jika komputer jarak jauh Anda tidak selalu aman, Anda harus mempertimbangkan pengaturan "kata sandi" saat diminta.

Anda mungkin juga ingin mengkonfigurasi server ssh pada ujung jauh untuk tidak membolehkan kata sandi teks (hanya kunci) untuk keamanan tambahan.


101



+1 posting sangat bagus dan kompak - Karsten
Sebuah catatan kecil di SSH melalui port 22: asalkan Anda memiliki kata sandi root yang baik dan pengguna Anda tidak memiliki password yang mengerikan, hanya menjalankan fail2ban (atau yang serupa) sudah cukup untuk mencegah upaya crack. Saya merasa sangat menjengkelkan untuk menjaga SSH di port lain. - David Wolever
Kadang-kadang bisa menjengkelkan, tetapi volume penghubung hanya menakutkan. Saya tahu bahwa mereka tidak seharusnya melewatinya, tetapi itu seperti jika Anda memiliki seseorang yang berjalan ke rumah Anda dan mengotak-atik kenop pintu Anda setiap menit - hanya mengerikan.
Ada versi bawaan dari perintah terakhir Anda di sebagian besar versi ssh saat ini, namanya ssh-copy-id, dan sesederhana itu ssh-copy-id user@someserver - JamesHannah
Cara lain untuk melakukan trik 'ssh mac' Anda adalah dengan menggunakan perintah ProxyCommand di file .ssh / config Anda. Host mac ProxyCommand ssh -q home "nc% h% p" Ini akan menjalankan netcat (nc) di rumah dan mengarahkan kembali koneksi ssh Anda langsung ke mac. Saya menemukan mereka lebih mudah untuk rantai (misalnya jika Anda perlu terhubung ke 'rumah' untuk mendapatkan 'benteng kerja' untuk 'bekerja server web'. - toppledwagon


Saya suka menggunakannya

cd -

untuk beralih ke direktori sebelumnya. Sangat berguna!


73



Saya tidak pernah tahu ini! Terima kasih! Pada catatan terkait, pushd dan popd melakukan hal serupa, dengan membangun tumpukan dir. Trik semacam ini membantu ketika Anda menavigasi di sekitar struktur dir dalam.
Ini adalah penerangan belaka. - Manuel Ferreria


Saya baru saja menemukan pv perintah (penampil pipa) yang seperti kucing tetapi dengan rincian transfer.

Jadi, bukannya

$ gzip -c access.log > access.log.gz

Kamu bisa memakai

$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=>      ] 15% ETA 0:00:59

Jadi alih-alih tidak tahu kapan operasi Anda akan selesai, sekarang Anda akan tahu!

Courtesy of Peteris Krumins 


69



$ gzip -c access.log> access.log.gz Mengapa tidak hanya: $ gzip access.log
Oh itu berhasil :) Saya hanya mengambil contoh dari situs web Peteris. - Nick Devereaux
Itu terlihat seperti tua tee(1). - Daniel C. Sobral
Utilitas yang sangat berguna, yang selalu saya lupakan :-( - Patrick


sudo !!

Jalankan kembali perintah sebelumnya sebagai root.

[Perintah teratas saat ini di situs http://www.commandlinefu.com, sebuah situs yang bertema sepanjang garis pertanyaan ini.]


53



Pengungkapan - Saya menjalankan commandlinefu.com - codeinthehole
Itu akan menyelamatkan orang ini 16 karakter: xkcd.com/149


tekan Ctrl-R dan mulai mengetik perintah (atau bagian apa pun darinya) - ia mencari sejarah perintah. Menekan Ctrl-R lagi akan melompat ke pertandingan berikutnya, masukkan mengeksekusi perintah yang sedang ditampilkan, dan panah kanan (setidaknya) akan membiarkan Anda mengeditnya terlebih dahulu.

$ (reverse-i-search)`svn': svn status

Saya telah menggunakan Linux untuk sesuatu seperti 7 tahun sebagai OS utama saya sebelum mempelajari ini, tetapi sekarang saya tahu itu, itu cukup berguna.


46



Terima kasih. Saya telah menggunakan pencarian terbalik, tetapi belum bisa mengetahui cara melompat ke pertandingan berikutnya. - Adam
Ctrl-S melompat ke pertandingan berikutnya. Anda mungkin harus melakukannya stty -ixon pertama untuk mematikan makna kontrol aliran XON / XOFF (ini juga membuat Ctrl-Q tersedia, secara default dipetakan agar sama dengan insert-insert Ctrl-V, tetapi Anda dapat mengubahnya ke yang lain). Lihat man stty dan man readline untuk informasi lebih lanjut. Itu stty perintah dapat ditambahkan ke Anda ~/.bashrc - Dennis Williamson


Baris perintahnya lucu. Saya pikir Anda hanya dapat belajar banyak dari Anda sendiri dan sisanya Anda belajar secara tidak sengaja memperhatikan orang lain menggunakan baris perintah.

Saya menggunakan shell selama bertahun-tahun dengan mengetikkan nama direktori dengan tangan. Suatu hari saya sedang menonton seorang teman mengotak-atik suatu sistem dan dia terus menekan tombol tab. Saya bertanya "mengapa Anda menekan tab?". Jawaban: ini mencoba untuk menyelesaikan direktori atau nama file. Siapa sangka - tab selesai! Ketik sedikit file atau direktori, tekan tab, dan itu akan mencoba untuk menyelesaikan apa yang Anda ketikkan (perilaku tergantung pada shell yang mana).

Suatu hari, kata teman sedang memperhatikan saya di baris perintah dan melihat saya mengetik sesuatu seperti:

coryking@cory ~/trunk/mozi $ pushd /etc
/etc ~/trunk/mozi
coryking@cory /etc $ popd
~/trunk/mozi
coryking@cory ~/trunk/mozi $

Siapa yang akan menebaknya !? Dia tidak pernah tahu popd / pushd. Kira kita bahkan ...


45



Bagi saya tab completion sepertinya sesuatu yang "jelas", sangat mendasar, tetapi saya tidak pernah tahu tentang popd / pushd. Lucu memang. :) - Jonik
Juga lihat jawaban ini untuk dapat menyelesaikan tab lebih banyak daripada perintah, file, dan direktori: stackoverflow.com/questions/603696//603919#603919 - Jonik
Itu sangat benar. Saya belajar tentang pencarian sejarah-belakang bash (ctrl-r) dengan mengamati seseorang. Saya kemudian menyadari bahwa itu adalah fitur readline dan bekerja sama dalam program lain yang menggabungkan readline (mysql, gdb, python -i, clisp dll). - sigjuice
Bagaimana Anda bisa menggunakan "shell" selama bertahun-tahun dan tidak tahu tentang penyelesaian tab? - prestomation
Ketika berhadapan dengan pushd / popd jangan lupa untuk menyebutkan perintah dirs. Ini menunjukkan apa yang ada di stack pushd / popd. - slm


Pelajari Vim.

Hal ini (bisa dibilang) editor terbaik, tetapi tentu saja editor terbaik yang tersedia di server Linux telanjang.


41



gvim juga merupakan file browser terbaik di windows;)
Ini juga sangat berguna sekali Anda tahu vim, Anda dapat menempatkan sebagian besar cangkang ke dalam mode vi, dan navigasi menjadi sangat mudah dan cepat - Patrick