GNU/Linux
खोल
खोज…
परिचय
शेल अपने प्रॉम्प्ट के जवाब में एक प्रोग्राम निष्पादित करता है। जब आप एक कमांड देते हैं, शेल प्रोग्राम को खोजता है, और फिर इसे निष्पादित करता है। उदाहरण के लिए, जब आप कमांड ls देते हैं, शेल ls नाम की उपयोगिता / प्रोग्राम को खोजता है, और फिर इसे शेल में चलाता है। तर्क और विकल्प जो आप उपयोगिताओं के साथ प्रदान करते हैं, जो आपको प्राप्त परिणाम को प्रभावित कर सकते हैं। शेल को सीएलआई, या कमांड लाइन इंटरफ़ेस के रूप में भी जाना जाता है।
डिफ़ॉल्ट शेल बदलना
अधिकांश आधुनिक वितरण BASH ( B ourne A gain SH ell) के साथ पहले से स्थापित और एक डिफ़ॉल्ट शेल के रूप में कॉन्फ़िगर किए जाएंगे।
आदेश (वास्तव में एक निष्पादन द्विआधारी, एक ELF) कि लिनक्स में गोले को बदलने के लिए जिम्मेदार है chsh
(ch Ange श ell)।
हम पहले जाँच कर सकते हैं कि chsh -l
कमांड का उपयोग करके कौन सी गोले पहले से ही हमारे मशीन पर स्थापित और कॉन्फ़िगर किए गए हैं, जो इस तरह से परिणाम देगा:
[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
कुछ लिनक्स वितरण में, chsh -l
अमान्य है। इस स्थिति में, सभी उपलब्ध गोले की सूची / etc / गोले फ़ाइल में पाई जा सकती है। आप cat
साथ फ़ाइल सामग्री दिखा सकते हैं:
[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish
अब हम अपना नया डिफॉल्ट शेल चुन सकते हैं, जैसे fish
, और chsh -s
का उपयोग करके इसे कॉन्फ़िगर करें,
[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password:
Shell changed.
अब जो कुछ करना बाकी है, वह एक लॉगऑफ-लॉगऑन चक्र से पहले है, और हमारे नए डिफ़ॉल्ट शेल का आनंद लें।
यदि आप एक अलग उपयोगकर्ता के लिए डिफ़ॉल्ट शेल बदलना चाहते हैं, और आपके पास मशीन पर प्रशासनिक विशेषाधिकार हैं, तो आप इसे chsh
को root
रूप में उपयोग करके पूरा कर पाएंगे। इसलिए यह मानते हुए कि हम user_2
के डिफ़ॉल्ट शेल को मछली में बदलना चाहते हैं, हम पहले की तरह ही कमांड का उपयोग करेंगे, लेकिन दूसरे उपयोगकर्ता के उपयोगकर्ता नाम, chsh -s /usr/bin/fish user_2
।
वर्तमान डिफ़ॉल्ट शेल क्या है, यह जांचने के लिए, हम $SHELL
पर्यावरण चर को देख सकते हैं, जो हमारे डिफ़ॉल्ट शेल के पथ को इंगित करता है, इसलिए हमारे परिवर्तन के बाद, हम इसके समान परिणाम प्राप्त करने की उम्मीद करेंगे,
~ echo $SHELL
/usr/bin/fish
chsh
विकल्प:
-s shell
शेल को लॉगिन शेल के रूप में सेट करता है।
-l
, --list-shells
/ Etc / गोले और निकास में सूचीबद्ध गोले की सूची प्रिंट करें।
-h
, --help
एक उपयोग संदेश प्रिंट करें और बाहर निकलें।
-v
, - --version
संस्करण की जानकारी प्रिंट करें और बाहर निकलें।
मूल शैल उपयोगिताएँ
शेल प्रॉम्प्ट को अनुकूलित करना
डिफॉल्ट कमांड प्रॉम्प्ट को अलग और छोटा दिखने के लिए बदला जा सकता है। यदि वर्तमान निर्देशिका लंबी डिफ़ॉल्ट है तो कमांड प्रॉम्प्ट बहुत बड़ा हो जाता है। PS1
का उपयोग इन मामलों में उपयोगी हो जाता है। एक छोटी और अनुकूलित कमांड सुंदर और सुरुचिपूर्ण। शेल प्रांप्ट के विभिन्न रूपों को दिखाने के लिए PS1
नीचे तालिका में कई तर्कों का उपयोग किया गया है। डिफ़ॉल्ट कमांड प्रॉम्प्ट कुछ इस तरह दिखता है: user@host ~ $
मेरे मामले में यह इस तरह दिखता है: bruce@gotham ~ $
। इसे नीचे दी गई तालिका के अनुसार बदला जा सकता है:
आदेश | उपयोगिता |
---|---|
PS1 = '\ w $' | निर्देशिका नाम के रूप में ~ $ शेल प्रॉम्प्ट। इस मामले में रूट डायरेक्टरी रूट है। |
PS1 = '\ h $' | होस्टनाम के रूप में gotham $ शेल प्रॉम्प्ट |
PS1 = '\ u $' | उपयोगकर्ता नाम के रूप में bruce $ शैल शीघ्र bruce $ |
PS1 = '\ t $' | 24 घंटे के प्रारूप में 22:37:31 $ शैल शीघ्र |
PS1 = '@ $' | 10:37 PM 12 घंटे के समय के प्रारूप में 10:37 PM |
PS1 = '! $ ' | 732 शेल प्रॉम्प्ट के स्थान पर कमांड का इतिहास नंबर दिखाएगा |
PS1 = 'दोस्त $' | dude $ खोल दिखाएगा जिस तरह से आप की तरह |
कुछ बुनियादी शेल कमांड
आदेश | उपयोगिता |
---|---|
Ctrl-k | कटौती / मार |
Ctrl-y | झटका / पेस्ट |
Ctrl-a | लाइन की शुरुआत में कर्सर ले जाएगा |
Ctrl-e | लाइन के अंत में कर्सर ले जाएगा |
Ctrl-d | कर्सर पर / के बाद वर्ण हटा देगा |
Ctrl-l | स्क्रीन / टर्मिनल को साफ़ करेगा |
Ctrl-u | शीघ्र और कर्सर के बीच सब कुछ साफ हो जाएगा |
Ctrl-_ | कमांड लाइन पर टाइप की गई अंतिम चीज को पूर्ववत कर देगा |
Ctrl-c | अग्रभूमि में चल रही नौकरी / प्रक्रिया को बाधित / रोक देगा |
Ctrl-r | इतिहास में रिवर्स खोज |
~/.bash_history | शेल पर उपयोग की जाने वाली अंतिम 500 कमांड / ईवेंट |
history | कमांड इतिहास दिखाएगा |
history | grep <key-word> | इतिहास में सभी कमांड दिखाएंगे जिनमें कीवर्ड <की-वर्ड> (उन मामलों में उपयोगी होगा जब आप अतीत में उपयोग किए गए कमांड का हिस्सा याद करते हैं) |
अपनी खुद की कमान उपनाम बनाएँ
यदि आप bash में लंबे कमांड का उपयोग करके थक गए हैं तो आप अपना खुद का कमांड उपनाम बना सकते हैं।
ऐसा करने का सबसे अच्छा तरीका आपके घर के फ़ोल्डर में .bash_aliases नामक फ़ाइल को संशोधित करना (या मौजूद नहीं है) बनाना है। सामान्य वाक्यविन्यास है:
alias command_alias='actual_command'
जहां actual_command
वह कमांड है जिसका आप नाम बदल रहे हैं और command_alias
नया नाम है जिसे आपने दिया है। उदाहरण के लिए
alias install='sudo apt-get -y install'
नक्शे नया आदेश उर्फ install
वास्तविक आदेश को sudo apt-get -y install
। इसका मतलब यह है कि जब आप किसी टर्मिनल में इंस्टॉल का उपयोग करते हैं, तो इसे सस्पो एप्ट-गेट- ए इंस्टॉल के रूप में बश किया जाता है।
अपने सिस्टम पर एक फ़ाइल का पता लगाएँ
साथ पार्टी का उपयोग आप आसानी से एक फ़ाइल को ढूँढ सकते हैं locate
आदेश। उदाहरण के लिए, आप फ़ाइल mykey.pem की तलाश कर रहे हैं:
locate mykey.pem
कभी-कभी फ़ाइलों में अजीब नाम होते हैं उदाहरण के लिए आपके पास random7897_mykey_0fidw.pem
जैसी फ़ाइल हो सकती है। मान लीजिए कि आप इस फ़ाइल को ढूंढ रहे हैं, लेकिन आपको केवल mykey और pem भागों की याद है। आप इस तरह से एक पाइप का उपयोग करके grep
साथ locate
कमांड को जोड़ सकते हैं:
locate pem | grep mykey
जो सभी परिणामों को सामने लाएगा जिसमें ये दोनों टुकड़े होंगे।
ध्यान दें कि सभी प्रणालियों में locate
उपयोगिता नहीं है, और कई जो इसे सक्षम नहीं करते हैं। locate
तेज़ और कुशल है क्योंकि यह समय-समय पर आपके सिस्टम को स्कैन करता है और उस पर हर फ़ाइल के नाम और स्थानों को कैश करता है, लेकिन यदि वह डेटा संग्रह सक्षम नहीं है, तो यह आपको कुछ भी नहीं बता सकता है। आप अपने फाइल सिस्टम पर फाइलों के बारे में कैश्ड जानकारी को अपडेट करने के लिए फाइलसिस्टम स्कैन को मैन्युअल रूप से शुरू करने के लिए updatedb
का उपयोग कर सकते हैं।
क्या आपके पास काम का locate
नहीं होना चाहिए, आप find
उपयोगिता पर वापस गिर सकते find
:
find / -name mykey.pem -print
मोटे तौर पर locate mykey.pem
का locate mykey.pem
बराबर है, लेकिन आपके फ़ाइल सिस्टम को स्कैन करने के लिए प्रत्येक बार जब आप इसे फ़ाइल के लिए चलाते हैं, तो कैश्ड डेटा का उपयोग करने के बजाय। यह स्पष्ट रूप से धीमा और कम कुशल है, लेकिन अधिक वास्तविक समय है। find
उपयोगिता फाइलों को खोजने की तुलना में बहुत अधिक कर सकती है, लेकिन इसकी क्षमताओं का पूरा विवरण इस उदाहरण के दायरे से परे है।