सवाल लिनक्स कमांड लाइन सर्वोत्तम प्रथाओं और सुझावों?


मैं एक ऐसी चर्चा खोलना चाहूंगा जो आपकी लिनक्स कमांड लाइन (सीएलआई) सर्वोत्तम प्रथाओं और युक्तियों को जमा करेगी।

मैंने नीचे दी गई टिप्पणी साझा करने के लिए ऐसी चर्चा की खोज की है लेकिन एक पोस्ट नहीं मिला है, इसलिए यह पोस्ट।

मुझे आशा है कि हम सभी इससे सीख सकते हैं।

आप सभी के लाभ के लिए अपनी बैश टिप्स, grep, sed, AWK, / proc और अन्य सभी संबंधित लिनक्स / यूनिक्स सिस्टम प्रशासन, शैल प्रोग्रामिंग सर्वोत्तम प्रथाओं को साझा करने के लिए आपका स्वागत है।


112
2018-03-02 21:23


मूल


केवल लिनक्स क्यों? यूनिक्स के लगभग सभी स्वादों पर कई युक्तियां उपयोगी हो सकती हैं। - mouviciel
यह प्रश्न एक व्यापक रूप से व्यापक हो सकता है - लिनक्स / यूनिक्स कमांड लाइन के लिए पूरी किताबें भरने के लिए सर्वोत्तम प्रथाओं के लिए पर्याप्त है ... - Jonik
मैं मानता हूं कि यूनिक्स युक्तियाँ जिन्हें लिनक्स पर भी लागू किया जा सकता है, भी बहुत स्वागत है, मैंने लिनक्स लिखा है क्योंकि ए। यही वह है जो हम यहां काम करते हैं। बी। क्योंकि हाल के वर्षों में यह एक व्यापक सार्वजनिक एक्सपोजर हासिल कर रहा है। - Maxim Veksler
मुझे लगता है कि लोगों द्वारा उपयोग किए जाने वाले सबसे उपयोगी और रोचक आदेशों की एक सूची को कम करना एक अच्छा विचार है।
क्या इनमें से कोई प्रासंगिक है? refspecs.freestandards.org


जवाब:


उपयोग स्क्रीन, जीएनयू प्रोजेक्ट द्वारा विकसित एक निःशुल्क टर्मिनल मल्टीप्लेक्सर जो आपको एक में कई टर्मिनलों की अनुमति देगा।

आप एक सत्र शुरू कर सकते हैं और कनेक्शन समाप्त होने पर भी आपके टर्मिनलों को सहेजा जाएगा, ताकि आप बाद में या घर से फिर से शुरू कर सकें।


111
2018-03-02 22:52



मेरे द्वारा उपयोग किए जाने वाले सबसे आम स्विच 'स्क्रीन-डी-आर' हैं और मेरे अंतिम स्क्रीन सत्र को फिर से शुरू करने और 'स्क्रीन-एक्स' को फिर से शुरू करने के लिए एकाधिक लॉग इन से एक ही स्क्रीन सत्र देखने के लिए। इसके अलावा, अपने आप को एक अच्छा .screenrc प्राप्त करें dotfiles.org/.screenrc - Nick Devereaux
स्क्रीन के बारे में एक और अच्छी बात यह है कि जब आप स्क्रीन-एक्स का उपयोग करके किसी चीज़ पर सहयोग करना चाहते हैं तो आप टर्मिनल को अन्य लोगों के साथ साझा कर सकते हैं - gareth_bowles


SSH!
एसएसएच ईश्वर कमांड है - मुझे लगता है कि यह सीखने के लिए सबसे मूल्यवान है। विकल्प बहुत चुनौतीपूर्ण हो सकते हैं, लेकिन ऐसा लगता है कि मैं लगातार एसएसएच के लिए नए कमांड लाइन विकल्पों का उपयोग करना सीख रहा हूं जिसे मैंने कभी सोचा नहीं होगा। मैंने इस बिंदु पर उन सभी का इस्तेमाल किया होगा।

जितना अधिक आप इसका इस्तेमाल करेंगे, उतना ही आप इसके बारे में जानेंगे। आप कुछ अजीब चीजें करने के लिए इसका इस्तेमाल कर सकते हैं।

