विंडोज़ टेक्स्ट को लिनक्स फॉर्मेट में बदलना

विभिन्न प्लेटफॉर्मों पर लाइन एंडिंग कन्वर्ज़न को मास्टर करें

Page content

विंडोज और लिनक्स (विंडोज और लिनक्स) सिस्टम के बीच लाइन एंडिंग असंगतियाँ फॉर्मेटिंग समस्याएँ, गिट चेतावनियाँ, और स्क्रिप्ट विफलताएँ उत्पन्न करती हैं। यह व्यापक गाइड पता लगाने, रूपांतरण, और रोकथाम रणनीतियों को कवर करता है।

विंडोज से यूनिक्स दस्तावेज़ रूपांतरण यह सुंदर छवि AI मॉडल फ्लक्स 1 डेव द्वारा उत्पन्न की गई है।

लाइन एंडिंग अंतरों को समझना

ऑपरेटिंग सिस्टम टेक्स्ट फाइलों में लाइन के अंत को चिह्नित करने के लिए अलग-अलग परंपराओं का उपयोग करते हैं, जो क्रॉस-प्लेटफॉर्म विकास में संगतता की चुनौतियाँ पैदा करते हैं:

  • विंडोज: कैरिज रिटर्न + लाइन फीड (\r\n या CRLF, हेक्स 0D 0A)
  • लिनक्स/यूनिक्स: केवल लाइन फीड (\n या LF, हेक्स 0A)
  • क्लासिक मैक OS: केवल कैरिज रिटर्न (\r या CR, हेक्स 0D)

यह ऐतिहासिक अंतर टाइपराइटर मेकेनिज्म से उत्पन्न हुआ है। विंडोज ने DOS से CRLF परंपरा को विरासत में प्राप्त किया, जो टेलिटाइप मशीनों के साथ संगतता बनाए रखता था जिन्हें दोनों की आवश्यकता थी - एक कैरिज रिटर्न (लाइन के आरंभ पर जाना) और लाइन फीड (कागज को आगे बढ़ाना)।

लाइन एंडिंग असंगतियों से होने वाली सामान्य समस्याएँ

1. स्क्रिप्ट एक्सीक्यूशन विफलताएँ

विंडोज लाइन एंडिंग्स वाले बाश स्क्रिप्ट्स अस्पष्ट त्रुटियों के साथ विफल हो जाते हैं:

bash: ./script.sh: /bin/bash^M: बुरा इंटरप्रेटर: ऐसी कोई फाइल या डायरेक्टरी नहीं है

^M चर (कैरिज रिटर्न) शेबैंग लाइन का हिस्सा बन जाता है, जिससे इंटरप्रेटर लुकअप विफल हो जाता है।

2. गिट चेतावनियाँ और डिफ नॉइज

विंडोज फाइलों को लिनक्स पर गिट में कमिट करने पर आप देखेंगे:

चेतावनी: file.txt में CRLF को LF द्वारा प्रतिस्थापित किया जाएगा।
फाइल आपकी वर्किंग डायरेक्टरी में अपनी मूल लाइन एंडिंग्स के साथ होगी

गिट डिफ्स पूरी फाइलों को बदल गए दिखा सकते हैं जब केवल लाइन एंडिंग्स अलग होते हैं, जिससे वास्तविक कोड बदलाव छिप जाते हैं।

3. एडिटर्स में दृश्य दोष

लिनक्स टेक्स्ट एडिटर्स जो स्वचालित रूप से लाइन एंडिंग्स का पता नहीं लगाते, लाइन एंड्स पर ^M चर दिखाते हैं, जिससे फाइलों को पढ़ना और संपादित करना मुश्किल हो जाता है। यह ह्यूगो मार्कडाउन फाइलों में विशेष रूप से समस्या पैदा करता है जहां यह फ्रंटमैटर पार्सिंग को तोड़ सकता है।

4. डेटा प्रोसेसिंग समस्याएँ

टेक्स्ट फाइलों को पार्स करने वाले स्क्रिप्ट्स में कैरिज रिटर्न्स को निकाला गया डेटा में शामिल कर सकते हैं, जिससे तुलना विफलताएँ और डेटा पाइपलाइनों में अप्रत्याशित व्यवहार हो सकता है।

विंडोज लाइन एंडिंग्स का पता लगाना

