Как установить dos2unix на Linux без root-доступа?

Форма :+ является формой расширения параметра:

${параметр:+[слово]} : Использовать альтернативное значение.

Если параметр не задан или null, будет подставлен null; в противном случае будет использовано расширение слова (или пустая строка, если слово опущено) будет заменено.

Другими словами, если переменная $var определена, то echo ${var:+foo} выведет foo, а если нет, то пустую строку.

Второй : не представляет собой ничего особенного. Это символ, используемый в качестве разделителя в списке каталогов в $PATH. Так, PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}" - это сокращенный способ написать:

if [ -z "$PATH" ]; then
    PATH=/usr/local/bin:/usr/bin
else
    PATH=/usr/local/bin:/usr/bin:$PATH
fi

Это просто хитрый трюк, чтобы избежать добавления лишнего :, когда $PATH не установлен. Например:

$ PATH="/usr/bin"
$ PATH="/new/dir:$PATH" ## Add a directory
$ echo "$PATH"
/new/dir:/usr/bin

Но если PATH не установлен:

$ unset PATH
$ PATH="/new/dir:$PATH"
$ echo "$PATH"
/new/dir:

А : сам по себе добавляет текущий каталог к $PATH. Использование PATH="/new/dir${PATH:+:$PATH}" позволяет избежать этого. Конечно, вы можете использовать PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin", если хотите, или вы можете использовать PATH="$PATH:/usr/local/bin:/usr/bin", если предпочитаете. Единственное различие заключается в том, что в первом случае может добавиться дополнительный :, тем самым добавляя ваш текущий каталог в $PATH.

4
18.04.2016, 12:50
5 ответов

В других ответах показано, как загрузить и скомпилировать dos2unix , но если вы просто хотите преобразовать файлы из окончаний строк в стиле DOS (CR-LF) к окончанию строк в стиле Unix, есть несколько других подходов, которые не должны включать установку чего-либо:

  • если у вас есть tr :

     tr -d '\ r'  output {{ 1}} 
  • если у вас есть Perl:

     perl -pi -e 's / \ r \ n / \ n / g' input 
     

    (который преобразует файл на месте, то же, что и dos2unix )

  • , если у вас есть sed :

     sed -i 's / ^ M $ //' input 
     

    где вы Нажмите Ctrl V , затем Ctrl M , чтобы получить ^ M .

9
27.01.2020, 20:47

Прежде всего, вы загрузили исполняемый файл dos2unix для windows (dos2unix-7.3.3-win32.zip), что вам не нужно, потому что вы используете Linux.

Попробуйте скачать исходный код dos2unix для Linux и извлечь его в свой домашний каталог:

mkdir $HOME/bin/
tar -zxvf dos2unix-7.3.3-src.tar.gz # the exact name of the downloaded file may vary
cd dos2unix-7.3.3
./configure --prefix=$HOME/bin/
make
make install

Если все пойдет хорошо, вы сможете найти файл dos2unix где-нибудь в вашем каталоге $HOME/bin. Вы можете использовать эту новую установку, набрав

$ ~/bin/dos2unix windows_formatted_file.txt
2
27.01.2020, 20:47

Вам нужно загрузить конкретные RPM с веб-сайта ОС. Например, для CentOS загрузите файл RPM из http://vault.centos.org/

-1
27.01.2020, 20:47

Необходимо загрузить исходный код и скомпилировать его.

Вот — исходный код.

Чтобы разарбоксовать его, выполните: (VERSION равна версии, которую вы скачали)

tar xvf dos2unix-VERSION.tar.gz

Finaly execute:

make

Если компиляция прошла успешно, появится исполняемый файл с именем dos2unix и unix2dos.

1
27.01.2020, 20:47

Загрузите dos2unix-7.3.3.tar.gz.

tar xvzf dos2unix-7.3.3.tar.gz
cd dos2unix-7.3.3
make install prefix=$HOME

Это установит dos2unix в $ HOME / bin /.

Для получения дополнительной информации см. INSTALL.txt.

1
27.01.2020, 20:47

Теги

Похожие вопросы