नोट: एसएसएच सर्वर चलने के अलावा इन सभी चीजों को दूरस्थ रूप से आपके सर्वर पर कोई सेटअप नहीं किया जा सकता है।

इंटरनेट पर एक फाइल सिस्टम माउंट करें 

एसएसएचएफएस के लिए नेट खोजें

अग्रेषित आदेश

एसवीएन + एसएसएच प्रोटोकॉल रिमोट क्लाइंट से एक सर्वर पर सबवर्सन है जिसमें कोई डेमॉन चल रहा है! एसवीएन कमांड सर्वर को एसएसएच खोल के माध्यम से शुरू करता है और मौजूदा पाइप के माध्यम से जानकारी को आगे और आगे भेजता है। Rsync प्रोग्राम एक ही चीज करता है, एसएसएच के माध्यम से स्वयं को शुरू करके किसी भी rsync deamon वाले सर्वर के विरुद्ध चलता है। समान चाल करने के लिए अपनी खुद की बैश फ़ाइलों को लिखना आसान है।

फायरवॉल के माध्यम से पाने के लिए चेन 

मैं अपने मैक पर घर पर अपने लिनक्स सर्वर से कूदने के लिए हर समय इसका उपयोग करता हूं।

फॉरवर्ड बंदरगाह:
जब तक आपको एहसास न हो कि आप अपने घर फ़ायरवॉल के माध्यम से उछाल सकते हैं और घर पर अपने राउटर को काम से कॉन्फ़िगर कर सकते हैं, भले ही आप अपने घर के नेटवर्क से ऐसा कर रहे हों)।

फॉरवर्ड एक्स अनुरोध: 

यह एक और अद्भुत है। आपके रिमोट सिस्टम पर चल रहे एक्स सर्वर के साथ या उसके बिना, आप एक एक्स-विंडोज प्रोग्राम चला सकते हैं और विंडो आपकी स्थानीय स्क्रीन पर दिखाई देगी। बस स्विच-एक्स का उपयोग करें, बस इतना ही!

चूंकि आपके पास अपने रिमोट सर्वर पर एक्स सर्वर चलाना नहीं है, इसलिए आपके सर्वर पर सीपीयू प्रभाव कम है, आपके पास एक TINY लिनक्स सर्वर हो सकता है जो आपके शक्तिशाली गेम पीसी पर विंडोज और सिग्विन / एक्स चलाने वाले विशाल ऐप्स पेश करता है।

बेशक छठी और ईएमएसीएस एसएसएच पर काम करते हैं, लेकिन जब मैं घर पर दौड़ रहा हूं, कभी-कभी मुझे और चाहिए। मैं ग्रहण की एक प्रति शुरू करने के लिए एसएसएच-एक्स का उपयोग करता हूं! यदि आपका सर्वर आपके लैपटॉप से ​​अधिक शक्तिशाली है, तो आपको अपने लैपटॉप पर जीयूआई बैठे हैं, लेकिन आपके सर्वर पर संकलन किए जाते हैं, इसलिए सिस्टम लोड के बारे में चिंता न करें।

बैच फ़ाइलों में भागो 

(जिसका मतलब स्थानीय बैच फ़ाइल चलाता है जो अन्य सिस्टम पर "सामान करता है"):

यह एक शांत बनाने के लिए दो चीजें गठबंधन करती हैं। एक यह है कि आप (अधिक सुरक्षित) एन्क्रिप्शन कुंजी का उपयोग कर पासवर्ड संकेतों को खत्म कर सकते हैं। दूसरा यह है कि आप एसएसएच सीएलआई पर एक कमांड निर्दिष्ट कर सकते हैं। मैंने इसे कुछ दिलचस्प तरीकों से उपयोग किया है - जैसे रिमोट सर्वर पर एक संकलन विफल रहता है, तो मेरे पास यह मेरे कंप्यूटर में एसएसएच होगा और ध्वनि फ़ाइल चलाएगा)।

याद रखें कि आप रिमोट कमांड से आउटपुट को रीडायरेक्ट कर सकते हैं और इसे अपनी स्थानीय बैच फ़ाइल में इस्तेमाल कर सकते हैं, ताकि आप स्थानीय रूप से अपने सर्वर पर चल रहे एक संकलन को भी पूंछ कर सकें।