फाइलों को रूपांतरित करने से पहले, पहचानें कि किसे रूपांतरण की आवश्यकता है ताकि अनावश्यक संशोधन से बचा जा सके।

विधि 1: file कमांड का उपयोग

सबसे विश्वसनीय पता लगाने की विधि:

file content/post/my-post/index.md

आउटपुट उदाहरण:

# विंडोज लाइन एंडिंग्स:
index.md: UTF-8 यूनिकोड टेक्स्ट, CRLF लाइन टर्मिनेटर्स के साथ

# लिनक्स लाइन एंडिंग्स:
index.md: UTF-8 यूनिकोड टेक्स्ट

# मिश्रित लाइन एंडिंग्स (समस्या):
index.md: UTF-8 यूनिकोड टेक्स्ट, CRLF, LF लाइन टर्मिनेटर्स के साथ

विधि 2: cat के साथ दृश्य निरीक्षण

कंट्रोल चर दिखाएँ:

cat -A filename.txt

विंडोज फाइलों में लाइन एंड्स पर ^M$ दिखते हैं, जबकि लिनक्स फाइलों में केवल $ दिखता है।

विधि 3: grep का उपयोग

कैरिज रिटर्न्स के लिए खोजें:

grep -r $'\r' content/post/2025/11/

यह निर्दिष्ट डायरेक्टरी में CRLF वाले सभी फाइलों का पता लगाता है।

विधि 4: हेक्सडंप विश्लेषण

डिटेल्ड बाइट-लेवल निरीक्षण के लिए:

hexdump -C filename.txt | head -n 20

0d 0a (CRLF) के मुकाबले 0a (LF) अनुक्रमों की तलाश करें।

विंडोज से लिनक्स फॉर्मेट में रूपांतरण

विभिन्न उपकरणों में अलग-अलग उपलब्धता, विशेषताओं और प्रदर्शन में व्यापक रूपांतरण प्रदान करते हैं।

समाधान 1: dos2unix (सिफारिश की जाती है)

लाइन एंडिंग रूपांतरण के लिए विशेष रूप से डिज़ाइन किया गया सबसे मजबूत और विशेषता-समृद्ध समाधान।

स्थापना

# Ubuntu/Debian
sudo apt install dos2unix

# Red Hat/CentOS/Fedora
sudo yum install dos2unix

# macOS (Homebrew)
brew install dos2unix

# Arch Linux
sudo pacman -S dos2unix

बेसिक उपयोग

# एकल फाइल रूपांतरण (इन-प्लेस संशोधन)
dos2unix filename.txt

# बैकअप के साथ रूपांतरण (.bak फाइल बनाता है)
dos2unix -b filename.txt

# कई फाइलों का रूपांतरण
dos2unix file1.txt file2.txt file3.txt

# वाइल्डकार्ड्स के साथ रूपांतरण
dos2unix *.txt
dos2unix content/post/2025/11/*/index.md

उन्नत विकल्प

# ड्राई रन - संशोधन के बिना पूर्वावलोकन
dos2unix --dry-run filename.txt

# संशोधन टाइमस्टैम्प बनाए रखें
dos2unix -k filename.txt

# केवल तभी रूपांतरण करें जब लाइन एंडिंग्स अलग हों
dos2unix -f filename.txt

# पुनरावर्ती रूपांतरण
find . -name "*.md" -exec dos2unix {} \;

# डायरेक्टरी ट्री में सभी मार्कडाउन फाइलों का रूपांतरण
find content/post -type f -name "*.md" -exec dos2unix {} \;

ह्यूगो पोस्ट्स का बैच प्रोसेसिंग:

# 2025 पोस्ट्स में सभी index.md फाइलों का रूपांतरण
dos2unix content/post/2025/**/index.md

# विशिष्ट डायरेक्टरीज को छोड़कर सभी मार्कडाउन फाइलों का रूपांतरण
find content/post -name "*.md" ! -path "*/drafts/*" -exec dos2unix {} \;

समाधान 2: sed कमांड

अधिकतम यूनिक्स सिस्टम पर उपलब्ध है, हालांकि बड़े बैच के लिए कम कुशल है।

# एकल फाइल रूपांतरण
sed -i 's/\r$//' filename.txt

