Как добавить разрыв строки внутри строки bash? [дубликат]

Когда вы создаете псевдоним, $testor не имеет значения, поэтому псевдоним будет

export testor=13;mkdir ~/Desktop/

Вы можете увидеть, во что расширяется псевдоним, с помощью псевдоним псевдоним.

Чтобы исправить это, используйте одинарные кавычки вместо двойных. Это откладывает расширение переменных и подстановку команд до тех пор, пока вы фактически не вызовете псевдоним.

Если вам не нужен $testor для чего-либо еще, просто используйте

alias tester='mkdir "$HOME/Desktop/$(date '+%d')"'

Читая ваши комментарии, это также сработает:

alias makedir='mkdir "$HOME/Desktop/$(date '+%d')"'
alias copyfile='cp somefile "$HOME/Desktop/$(date '+%d')"

Или, альтернативно, более сложная функция оболочки, которая позволяет копирование любого файла в папку (что вы никогда не сможете сделать с псевдонимом).

copyfile () {
    destfolder="$HOME/Desktop/$(date '+%d')"
    if [ -d "$destfolder" ]; then
        mkdir "$destfolder"
    fi
    cp "$1" "$destfolder"
}

Это определяет функцию с именем copyfile, которая будет использовать cp для копирования файла, указанного в командной строке, в папку с отметкой даты. Если папка не существует, она создается.

0
03.01.2017, 10:42
3 ответа

Здесь есть (как минимум) три варианта.

  1. Используйте буквальный перевод строки:
bash -c "echo '
Hello' > /location/file"
  1. Используйте printf (или нестандартный echo -e ), который расширяет экранированные символы обратной косой черты как часть самих команд (из которых оба являются встроенными командами оболочки):
bash -c "printf '\n%s\n' Hello > /location/file"
  1. Используйте нестандартные кавычки bash $ ', которые расширяют экранированные символы обратной косой черты как часть оболочки:
bash -c "echo $'\nHello' > /location/file
9
28.01.2020, 02:13

Вы можете сделать это с помощью:

bash -c "echo $'\nHello'"
1
28.01.2020, 02:13

Вы можете использовать $ '\ n' :

$ bash -c "echo $'\nHello' >somefile"

В руководстве Bash упоминается следующее:

Слова вида $ 'строка' обрабатываются особым образом. Слово заменяется строкой с заменой экранированных символов обратной косой черты в соответствии со стандартом ANSI C. Управляющие последовательности с обратной косой чертой, если они есть, декодируются следующим образом:

(таблица стандартных управляющих последовательностей исключена)

6
28.01.2020, 02:13

Теги

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