मैक में निर्मित

सर्वर और क्लाइंट दोनों मैक और लिनक्स दोनों में बनाए गए हैं। मैक और उबंटू के मामले में, सर्वर को सक्षम करना सही चेकबॉक्स ढूंढना उतना आसान है।

एक पीसी पर साइगविन या साइगविन / एक्स स्थापित करें (साइगविन / एक्स आपको अपने एक्स-विंडो आउटपुट को अपने लिनक्स मशीन से अपने विंडोज पीसी पर अग्रेषित करने की अनुमति देगा - यह एक्स सर्वर स्थापित करता है)

महत्वपूर्ण टिप्स / कॉन्फ़िगरेशन फ़ाइल

अपने फ़ायरवॉल पर पोर्ट 22 का कभी भी उपयोग न करें। आपको बहुत सारे हैक प्रयास मिलेंगे, यह सिर्फ इसके लायक नहीं है। बस अपने फ़ायरवॉल को अपने सर्वर पर एक अलग बंदरगाह आगे बढ़ाएं।

व्यापक कॉन्फ़िगरेशन विकल्प हैं जो आपको अपने एसएसएच कमांड को काफी सरल बनाने की अनुमति देते हैं। काम पर मेरा एक उदाहरण यहां दिया गया है:

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

जब मैं "ssh home" टाइप करता हूं (कुछ भी नहीं), यह कार्य करता है जैसा कि मैंने टाइप किया था:

ssh -p 12345 bill@billshome.hopto.org

और फिर घर पर मेरे सिस्टम "मैक" के लिए मेरे स्थानीय बंदरगाह 1025 आगे। इसका कारण यह है कि मेरे पास मेरी फ़ाइल में एक और प्रविष्टि है:

Host mac
    hostname localhost
    port=1025

ताकि एक बार मैंने "एसएसएच होम" किया हो और फिर भी खिड़की खुल जाए, मैं "एसएसएच मैक" टाइप कर सकता हूं और यहां पर काम करने वाला कंप्यूटर वास्तव में अपने पोर्ट 1025 से कनेक्ट करने का प्रयास करेगा जिसे "मैक: 22 "अन्य कमांड द्वारा, तो यह फ़ायरवॉल के माध्यम से घर पर मेरे मैक से कनेक्ट होगा।

संपादित करें - कूल स्क्रिप्ट!

मैंने एक पुरानी लिपि खोद दी जिसे मैं बस प्यार करता था - वापस आना था और यहां किसी के लिए पोस्ट करना था जो रुचि ले सकता था। लिपि को "ऑथमे" कहा जाता है

#!/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

अगर आपके पास इस होम स्क्रिप्ट में यह स्क्रिप्ट है और एक होस्ट है जिसे आप (एसएसएच के माध्यम से) से कनेक्ट कर सकते हैं, तो आप "./authMe hostName" टाइप कर सकते हैं।

यदि आवश्यक हो तो यह आपके लिए एक सार्वजनिक / निजी कीपैयर बनाएगा, फिर यह दूसरी मशीन पर जाएगा और आपकी सार्वजनिक कुंजी को कॉपी करेगा (एसएसएच कमांड आपको पासवर्ड के लिए संकेत देगा ...)

इसके बाद, उस रिमोट सिस्टम से कनेक्ट करते समय एसएसएच कमांड को अपना पासवर्ड नहीं पूछना चाहिए, यह सार्वजनिक / निजी कीपैयर का उपयोग करेगा।

यदि आपका रिमोट कंप्यूटर हमेशा सुरक्षित नहीं होता है, तो आपको संकेत मिलने पर "पासफ्रेज़" सेट करने पर विचार करना चाहिए।

आप अतिरिक्त सुरक्षा के लिए टेक्स्ट पासवर्ड (केवल कुंजी) की अनुमति न देने के लिए बहुत दूर तक एसएसएच सर्वर को कॉन्फ़िगर करना भी चाह सकते हैं।


101