# लूप के साथ कई फाइलों का रूपांतरण
for file in content/post/2025/11/*/index.md; do
    sed -i 's/\r$//' "$file"
done

# बैकअप के साथ रूपांतरण
sed -i.bak 's/\r$//' filename.txt

# पुनरावर्ती रूपांतरण के साथ find
find . -name "*.txt" -exec sed -i 's/\r$//' {} \;

महत्वपूर्ण नोट्स

  • sed -i फाइलों को इन-प्लेस संशोधित करता है
  • macOS पर, sed -i '' 's/\r$//' filename.txt का उपयोग करें
  • प्रोसेसिंग के दौरान अस्थायी फाइलों का निर्माण करता है
  • बड़े फाइल सेट के लिए dos2unix से धीमा है

समाधान 3: tr कमांड

डेटा प्रोसेसिंग वर्कफ्लो में उपयोगी पाइप-आधारित दृष्टिकोण:

# बेसिक रूपांतरण (आउटपुट रिडायरेक्शन की आवश्यकता है)
tr -d '\r' < input.txt > output.txt

# पाइपलाइन में प्रोसेस और रूपांतरण
cat input.txt | tr -d '\r' | process_data.sh

# इन-प्लेस संशोधन नहीं कर सकता - टेम्प फाइल का उपयोग करें
tr -d '\r' < input.txt > temp.txt && mv temp.txt input.txt

लाभ

  • सभी यूनिक्स सिस्टम पर उपलब्ध
  • स्ट्रीमिंग डेटा के लिए उत्कृष्ट
  • पाइप्स में अच्छी तरह से एकीकृत

हानियाँ

  • फाइलों को इन-प्लेस संशोधित नहीं कर सकता
  • बैकअप हैंडलिंग के लिए मैनुअल आवश्यकता
  • बैच ऑपरेशन्स के लिए कम सुविधाजनक

समाधान 4: awk का उपयोग

जटिल टेक्स्ट प्रोसेसिंग के लिए विकल्प:

awk '{sub(/\r$/,"")}1' input.txt > output.txt

# या अधिक स्पष्ट रूप से:
awk 'BEGIN{RS="\r\n"} {print}' input.txt > output.txt

तुलना टेबल

उपकरण इन-प्लेस बैच बैकअप गति उपलब्धता
dos2unix तेज स्थापना की आवश्यकता
sed मध्यम बिल्ट-इन
tr तेज बिल्ट-इन
awk मध्यम बिल्ट-इन

रोकथाम रणनीतियाँ

फाइलों को बार-बार रूपांतरित करने से अधिक कुशल है विंडोज लाइन एंडिंग्स को रोकना।

गिट कॉन्फ़िगरेशन

गिट को प्लेटफॉर्मों के बीच लाइन एंडिंग्स को स्वचालित रूप से सामान्यीकृत करने के लिए कॉन्फ़िगर करें।

विकल्प 1: रिपॉजिटरी-स्तर (.gitattributes)

रिपॉजिटरी रूट में .gitattributes बनाएँ:

# टेक्स्ट फाइलों का स्वचालित पता लगाना और LF में सामान्यीकृत करना
* text=auto

# स्पष्ट रूप से टेक्स्ट फाइलों का घोषणा
*.md text
*.txt text
*.sh text eol=lf
*.py text eol=lf
*.go text eol=lf
*.js text eol=lf
*.json text eol=lf

# बाइनरी फाइलों
*.jpg binary
*.png binary
*.pdf binary

यह सुनिश्चित करता है कि प्लेटफॉर्म के बावजूद लाइन एंडिंग्स में संगतता है और अनावश्यक रूपांतरणों को रोकता है।

विकल्प 2: ग्लोबल यूज़र कॉन्फ़िगरेशन

सभी रिपॉजिटरीज के लिए गिट व्यवहार कॉन्फ़िगर करें:

# लिनक्स/मैकOS: कमिट पर CRLF को LF में बदलें, LF को अपरिवर्तित छोड़ें
git config --global core.autocrlf input

# विंडोज: चेकआउट पर LF को CRLF में बदलें, कमिट पर CRLF को LF में बदलें
git config --global core.autocrlf true

# स्वचालित रूपांतरण को निष्क्रिय करें (केवल .gitattributes पर भरोसा करें)
git config --global core.autocrlf false

सिफारिश की गई सेटअप

  • लिनक्स/मैकOS डेवलपर्स: core.autocrlf input
  • विंडोज डेवलपर्स: core.autocrlf true
  • सभी प्रोजेक्ट्स: स्पष्ट नियंत्रण के लिए .gitattributes का उपयोग करें

मौजूदा रिपॉजिटरी को सामान्यीकृत करना

अगर आपकी रिपॉजिटरी पहले से ही मिश्रित लाइन एंडिंग्स के साथ है:

# गिट इंडेक्स से सभी फाइलों को हटा दें
git rm --cached -r .

# सामान्यीकृत लाइन एंडिंग्स के साथ फाइलों को पुनर्स्थापित करें
git reset --hard

# सामान्यीकृत फाइलों को कमिट करें
git add .
git commit -m "लाइन एंडिंग्स को सामान्यीकृत करें"

एडिटर कॉन्फ़िगरेशन

टेक्स्ट एडिटर्स को डिफ़ॉल्ट रूप से यूनिक्स लाइन एंडिंग्स का उपयोग करने के लिए कॉन्फ़िगर करें।

विसुअल स्टूडियो कोड (settings.json)

{
  "files.eol": "\n",
  "files.encoding": "utf8",
  "files.insertFinalNewline": true,
  "files.trimTrailingWhitespace": true
}

अगर आवश्यक हो तो प्रति-लैंग्वेज सेट करें:

{
  "[markdown]": {
    "files.eol": "\n"
  }
}

विम/नियोविम (.vimrc)

set fileformat=unix
set fileformats=unix,dos

एमैक्स (.emacs या init.el)

(setq-default buffer-file-coding-system 'utf-8-unix)

सबलाइम टेक्स्ट (Preferences.sublime-settings)

{
  "default_line_ending": "unix"
}

जेटब्रेन्स आईडीई (सेटिंग्स → एडिटर → कोड स्टाइल)

  • लाइन सेपरेटर: यूनिक्स और मैकOS (\n)

एडिटरकॉन्फ़िग

प्रोजेक्ट रूट में क्रॉस-एडिटर संगतता के लिए .editorconfig बनाएँ:

root = true

[*]
end_of_line = lf
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{sh,bash}]
end_of_line = lf

[*.bat]
end_of_line = crlf

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

ऑटोमेशन और स्क्रिप्टिंग

विकास वर्कफ्लो में लाइन एंडिंग चेक्स को एकीकृत करें ताकि समस्याएँ जल्द पहचानी जा सकें।

प्री-कमिट गिट हुक

.git/hooks/pre-commit बनाएँ:

#!/bin/bash
# CRLF लाइन एंडिंग्स वाले फाइलों के लिए खोजें

FILES=$(git diff --cached --name-only --diff-filter=ACM)
CRLF_FILES=""

for FILE in $FILES; do
    if file "$FILE" | grep -q "CRLF"; then
        CRLF_FILES="$CRLF_FILES\n  $FILE"
    fi
done

if [ -n "$CRLF_FILES" ]; then
    echo "त्रुटि: निम्नलिखित फाइलों में विंडोज लाइन एंडिंग्स (CRLF) हैं:"
    echo -e "$CRLF_FILES"
    echo ""
    echo "उन्हें रूपांतरित करें: dos2unix <filename>"
    echo "या अपने एडिटर को यूनिक्स लाइन एंडिंग्स (LF) का उपयोग करने के लिए कॉन्फ़िगर करें"
    exit 1
fi

exit 0

एक्सीक्यूटेबल बनाएँ:

chmod +x .git/hooks/pre-commit

कंटीन्यूअस इंटीग्रेशन चेक

सीआई पाइपलाइन में जोड़ें (गिटहब एक्शन्स उदाहरण):

name: Check Line Endings

on: [push, pull_request]

jobs:
  check-line-endings:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: CRLF लाइन एंडिंग्स के लिए खोजें
        run: |
          if git ls-files | xargs file | grep CRLF; then
            echo "त्रुटि: CRLF लाइन एंडिंग्स वाले फाइलों का पता चलता है"
            exit 1
          fi          

बैच रूपांतरण स्क्रिप्ट

प्रोजेक्ट रखरखाव के लिए convert-line-endings.sh बनाएँ:

#!/bin/bash
# प्रोजेक्ट में सभी टेक्स्ट फाइलों को यूनिक्स लाइन एंडिंग्स में रूपांतरित करें

set -e

EXTENSIONS=("md" "txt" "sh" "py" "go" "js" "json" "yml" "yaml" "toml")

echo "लाइन एंडिंग्स को यूनिक्स फॉर्मेट में रूपांतरित कर रहा है..."

for ext in "${EXTENSIONS[@]}"; do
    echo "*.$ext फाइलों का प्रोसेसिंग कर रहा है..."
    find . -name "*.$ext" ! -path "*/node_modules/*" ! -path "*/.git/*" \
        -exec dos2unix {} \; 2>/dev/null || true
done

echo "रूपांतरण पूरा हो गया!"

सामान्य समस्याओं का समाधान

समस्या 1: रूपांतरण के बाद भी स्क्रिप्ट विफल रहती है

लक्षण: dos2unix के साथ परिवर्तित बाश स्क्रिप्ट अभी भी इंटरप्रेटर त्रुटियाँ दिखाता है।

समाधान: फ़ाइल एन्कोडिंग और बाइट ऑर्डर मार्क (BOM) की जाँच करें:

# एन्कोडिंग की जाँच
file -i script.sh

# अगर उपस्थित हो तो BOM हटाएँ
sed -i '1s/^\xEF\xBB\xBF//' script.sh

# शेबैंग लाइन की पुष्टि करें
head -n 1 script.sh | od -c

समस्या 2: एक ही फ़ाइल में मिश्रित लाइन एंडिंग्स

लक्षण: फ़ाइल में दोनों CRLF और LF एंडिंग्स दिखाई देते हैं।

समाधान: dos2unix फोर्स मोड के साथ सामान्यीकृत करें:

dos2unix -f filename.txt

या अधिक आक्रामक sed का उपयोग करें:

# पहले सभी CR को खाली करें, फिर सामान्यीकृत करें
sed -i 's/\r//g' filename.txt

समस्या 3: Git अभी भी फ़ाइल को संशोधित दिखाता है

लक्षण: लाइन एंडिंग्स के परिवर्तन के बाद भी Git फ़ाइल को संशोधित दिखाता है बिना किसी स्पष्ट परिवर्तन के।

समाधान: Git इंडेक्स को रिफ्रेश करें:

git add -u
git status

# अगर अभी भी दिख रहा है, तो Git कॉन्फ़िगरेशन की जाँच करें
git config core.autocrlf

# अस्थायी रूप से autocrlf को निष्क्रिय करें
git config core.autocrlf false
git add -u

समस्या 4: रूपांतरण के बाद Hugo बिल्ड विफल हो जाता है

लक्षण: लाइन एंडिंग परिवर्तन के बाद Hugo फ्रंटमैटर को पार्स नहीं कर पाता।

समाधान: Unicode BOM और फ्रंटमैटर सिंटैक्स की जाँच करें:

# मार्कडाउन फ़ाइलों से BOM हटाएँ
find content -name "*.md" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;

# YAML फ्रंटमैटर की पुष्टि करें
hugo --debug

समस्या 5: dos2unix उपलब्ध नहीं है

लक्षण: सिस्टम में dos2unix उपलब्ध नहीं है और आप पैकेज इंस्टॉल नहीं कर सकते।

समाधान: पोर्टेबल शेल फ़ंक्शन का उपयोग करें:

dos2unix_portable() {
    sed -i.bak 's/\r$//' "$1" && rm "${1}.bak"
}

dos2unix_portable filename.txt

Hugo साइट्स के लिए विशेष मामले

Hugo स्टैटिक साइट्स के लिए लाइन एंडिंग्स के लिए विशेष विचार, विशेष रूप से कंटेंट फ़ाइलों और कॉन्फ़िगरेशन में होते हैं।

Hugo कंटेंट का रूपांतरण

# सभी मार्कडाउन कंटेंट फ़ाइलों का रूपांतरण
find content -name "*.md" -exec dos2unix {} \;

# कॉन्फ़िगरेशन फ़ाइलों का रूपांतरण
dos2unix config.toml config.yaml

# i18n अनुवाद फ़ाइलों का रूपांतरण
find i18n -name "*.yaml" -exec dos2unix {} \;

# लेआउट टेम्प्लेट्स का रूपांतरण
find layouts -name "*.html" -exec dos2unix {} \;

फ्रंटमैटर का प्रबंधन

YAML फ्रंटमैटर लाइन एंडिंग समस्याओं के लिए विशेष रूप से संवेदनशील होता है। समंजस्य सुनिश्चित करें:

# फ्रंटमैटर वाले फ़ाइलों की जाँच
for file in content/post/**/index.md; do
    if head -n 1 "$file" | grep -q "^---$"; then
        file "$file"
    fi
