Форма :+
является формой расширения параметра:
${параметр:+[слово]} : Использовать альтернативное значение.
Если параметр не задан или 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
.
В других ответах показано, как загрузить и скомпилировать 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
.
Прежде всего, вы загрузили исполняемый файл 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
Вам нужно загрузить конкретные RPM с веб-сайта ОС. Например, для CentOS загрузите файл RPM из http://vault.centos.org/
Необходимо загрузить исходный код и скомпилировать его.
Вот — исходный код.
Чтобы разарбоксовать его, выполните: (VERSION равна версии, которую вы скачали)
tar xvf dos2unix-VERSION.tar.gz
Finaly execute:
make
Если компиляция прошла успешно, появится исполняемый файл с именем dos2unix и unix2dos.
Загрузите 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.