+1 बहुत अच्छा और कॉम्पैक्ट पोस्ट - Karsten
बंदरगाह 22 पर एसएसएच पर एक छोटा सा नोट: बशर्ते आपको एक अच्छा रूट पासवर्ड मिल गया हो और आपके उपयोगकर्ताओं के पास भयानक पासवर्ड न हों, केवल फिक्स 2ban (या कुछ समान) चलाना क्रैक प्रयासों को दूर रखने के लिए पर्याप्त है। मैंने एसएसएच को किसी अन्य बंदरगाह पर रखने के लिए वास्तव में परेशान पाया। - David Wolever
यह कई बार परेशान हो सकता है, लेकिन कनेक्ट की मात्रा केवल डरावनी थी। मुझे पता है कि उन्हें नहीं जाना चाहिए, लेकिन ऐसा लगता है कि अगर आप किसी को अपने घर तक चलते हैं और हर मिनट अपने डोरकोनोब के साथ झुकाव करते हैं - बस अयोग्य।
आजकल एसएसएच के अधिकांश संस्करणों में आपके अंतिम कमांड का एक अंतर्निहित संस्करण है, इसे कहा जाता है ssh-copy-id, और यह उतना आसान है जितना ssh-copy-id user@someserver - JamesHannah
अपनी 'ssh mac' चाल करने का एक और तरीका है आपकी .ssh / config फ़ाइल में प्रॉक्सी कॉमांड निर्देश का उपयोग करना। होस्ट मैक प्रॉक्सी कॉमांड ssh -q घर "एनसी% एच% पी" यह घर पर नेटकैट (एनसी) चलाएगा और सीधे आपके मैक के माध्यम से अपने एसएसएच कनेक्शन को रीडायरेक्ट करेगा। मुझे उन श्रृंखलाओं को आसान लगता है (उदाहरण के लिए यदि आपको 'वर्क बेसशन' पाने के लिए 'वर्क बेसशन' पाने के लिए 'होम' से कनेक्ट करने की आवश्यकता है, तो 'वर्क वेब सर्वर' प्राप्त करने के लिए। - toppledwagon


मुझे उपयोग करना पसंद है

cd -

पिछली निर्देशिका पर स्विच करने के लिए। बहुत उपयोगी!


73



मैं इसे कभी नहीं जानता था! धन्यवाद! संबंधित नोट पर, पुश और पॉपड डीआईआरएस के ढेर का निर्माण करके कुछ ऐसा ही करते हैं। जब आप एक गहरी डायर संरचना के आसपास घूम रहे होते हैं तो इस तरह की चाल मदद करते हैं।
यह बेहद प्रबुद्ध है। - Manuel Ferreria


मैंने हाल ही में खोज की है pv आदेश (पाइप दर्शक) जो बिल्ली की तरह है लेकिन स्थानांतरण विवरण के साथ है।

तो इसके बजाय

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

आप उपयोग कर सकते हैं

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

तो आपके ऑपरेशन खत्म होने पर कोई विचार नहीं होने के बजाय, अब आप जान जाएंगे!

पीटरिस क्रुमिन्स की सौजन्य 


69



$ gzip -c access.log> access.log.gz क्यों न केवल: $ gzip access.log
ओह यह काम करता है :) मैंने अभी पीटरिस की वेबसाइट से उदाहरण लिया है। - Nick Devereaux
यह अच्छा पुराना दिखता है tee(1)। - Daniel C. Sobral
बेहद उपयोगी उपयोगिता, जिसे मैं हमेशा भूल जाता हूं :-( - Patrick


sudo !!

रूट के रूप में पिछले कमांड को फिर से करें।

[साइट पर वर्तमान शीर्ष कमांड http://www.commandlinefu.com, इस सवाल की तर्ज पर एक साइट थीम्ड।]


53



प्रकटीकरण - मैं commandlinefu.com चलाता हूं - codeinthehole
यह इस आदमी को 16 पात्रों को बचा लेगा: xkcd.com/149


दबाएँ Ctrl-R और एक कमांड टाइप करना शुरू करें (या इसका कोई भी भाग) - यह कमांड इतिहास की खोज करता है। Ctrl-R को फिर से मारना अगले मैच पर कूद जाएगा, वर्तमान में प्रदर्शित कमांड निष्पादित करेगा, और दायां तीर (कम से कम) आपको इसे पहले संपादित करने देगा।

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

मैंने सीखने से पहले अपने मुख्य ओएस के रूप में 7 साल की तरह कुछ के लिए लिनक्स का इस्तेमाल किया था, लेकिन अब मुझे यह पता है, यह काफी आसान है।


46



धन्यवाद। मैं रिवर्स सर्च का उपयोग कर रहा हूं, लेकिन यह पता लगाने में सक्षम नहीं है कि अगले मैच में कैसे कूदना है। - Adam
Ctrl-S अगले मैच में कूदता है। आपको करना पड़ सकता है stty -ixon पहले एक्सओएन / एक्सओएफएफ फ्लो-कंट्रोल अर्थ को बंद करने के लिए (यह Ctrl-Q भी उपलब्ध कराता है, डिफ़ॉल्ट रूप से इसे Ctrl-V उद्धृत-सम्मिलित करने के समान मैप किया जाता है, लेकिन आप इसे किसी अन्य चीज़ में बदल सकते हैं)। देख man stty तथा man readline अधिक जानकारी के लिए। stty आदेश आपके लिए जोड़ा जा सकता है ~/.bashrc - Dennis Williamson


कमांड लाइन एक मजेदार बात है। मुझे लगता है कि आप केवल अपने आप को इतना सीख सकते हैं और शेष आप कमांड लाइन का उपयोग करके किसी और को दुर्घटना से सीख सकते हैं।

मैं वर्षों से निर्देशिका नामों में दर्दनाक रूप से टाइपिंग के लिए खोल का उपयोग कर रहा था। एक दिन मैं एक सिस्टम पर एक दोस्त गड़बड़ देख रहा था और वह टैब कुंजी मार रहा था। मैंने पूछा "तुम टैब क्यों मार रहे हो?"। उत्तर: यह निर्देशिका या फ़ाइल नाम को पूरा करने का प्रयास करता है। किसने अनुमान लगाया होगा - टैब पूर्णता! फ़ाइल या निर्देशिका का थोड़ा सा टाइप करें, टैब दबाएं, और यह आपके द्वारा टाइप किए गए कार्यों को पूरा करने का प्रयास करेगा (व्यवहार हालांकि किस शैल पर निर्भर करता है)।

एक दिन, दोस्त ने मुझे कमांड लाइन पर देख रहा था और मुझे कुछ ऐसा टाइप किया:

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

अनुमान लगाया होगा !? वह कभी नहीं जानता था popd / pushd। मान लीजिए हम भी हैं ...


45



मेरे लिए टैब पूर्णता कुछ "स्पष्ट" की तरह लगती है, बहुत बुनियादी है, लेकिन मुझे पॉपड / पुशड के बारे में कभी नहीं पता था। वास्तव में मजेदार :) - Jonik
आदेशों, फ़ाइलों और निर्देशिकाओं से बहुत अधिक टैब-टैब को पूरा करने में सक्षम होने के लिए यह उत्तर भी देखें: stackoverflow.com/questions/603696//603919#603919 - Jonik
सच बात है। मैंने किसी को देखकर बैश की पिछड़ी-इतिहास-खोज (ctrl-r) के बारे में सीखा। बाद में मुझे एहसास हुआ कि यह एक पठार की सुविधा थी और अन्य कार्यक्रमों में भी काम करता था जो रीडलाइन (mysql, gdb, पायथन -आई, क्लिस आदि) शामिल करते हैं। - sigjuice
आप वर्षों के लिए "खोल" का उपयोग कैसे कर सकते हैं और टैब पूर्ण होने के बारे में नहीं जानते? - prestomation
Pushd / popd से निपटने पर कमांड का उल्लेख करना न भूलें dirs। यह दिखाता है कि पुश / पॉपड स्टैक पर क्या है। - slm


विम जानें।

यह (तर्कसंगत) सर्वश्रेष्ठ संपादक है, लेकिन निश्चित रूप से सबसे अच्छा संपादक एक बेयर लिनक्स सर्वर पर उपलब्ध है।


41



gvim विंडोज़ पर भी सबसे अच्छा फाइल ब्राउज़र है;)
एक बार जब आप विम जानते हैं, यह भी बेहद उपयोगी है, आप अधिकांश गोले को वी-मोड में डाल सकते हैं, और नेविगेशन बेहद आसान और तेज़ हो जाता है - Patrick