Linux ΠΊΠΎΠΌΠ°Π½Π΄Π° `dos2unix`: ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΠΊΡΠΈΡΠΈ Windows ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Windows ΠΈ Linux ΡΠΈΡΡΠ΅ΠΌΠΈ, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π±Π΅Π·ΡΡΠΌΠ½ΠΎ Π΄Π° ΠΏΠΎΠ²ΡΠ΅Π΄ΡΡ Π²Π°ΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ° Π² Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ Π²ΡΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠ°ΡΠΊΠΈΡΠ° ΠΊΡΠ°Ρ Π½Π° ΡΠ΅Π΄: Windows ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ carriage return + line feed (rn, ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΎΡΠ΅ ΠΊΠ°ΡΠΎ CRLF), Π΄ΠΎΠΊΠ°ΡΠΎ Linux ΠΎΡΠ°ΠΊΠ²Π° ΡΠ°ΠΌΠΎ line feed (n, ΠΈΠ»ΠΈ LF). Π’ΠΎΠ·ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠΈΠΌΠ²ΠΎΠ» r β Π½Π΅Π²ΠΈΠ΄ΠΈΠΌ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ β ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΡΠΈΠ½ΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ
Π½Π° ΡΠ΅Π» ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Ρ ΠΊΡΠΈΠΏΡΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ, Π΄Π° Π½Π°ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠΈ ΠΈ Π΄Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ ΠΈΠ·Ρ
ΠΎΠ΄ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅ΠΊΡΡ ΠΊΠ°ΡΠΎ awk, sed ΠΈ grep.
ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° dos2unix Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π’Ρ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π° Windows-ΡΡΠΈΠ» CRLF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΎΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π³ΠΈ Π·Π°ΠΌΠ΅Π½Ρ Ρ Unix-ΡΡΠΈΠ» LF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ, ΠΏΡΠ°Π²Π΅ΠΉΠΊΠΈ Π²Π°ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Ρ Linux ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ°. Π’ΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΠ±Ρ
Π²Π°ΡΠ° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅: ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ dos2unix ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ°, ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Linux Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ, ΠΏΡΠ»Π½ΠΈΡ ΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΈ, ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ.
ΠΠ°ΠΊΠ²ΠΎ Π΅ dos2unix ΠΈ Π·Π°ΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ?
dos2unix Π΅ Π»Π΅ΠΊΠ°, Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄, ΠΊΠΎΡΡΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ DOS/Windows ΡΠΎΡΠΌΠ°Ρ (CRLF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅) ΠΊΡΠΌ Unix/Linux ΡΠΎΡΠΌΠ°Ρ (LF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅). ΠΠΎΠΆΠ΅ ΡΡΡΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ (unix2dos), Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ Mac ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ (ΡΠ°ΠΌΠΎ CR) ΠΈ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° Π±ΠΈΠ½Π°ΡΠ½ΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ°ΡΠΎ ΡΠΊΡΠΈΡΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ r ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°Ρ ΡΠ΅Π°Π»Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ
Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Bash ΡΠΊΡΠΈΠΏΡ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½ Π½Π° Windows ΠΌΠ°ΡΠΈΠ½Π°. ΠΠΎΠ³Π°ΡΠΎ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Linux, ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΡΠΎ:
bash: ./deploy.sh: /bin/bash^M: bad interpreter: No such file or directoryΠ’ΠΎΠ²Π° ^M Π΅ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° r. Π¨Π΅Π»ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π·Π°ΡΠΎΡΠΎ shebang ΡΠ΅Π΄ΡΡ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΊΡΠΈΡ carriage return. ΠΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, cron Π·Π°Π΄Π°ΡΠΈ, .env ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Nginx ΠΈΠ»ΠΈ Apache ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π΄ΡΡΠΆΠ°Ρ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ Windows ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅.
Π’ΠΎΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π² ΡΡΡΠ²ΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ. ΠΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΡΠ΅Π΄Π° Π·Π° VPS Π₯ΠΎΡΡΠΈΠ½Π³ ΠΈΠ»ΠΈ Dedicated ΡΡΡΠ²ΡΡ, ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΏΡΠ΅ ΡΡΠ»ΡΠ³ΠΈΡΠ΅. ΠΠ½Π°Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ.
ΠΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ dos2unix Π½Π° Linux
ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Linux Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ dos2unix Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΡΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π²Π°ΡΠ°ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡ:
Debian / Ubuntu
sudo apt-get update && sudo apt-get install dos2unixCentOS / RHEL / AlmaLinux / Rocky Linux
sudo yum install dos2unixFedora
sudo dnf install dos2unixArch Linux
sudo pacman -S dos2unixopenSUSE
sudo zypper install dos2unixΠ‘Π»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ Π΅ Π½Π°Π»ΠΈΡΠ½ΠΎ:
dos2unix --versionΠΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Windows ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ dos2unix, Π΅ Π΄ΠΎΠ±ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈΡΠ΅, ΡΠ΅ Π΄Π°Π΄Π΅Π½ ΡΠ°ΠΉΠ» Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ° CRLF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅. ΠΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ°Π±ΠΎΡΡΡ Π΄ΠΎΠ±ΡΠ΅:
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° file:
file filename.txtΠΠ·Ρ
ΠΎΠ΄ΡΡ Π·Π° ΡΠ°ΠΉΠ» Π² Windows ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° CRLF line terminators.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° cat -A:
cat -A filename.txtWindows ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ ^M$ Π² ΠΊΡΠ°Ρ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅Π΄. Unix ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΠ°ΠΌΠΎ $.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° hexdump:
hexdump -C filename.txt | grep -i "0d 0a"ΠΠ°ΠΉΡΠΎΠ²Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ 0d 0a Π΅ ΡΠ΅ΡΡΠ½Π°Π΄Π΅ΡΠ΅ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° rn.
ΠΡΠ»Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° dos2unix
dos2unix [options] [input_file] [output_file]ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° ΡΠ°ΠΌΠΎ Ρ Π²Ρ
ΠΎΠ΄Π΅Π½ ΡΠ°ΠΉΠ», dos2unix ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° ΡΠ°ΠΉΠ»Π° Π½Π° ΠΌΡΡΡΠΎ, ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°. ΠΠΎΠ³Π°ΡΠΎ ΡΠ° Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΈ Π²Ρ
ΠΎΠ΄Π΅Π½, ΠΈ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΡΠ°ΠΉΠ», ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΡ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° Π² Π½ΠΎΠ²ΠΈΡ ΡΠ°ΠΉΠ».
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ Ρ ΠΎΠΏΡΠΈΠΈ Π½Π° dos2unix
| ΠΠΏΡΠΈΡ | ΠΡΠ»Π³Π° ΡΠΎΡΠΌΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|---|
-o | --oldfile | ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΡΠ°Ρ (Π½Π° ΠΌΡΡΡΠΎ) ΡΠ΅ΠΆΠΈΠΌ β ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ |
-n | --newfile | ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° Π² Π½ΠΎΠ² ΡΠ°ΠΉΠ», Π·Π°ΠΏΠ°Π·Π²Π°ΠΉΠΊΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π° |
-c | --convmode | ΠΠ°Π΄Π°Π²Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅: unix, dos ΠΈΠ»ΠΈ mac |
-k | --keep-timestamp | ΠΠ°ΠΏΠ°Π·Π²Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈΡ ΠΏΠ΅ΡΠ°Ρ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΡΠ°ΠΉΠ» |
-q | --quiet | ΠΠΎΡΠΈΡΠΊΠ° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ |
-v | --verbose | ΠΡΠΏΠ΅ΡΠ°ΡΠ²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ |
-l | --newline | ΠΠΎΠ±Π°Π²Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠΈΠΌΠ²ΠΎΠ» Π·Π° Π½ΠΎΠ² ΡΠ΅Π΄ |
-s | --safe | ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ |
-f | --force | ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ |
-b | --keep-bom | ΠΠ°ΠΏΠ°Π·Π²Π° Byte Order Mark (BOM), Π°ΠΊΠΎ Π΅ Π½Π°Π»ΠΈΡΠ΅ |
-r | --remove-bom | ΠΡΠ΅ΠΌΠ°Ρ Π²Π° Byte Order Mark (BOM) |
-V | --version | ΠΠΎΠΊΠ°Π·Π²Π° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° ΠΈ ΠΈΠ·Π»ΠΈΠ·Π° |
-h | --help | ΠΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ |
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° dos2unix
1. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» Π½Π° ΠΌΡΡΡΠΎ
ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° β ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΡ Ρ Unix-ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
dos2unix filename.txtΠ€Π°ΠΉΠ»ΡΡ ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΠ²Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ²Π°, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
2. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² Π½ΠΎΠ² ΡΠ°ΠΉΠ»
ΠΠ° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Ρ
ΠΎΠ΄ Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΉΠ», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ»Π°Π³Π° -n (ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π½ΠΎΠ² ΡΠ°ΠΉΠ»):
dos2unix -n filename.txt converted_filename.txtΠ’ΠΎΠ²Π° ΡΠ΅ΡΠ΅ filename.txt, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ° Π³ΠΎ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π² converted_filename.txt. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΡ ΠΎΡΡΠ°Π²Π° Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½.
3. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π°Π²Π΅Π΄Π½ΡΠΆ
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½Π° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
dos2unix file1.txt file2.txt file3.txtΠΡΠΈΡΠΊΠΈ ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Ρ Π½Π° ΠΌΡΡΡΠΎ. Π’ΠΎΠ²Π° Π΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π·Π° Π³ΡΡΠΏΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ Ρ ΠΌΠ°Π»ΡΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
4. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ .txt ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ΅Π» Π³Π»ΠΎΠ±ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ find Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ:
dos2unix *.txtΠΠ»ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π² ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ:
find /path/to/directory -type f -name "*.txt" -exec dos2unix {} ;Π’ΠΎΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ, ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Π½Π° Windows ΠΌΠ°ΡΠΈΠ½Π°.
5. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π» ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅
Π§Π΅ΡΡΠ° Π·Π°Π΄Π°ΡΠ° Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ β ΠΏΠΎΠΏΡΠ°Π²ΡΠ½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ Bash ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ:
find /var/www/myapp -type f -name "*.sh" -exec dos2unix {} ;6. ΠΠ°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°Ρ Π½Π° ΡΠ°ΠΉΠ»Π°
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ dos2unix Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ°ΠΉΠ»Π°. ΠΠ° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°Ρ (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ make ΡΠ°Π·ΡΠΈΡΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°ΡΠΈ):
dos2unix -k filename.txt7. Π’ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ β ΠΏΠΎΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄
ΠΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΡΠ΅Π» ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π΄Π° ΠΏΡΠ΅ΡΡΡΠΏΠ²Π°Ρ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅:
dos2unix -q filename.txt8. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ ΠΊΡΠΌ Mac ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ (ΡΠ°ΠΌΠΎ CR)
ΠΠ°ΠΊΠ°Ρ ΡΡΠ΄ΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ» ΠΊΡΠΌ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ Mac OS 9 ΡΠΎΡΠΌΠ°Ρ (ΡΠ°ΠΌΠΎ carriage return, r) Ρ ΡΠ»Π°Π³Π° Π·Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ -c:
dos2unix -c mac filename.txt9. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ ΠΎΡ Unix ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊΡΠΌ DOS ΡΠΎΡΠΌΠ°Ρ
dos2unix ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Π·Π°Π΅Π΄Π½ΠΎ Ρ unix2dos, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° CRLF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Windows:
unix2dos filename.txt10. ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Byte Order Mark (BOM)
Π€Π°ΠΉΠ»ΠΎΠ²Π΅, Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ ΠΎΡ Windows ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π²ΠΊΠ»ΡΡΠ²Π°Ρ UTF-8 BOM Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° Linux. ΠΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π³ΠΎ Ρ:
dos2unix -r filename.txtΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° dos2unix Π² ΡΠ΅Π» ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
dos2unix ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° ΡΠΈΡΡΠΎ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ ΠΈ CI/CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΊΡΠΈΠΏΡ Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π½ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π²Π»ΡΠ·Π°Ρ Π² ΡΠΏΠΎΡΡΠ΅Π±Π°:
#!/bin/bash
# pre-deploy-sanitize.sh
# Converts all text files to Unix format before deployment
TARGET_DIR="/var/www/myapp"
echo "Sanitizing line endings in $TARGET_DIR..."
find "$TARGET_DIR" -type f ( -name "*.sh" -o -name "*.conf" -o -name "*.php" -o -name "*.py" ) | while read -r file; do
dos2unix -q -k "$file"
echo "Converted: $file"
done
echo "Done. All files converted to Unix format."ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΈ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ Π²Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅:
chmod +x pre-deploy-sanitize.sh
./pre-deploy-sanitize.shΠ§Π΅ΡΡΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ
dos2unix: command not found
ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π½Π΅ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°. ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π·Π° Π²Π°ΡΠ°ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡ (Π²ΠΈΠΆΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΏΠΎ-Π³ΠΎΡΠ΅).
dos2unix: Binary file ... is skipped
dos2unix Π΅ ΠΎΡΠΊΡΠΈΠ», ΡΠ΅ ΡΠΌΡΡΠ° Π·Π° Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠ°ΠΉΠ» ΠΈ Π³ΠΎ Π΅ ΠΏΡΠΎΠΏΡΡΠ½Π°Π». ΠΠΊΠΎ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ ΡΠ°ΠΉΠ»ΡΡ Π΅ ΡΠ΅ΠΊΡΡΠΎΠ², ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΉΡΠ΅ Ρ:
dos2unix -f filenameΠ‘ΠΊΡΠΈΠΏΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ ΡΠ»Π΅Π΄ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΈΠ»ΠΎ:
file filename.shΠ‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΡΠΈΡΠ° ASCII text ΠΈΠ»ΠΈ UTF-8 Unicode text Π±Π΅Π· ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½Π΅ Π½Π° CRLF. ΠΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π·Π° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ΡΠΎ Ρ hexdump.
ΠΡΠΊΠ°Π·Π°Π½ Π΄ΠΎΡΡΡΠΏ
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅:
sudo dos2unix /etc/nginx/nginx.confdos2unix ΡΡΠ΅ΡΡ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ
ΠΠΎΠΊΠ°ΡΠΎ dos2unix Π΅ Π½Π°ΠΉ-ΡΠΈΡΡΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΠ½ΠΈΡΠ΅ Linux Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π±ΡΡΠ·ΠΈ Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½ΠΈΡ:
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° sed:
sed -i 's/r//' filename.txtΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° tr:
tr -d 'r' < input.txt > output.txtΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° awk:
awk '{ sub("r$", ""); print }' filename.txt > output.txtΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° vim:
:set ff=unix
:wqΠ’Π΅Π·ΠΈ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ ΡΠ°Π±ΠΎΡΡΡ, Π½ΠΎ dos2unix Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π³ΡΠ°Π½ΠΈΡΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΈ (ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ Π½Π° BOM ΠΈ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) ΠΏΠΎ-Π΅Π»Π΅Π³Π°Π½ΡΠ½ΠΎ ΠΈ Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°.
ΠΠ½Π°ΡΠΈΠΌΠΎΡΡ Π·Π° ΡΠ΅Π± Ρ ΠΎΡΡΠΈΠ½Π³ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠΈ
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ Π½Π΅ ΡΠ° ΡΠ°ΠΌΠΎ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ β ΡΠ΅ ΡΠ° ΡΠ΅Π°Π»Π΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄ΠΈ. PHP ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Ρ CRLF ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π°Ρ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ Π±Π΅Π»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π² HTTP Ρ
Π΅Π΄ΡΡΠΈ, ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΈ Π½Π° ΡΠ΅ΡΠΈΠΈ ΠΈ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ. Python WSGI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Ρ
Π²ΡΡΠ»ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Nginx ΠΈ Apache ΡΡΡ ΡΠΊΡΠΈΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ r ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΠΏΡΠ΅ΡΠ°Ρ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠΎ.
ΠΠΊΠΎ Ρ
ΠΎΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π±ΡΠ°ΠΉΡΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ»Π°Π½ Π·Π° Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΡΠ΅Π± Ρ
ΠΎΡΡΠΈΠ½Π³ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ VPS Ρ cPanel, Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° dos2unix Π² ΡΠ°Π±ΠΎΡΠ½ΠΈΡ Π²ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅ ΠΏΡΠΎΡΡΠ°, Π²ΠΈΡΠΎΠΊΠΎΡΡΠΎΠΉΠ½ΠΎΡΡΠ½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. ΠΠ° Π΅ΠΊΠΈΠΏΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½ΠΈΡ Π½Π° Dedicated ΡΡΡΠ²ΡΡΠΈ, Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° dos2unix ΠΊΡΠΌ Π²Π°ΡΠΈΡ CI/CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΡΠ» ΠΊΠ»Π°Ρ Π³ΡΠ΅ΡΠΊΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΡΡΠ΅Π΄Π°ΡΠ°, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π²Π°ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΠΌΠ΅ΠΉΠ» Ρ ΠΎΡΡΠΈΠ½Π³ Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΠ°, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ Unix ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ Π² ΡΠ΅Π·ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π΅ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΡΠ°ΡΠΊΠΎ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎ ΡΠ΅Π·ΡΠΌΠ΅
| ΠΠ°Π΄Π°ΡΠ° | ΠΠΎΠΌΠ°Π½Π΄Π° |
|---|---|
| ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ» Π½Π° ΠΌΡΡΡΠΎ | dos2unix filename.txt |
| ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² Π½ΠΎΠ² ΡΠ°ΠΉΠ» | dos2unix -n input.txt output.txt |
| ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ | dos2unix file1.txt file2.txt file3.txt |
Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ .sh ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ | find . -name "*.sh" -exec dos2unix {} ; |
| ΠΠ°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°Ρ | dos2unix -k filename.txt |
| Π’ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ (Π±Π΅Π· ΠΈΠ·Ρ ΠΎΠ΄) | dos2unix -q filename.txt |
| ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° BOM | dos2unix -r filename.txt |
| ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ ΠΊΡΠΌ Mac ΡΠΎΡΠΌΠ°Ρ | dos2unix -c mac filename.txt |
| ΠΠ±ΡΠ°ΡΠ½ΠΎ: Unix ΠΊΡΠΌ DOS | unix2dos filename.txt |
| ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ | file filename.txt ΠΈΠ»ΠΈ cat -A filename.txt |
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° dos2unix Π΅ ΠΌΠ°Π»ΠΊΠ° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Ρ Π½Π΅ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»Π½ΠΎ Π³ΠΎΠ»ΡΠΌΠΎ Π²ΡΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π² ΠΊΡΠΎΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠΈ. Π‘ΠΊΡΠΈΡΠΈΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ r ΡΠ° Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΎΡ ΡΠΈΠΏΠ° βΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΌΠΎΡΡΠ° ΠΌΠ°ΡΠΈΠ½Π°β, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Ρ ΠΌΠ΅ΠΆΠ΄Ρ Windows ΠΈ Linux ΡΡΠ΅Π΄ΠΈ β ΠΈ dos2unix Π³ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΠΈΡΡΠΎ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠ°ΡΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΈΡΠ΅ ΠΌΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΠ΅ Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΈ ΠΏΡΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅, Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈΡΠ΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΈ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΡΠ»Π°ΡΠ° ΡΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠ°ΡΠ²Π°Ρ ΠΊΠΎΠ΄ Π½Π° Linux ΡΡΡΠ²ΡΡ, ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΡΠ»ΠΎΡΠ° ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊ Π½Π° ΡΠ°ΠΉΡ, ΠΊΠ°ΡΠ²Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄Π°, Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° dos2unix Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ Π²ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π΅ Π»Π΅ΡΠ½Π° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ Π½ΠΎΡΠΈ Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½ΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠ΅ΡΠΈΡΠ°Ρ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