प्रयास करें file
तो file -k
उसके बादdos2unix -ih
file
आमतौर पर पर्याप्त होगा। लेकिन कठिन मामलों के लिए प्रयास करें file -k
या dosunix -ih
।
नीचे दिए गए विवरण।
प्रयत्न file -k
लघु संस्करण: file -k somefile.txt
आपको बताएगा।
- यह
with CRLF line endings
डॉस / विंडोज लाइन एंडिंग के लिए आउटपुट देगा ।
- यह
with LF line endings
MAC लाइन एंडिंग के लिए आउटपुट देगा ।
- और लिनक्स / यूनिक्स लाइन "सीआर" के लिए यह सिर्फ आउटपुट होगा
text
। (इसलिए यदि यह स्पष्ट रूप से किसी भी प्रकार का उल्लेख नहीं करता है, line endings
तो इसका तात्पर्य है: "सीआर लाइन एंडिंग" ।)
लंबा संस्करण नीचे देखें।
वास्तविक दुनिया उदाहरण: प्रमाण पत्र एन्कोडिंग
मुझे कभी-कभी PEM प्रमाणपत्र फ़ाइलों के लिए यह जांचना होगा।
नियमित रूप से परेशानी file
से यह है: कभी-कभी यह बहुत स्मार्ट / बहुत विशिष्ट होने की कोशिश कर रहा है।
आइए थोड़ा प्रश्नोत्तरी का प्रयास करें: मुझे कुछ फाइलें मिली हैं। और इन फ़ाइलों में से एक में अलग-अलग लाइन अंत हैं। कौनसा?
(वैसे: यह मेरी विशिष्ट "सर्टिफिकेट वर्क" निर्देशिकाओं में से एक है।)
आइए नियमित रूप से प्रयास करें file
:
$ file -- *
0.example.end.cer: PEM certificate
0.example.end.key: PEM RSA private key
1.example.int.cer: PEM certificate
2.example.root.cer: PEM certificate
example.opensslconfig.ini: ASCII text
example.req: PEM certificate request
हुह। यह मुझे लाइन एंडिंग नहीं बता रहा है। और मुझे पहले से ही पता था कि वे सर्टिफाइड फाइलें थीं। मुझे यह बताने के लिए "फ़ाइल" की आवश्यकता नहीं थी।
आप और क्या प्रयास कर सकते हैं?
आप इस तरह dos2unix
से --info
स्विच के साथ कोशिश कर सकते हैं :
$ dos2unix --info -- *
37 0 0 no_bom text 0.example.end.cer
0 27 0 no_bom text 0.example.end.key
0 28 0 no_bom text 1.example.int.cer
0 25 0 no_bom text 2.example.root.cer
0 35 0 no_bom text example.opensslconfig.ini
0 19 0 no_bom text example.req
तो यह आपको बताता है कि: हाँ, "0.example.end.cer" अजीब आदमी होना चाहिए। लेकिन लाइन अंत किस तरह के होते हैं? क्या आप? दिल से dos2unix आउटपुट फॉर्मेट जानते हैं? (मैं नही।)
लेकिन सौभाग्य से इसमें --keep-going
(या -k
संक्षेप में) विकल्प है file
:
$ file --keep-going -- *
0.example.end.cer: PEM certificate\012- , ASCII text, with CRLF line terminators\012- data
0.example.end.key: PEM RSA private key\012- , ASCII text\012- data
1.example.int.cer: PEM certificate\012- , ASCII text\012- data
2.example.root.cer: PEM certificate\012- , ASCII text\012- data
example.opensslconfig.ini: ASCII text\012- data
example.req: PEM certificate request\012- , ASCII text\012- data
अति उत्कृष्ट! अब हम जानते हैं कि हमारी विषम फ़ाइल में DOS ( CRLF
) लाइन अंत है। (और अन्य फाइलों में यूनिक्स ( LF
) लाइन एंडिंग है। यह इस आउटपुट में स्पष्ट नहीं है। यह अंतर्निहित है। यह सिर्फ file
एक "नियमित" पाठ फ़ाइल होने की उम्मीद है।)
(यदि आप मेरे mnemonic को साझा करना चाहते हैं: "L" "लिनक्स" के लिए और "LF" के लिए है।)
अब हम अपराधी को परिवर्तित करते हैं और पुनः प्रयास करते हैं:
$ dos2unix -- 0.example.end.cer
$ file --keep-going -- *
0.example.end.cer: PEM certificate\012- , ASCII text\012- data
0.example.end.key: PEM RSA private key\012- , ASCII text\012- data
1.example.int.cer: PEM certificate\012- , ASCII text\012- data
2.example.root.cer: PEM certificate\012- , ASCII text\012- data
example.opensslconfig.ini: ASCII text\012- data
example.req: PEM certificate request\012- , ASCII text\012- data
अच्छा। अब सभी सीरियलों में यूनिक्स लाइन एंडिंग हैं।
प्रयत्न dos2unix -ih
मैं यह नहीं जानता था जब मैं ऊपर का उदाहरण लिख रहा था लेकिन:
वास्तव में यह पता चला है कि dos2unix अगर आप का उपयोग आप एक हैडर लाइन दे देंगे -ih
(छोटे के लिए --info=h
) तो जैसे:
$ dos2unix -ih -- *
DOS UNIX MAC BOM TXTBIN FILE
0 37 0 no_bom text 0.example.end.cer
0 27 0 no_bom text 0.example.end.key
0 28 0 no_bom text 1.example.int.cer
0 25 0 no_bom text 2.example.root.cer
0 35 0 no_bom text example.opensslconfig.ini
0 19 0 no_bom text example.req
और एक और "वास्तव में" पल: हेडर प्रारूप को याद रखना वास्तव में आसान है: यहां दो ज्ञानसूचक हैं:
- यह DUMB है (बाएं से दाएं: D के लिए d, Unix के लिए u, Mac के लिए m, B के लिए b)।
- और यह भी: "डीयूएम" केवल डी, यू और एम के वर्णमाला क्रम है।
आगे की पढाई
man less
,।