`नाम बदलें 'आदेश कहाँ से आता है?


17

renameआज्ञा कहाँ से आती है?

user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename

3
renameफेडोरा के साथ कि जहाजों इससे अलग है, हालांकि है। यह एक संकलित कार्यक्रम प्रतीत होता है और यह renameउबंटू के साथ उस जहाज जितना शक्तिशाली नहीं है । इसलिए जब आप एक अलग लिनक्स वितरण पर स्क्रिप्ट का उपयोग करते हैं तो सावधान रहें।
मार्टिन उडिंग

@MartinUeding आप यहां एक टिप्पणी छोड़ सकते हैं: askubuntu.com/questions/873661/…
guettli

इस उत्तर यह है कहते हैंprename
Gallifreyan

जवाबों:


20

हैरानी की बात है, यह renameपैकेज से आता है ।

pilot6@Pilot6:~$ ls -l /usr/bin/rename
lrwxrwxrwx 1 root root 24 окт 17  2013 /usr/bin/rename -> /etc/alternatives/rename
pilot6@Pilot6:~$ ls -l /etc/alternatives/rename
lrwxrwxrwx 1 root root 20 апр 29  2016 /etc/alternatives/rename -> /usr/bin/file-rename
pilot6@Pilot6:~$ dpkg -S /usr/bin/file-rename
rename: /usr/bin/file-rename

1
dpkg -Sसिमलिंक का पालन क्यों नहीं करता है ? बग या सुविधा?
गुटली

5
@guettli फ़ीचर : "यह कमांड अनुरक्षक स्क्रिप्ट द्वारा बनाई गई अतिरिक्त फ़ाइलों को सूचीबद्ध नहीं करेगा, न ही यह विकल्पों की सूची देगा।"
मूरू

2
सिमिंक पैकेज से संबंधित नहीं है।
पायलट 6

2
@guettli क्योंकि यह dpkgकाम नहीं है। dpkgकेवल स्थापित पैकेज से संबंधित है। का उपयोग करें update-alternatives --query rename , यह आपको हल किया हुआ लिंक पथ दिखाएगा
सर्गी कोलोडियाज़नी

5
@guettli देबियन बग # 198220 देखें । यह आसान होगा अगर dpkg/ dpkg-queryइस जानकारी को आसानी से पेश किया जाए। हालाँकि, मुझे नहीं लगता कि चुपचाप इसे एक पैकेज फ़ाइल मिलने तक सहानुभूति को कम dpkg -Sकरना चाहिए । कमांड खोजने के लिए नहीं है , यह फ़ाइल को स्थापित करने वाले पैकेज को ढूंढता है , और फ़ाइल के निरपेक्ष पथ के साथ लागू होने पर सबसे उपयोगी है। यह अच्छा होगा यदि समझाया जाए कि कोई पैकेज उस सिम्लिंक को क्यों नहीं प्रदान करता है, लेकिन मुझे लगता है कि इसे अभी भी सच बताना चाहिए जो कोई पैकेज नहीं करता है। dpkg -S foofoo foodpkg -S /usr/bin/rename
एलिया कागन

12

आप शायद पाएंगे कि यह एक प्रतीकात्मक कड़ी है जिसे update-alternativesतंत्र द्वारा प्रबंधित किया जाता है:

$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29  2016 /usr/bin/rename -> /etc/alternatives/rename

आप उपयोग करके वैकल्पिक कार्यान्वयन देख सकते हैं

$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename

और का उपयोग कर कार्यान्वयन के बीच चयन कर सकते हैं

update-alternatives --config rename

एफडब्ल्यूआईडब्ल्यू पैकेज file-renameद्वारा प्रदान किया जाता renameहै, जबकि मूल स्वयं prenameद्वारा प्रदान किया जाता perlहै। से apt-cache show rename:

यह पैकेज फ़ाइलों के नाम बदलने के लिए दोनों को एक पर्ल इंटरफ़ेस प्रदान करता है (फ़ाइल :: नाम बदलें) और एक कमांड लाइन टूल 'नाम बदलें' जिसका उद्देश्य वर्तमान में पर्ल पैकेज द्वारा आपूर्ति किए गए संस्करण को बदलना है।

जैसे कि यह पहले से ही पर्याप्त भ्रमित नहीं था, आप पैकेज renameसे दूसरे में भी आ सकते हैं util-linux- देखें कि सभी नामों के साथ क्या है?


नाम बदलने का विकल्प क्यों नहीं है?
रैंडम 832

@ Random832 कमांड-लाइन उपयोगिताओं के लिए, विकल्पों को एक दूसरे के लिए वाक्यविन्यास-संगत प्रतिस्थापन माना जाता है (कम से कम कार्यक्षमता के कुछ सामान्य कोर के लिए); rename.ul और prename योग्य नहीं हैं।
zwol

7

यदि हम इस बारे में बात कर रहे हैं /usr/bin/rename, जो एक सुंदर निफ्टी पर्ल स्क्रिप्ट है, तो renameकमांड अपने अलग पैकेज के अंतर्गत आता है।

rename:
  Installed: 0.20-4
  Candidate: 0.20-4
  Version table:
 *** 0.20-4 500
        500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status

कॉर्न शेल और इसके डेरिवेटिव के मामले में, renameएक शेल निर्मित कमांड है।

$ echo $SHELL
/bin/mksh

$ type rename
rename is a shell builtin

क्यों "अगर हम बात कर रहे हैं / usr / bin / rename"? प्रश्न में पूर्ण मार्ग समाहित है।
गुफ्तगू

1
@guettli प्रश्न renameकमांड के बारे में पूछता है , फिर renameभी केवल इसका उल्लेख नहीं किया जाता है /usr/bin/rename, जैसा कि आप मेरे उत्तर में देखते हैं। जिन उपयोगकर्ताओं के पास ksh या mksh गोले हैं, उन्हें इसके बारे में जानकारी नहीं हो सकती है। जब मैंने व्यक्तिगत रूप से शुरुआत की mkshथी, तब मैं बहुत चकित renameथा जब मैं नियमित अभिव्यक्ति को स्वीकार नहीं कर रहा था , जब तक मुझे एहसास नहीं हुआ कि वे दो अलग-अलग चीजें हैं। इसके अलावा, "अगर हम एक्स के बारे में बात कर रहे हैं तो" मेरे शब्दों को न लें, इसे "कहने के तरीके के रूप में विचार करें"
सर्गि कोलोडियाज़नी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.