Ls को “हिडन” फाइल फ्लैग से अवगत कराना


12

क्या मैक ओएस एक्स पर फाइल फ्लैग से lsअवगत कराना संभव है hidden?

वर्तमान में, एक साधारण ls -lOउत्पादन:

$ ls -lO
total 0
drwxr-xr-x@  84 danielbeck  staff  -      2856 29 Mai 22:44 Applications
drwx------+ 158 danielbeck  staff  -      5372 29 Mai 15:27 Desktop
drwx------@ 250 danielbeck  staff  -      8500 30 Mai 20:40 Documents
drwx------+  11 danielbeck  staff  -       374 29 Mai 22:21 Downloads
drwx------@  84 danielbeck  staff  -      2856 29 Mai 22:48 Library
drwx------@   3 danielbeck  staff  hidden  102  3 Apr 20:45 Movies
drwx------@   5 danielbeck  staff  hidden  170  3 Apr 20:45 Music
drwx------+ 215 danielbeck  staff  -      7310 29 Mai 22:54 Pictures
drwxr-x---@   7 danielbeck  staff  hidden  238  3 Apr 20:45 Public
drwxr-xr-x@   4 danielbeck  staff  hidden  136 24 Apr 23:25 Sites

इसलिए हमारे पास तीन प्रकार की दृश्यता है: नियमित, दृश्यमान फ़ाइलें, hiddenफ़ाइल फ़्लैग वाली फ़ाइलें , जो वास्तव में टर्मिनल में छिपी नहीं हैं, और वास्तव में छिपी हुई फाइलें जिनके नाम डॉट से शुरू होते हैं।

वहाँ एक तरीका है, जैसे एक उपनाम या एक विश्वसनीय शेल फ़ंक्शन का उपयोग करना, झंडी और फ़ाइलों को एक ही बनाने के lsलिए , यानी डिफ़ॉल्ट रूप से छिपाना और इसके साथ या उसी तरह दिखाना, जिसके आधार पर फाइंडर कैसे व्यवहार करता है ?hidden.dothiddenls -Als -adefaults read com.apple.Finder AppleShowAllFiles

मुझे पता है कि man chflagsविशेष रूप से hiddenध्वज को केवल GUI यानी फाइंडर से छिपाया गया है।

जवाबों:


8

ये एक OS X प्राप्त करने के लिए चरण हैं lsजो फ़ाइलों को छिपाए गए ध्वज के साथ छुपाता है जब तक कि -a/-Aविकल्प निर्दिष्ट न हो, डॉट फ़ाइलों के समान।

  1. Xcode स्थापित करें। मैं नीचे Xcode 4.5.1 का उपयोग कर रहा हूं।
  2. अपने OS रिलीज़ को libutilऔर http://www.opensource.apple.comfile_cmds से डाउनलोड करें । प्रत्येक पैकेज सूची प्रविष्टि के दाईं ओर एक डाउनलोड बटन है। यह गाइड OS X 10.8.2 के लिए लिखा गया था, YMMV सटीक चरणों के साथ यदि आप एक अलग संस्करण पर हैं।
  3. दोनों अभिलेख निकाले।
  4. file_cmds.xcodeprojXcode में खोलें और lsलक्ष्य बनाने के लिए चुनें ।

    स्क्रीनशॉट

  5. का चयन करें file_cmdsबाईं तरफ Xcode प्रोजेक्ट, और चुनें lsमुख्य क्षेत्र में लक्ष्य। में सेटिंग्स बिल्ड टैब, के लिए देखो हैडर खोजें पथ में हेडर श्रेणी और आप जहां निकाले फ़ोल्डर के लिए पथ को जोड़ने libutil

    स्क्रीनशॉट

  6. बाईं ओर फ़ोल्डर print.cमें फ़ाइल खोलें ls, और कहने वाली रेखा को हटा दें #include <membershipPriv.h>। फाइल को बाद में सेव करें। यह कुछ तोड़ना चाहिए , क्योंकि इसमें एक कारण शामिल हैं, लेकिन मैंने अभी तक यह निर्धारित नहीं किया है कि यह क्या है।

  7. फ़ाइल ls.cको उसी फ़ोल्डर में खोलें , और फ़ंक्शन /* Only display dot file if -a/-A set. */में टिप्पणी के लिए देखें display। इसे और नीचे दी गई स्थिति को निम्न के साथ बदलें:

    /* Only display dot file and file with hidden flag if -a/-A set. */
    sp = cur->fts_statp;
    if (((sp != NULL && (sp->st_flags & 0x8000)) || cur->fts_name[0] == '.') && !f_listdot) {
        cur->fts_number = NO_PRINT;
        continue;
    }
    
  8. प्रेस करना Cmd- Bto build।

    सफलता!

  9. बाईं ओर उत्पाद चुनें (फ़ोल्डर सूची का अंत) और राइट-क्लिक करें lsखोजक में दिखाएँ का चयन करें ।

    आउटपुट फ़ोल्डर स्क्रीनशॉट बनाएँ

  10. lsनिष्पादन योग्य को कहीं सुविधाजनक तरीके से स्थानांतरित करें , जैसे आपके घर की निर्देशिका। फिर टर्मिनल खोलें और चलाएं sudo mv $HOME/ls /bin/lsया, और भी बेहतर, binअपने होम डायरेक्टरी में नामित एक नया फ़ोल्डर बनाएं और इसे वहां ले जाएं। उस फ़ोल्डर को अपने PATHबाद में जोड़ें ।

परिणाम का परीक्षण:

$ mkdir test
$ cd test
$ touch foo bar
$ chflags hidden bar
$ /bin/ls -lO
total 0
-rw-r--r--@ 1 danielbeck  staff  hidden 0 25 Okt 22:25 bar
-rw-r--r--  1 danielbeck  staff  -      0 25 Okt 22:25 foo
$ $HOME/bin/ls -lO
total 0
-rw-r--r--  1 danielbeck  staff  - 0 25 Okt 22:25 foo
$ $HOME/bin/ls -A
bar foo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.