done | grep CRLF

Hugo बिल्ड स्क्रिप्ट्स

सुनिश्चित करें कि बिल्ड और डिप्लॉयमेंट स्क्रिप्ट Unix लाइन एंडिंग्स का उपयोग करते हैं:

dos2unix deploy.sh build.sh
chmod +x deploy.sh build.sh

प्रदर्शन विचार

हजारों फ़ाइलों वाले बड़े प्रोजेक्ट्स के लिए, रूपांतरण प्रदर्शन महत्वपूर्ण है।

बेंचमार्क तुलना

1000 मार्कडाउन फ़ाइलों का रूपांतरण:

# dos2unix: ~2 सेकंड
time find . -name "*.md" -exec dos2unix {} \;

# sed: ~8 सेकंड
time find . -name "*.md" -exec sed -i 's/\r$//' {} \;

# पैरालेल dos2unix: ~0.5 सेकंड
time find . -name "*.md" -print0 | xargs -0 -P 4 dos2unix

पैरालेल प्रोसेसिंग

बैच रूपांतरण के लिए तेज़ी से GNU Parallel या xargs का उपयोग करें:

# xargs के साथ पैरालेल एक्सीक्यूशन
find . -name "*.md" -print0 | xargs -0 -P 8 dos2unix

# GNU Parallel का उपयोग
find . -name "*.md" | parallel -j 8 dos2unix {}

क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट के सर्वोत्तम प्रथाएँ

शुरू से ही लाइन एंडिंग समस्याओं को रोकने के लिए टीम कन्वेंशन स्थापित करें।

1. रिपॉजिटरी सेटअप चेकलिस्ट

  • .gitattributes के साथ टेक्स्ट फ़ाइल घोषणाएँ जोड़ें
  • टीम दस्तावेज़ में core.autocrlf सेट करें
  • रिपॉजिटरी में .editorconfig शामिल करें
  • वैलिडेशन के लिए प्री-कमिट हुक्स जोड़ें
  • README में लाइन एंडिंग नीति का दस्तावेज़ीकरण करें

2. टीम ऑनबोर्डिंग

नए टीम सदस्यों को कॉन्फ़िगरेशन करना चाहिए:

# रिपॉजिटरी क्लोन करें
git clone <repository>
cd <repository>

# Git कॉन्फ़िगरेशन
git config core.autocrlf input  # Linux/macOS
git config core.autocrlf true   # Windows

# सेटअप की पुष्टि करें
git config --list | grep autocrlf
cat .gitattributes

3. कोड रिव्यू गाइडलाइन्स

  • लाइन एंडिंग-ओनली परिवर्तनों वाले PR को अस्वीकृत करें
  • रिव्यू के लिए git diff --ignore-cr-at-eol का उपयोग करें
  • CI/CD में लाइन एंडिंग चेक्स को सक्षम करें

4. दस्तावेज़ीकरण

प्रोजेक्ट README में शामिल करें:


## लाइन एंडिंग कन्वेंशन

इस प्रोजेक्ट में सभी टेक्स्ट फ़ाइलों के लिए Unix लाइन एंडिंग्स (LF) का उपयोग किया जाता है।

**सेटअप:**

- Linux/macOS: git config core.autocrlf input
- Windows: git config core.autocrlf true

**फ़ाइलों का रूपांतरण:**
dos2unix filename.txt

फ़ाइल-विशिष्ट कॉन्फ़िगरेशन के लिए .gitattributes देखें।

संबंधित Hugo और Linux विषय

प्लेटफ़ॉर्मों के बीच टेक्स्ट फ़ाइलों के साथ काम करना विभिन्न संबंधित टूल्स और वर्कफ़्लो को समझने का मतलब है। यहां संबंधित विषयों में गहराई से जाने के लिए संसाधन हैं:

बाहरी संसाधन

इन प्राधिकृत स्रोतों ने इस लेख के लिए तकनीकी विवरण और सर्वोत्तम प्रथाएँ प्रदान की हैं: