Когда вы создаете псевдоним, $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
для копирования файла, указанного в командной строке, в папку с отметкой даты. Если папка не существует, она создается.
Здесь есть (как минимум) три варианта.
bash -c "echo '
Hello' > /location/file"
printf
(или нестандартный echo -e
), который расширяет экранированные символы обратной косой черты как часть самих команд (из которых оба являются встроенными командами оболочки): bash -c "printf '\n%s\n' Hello > /location/file"
$ '
, которые расширяют экранированные символы обратной косой черты как часть оболочки: bash -c "echo $'\nHello' > /location/file
Вы можете сделать это с помощью:
bash -c "echo $'\nHello'"
Вы можете использовать $ '\ n'
:
$ bash -c "echo $'\nHello' >somefile"
В руководстве Bash упоминается следующее:
Слова вида
$ 'строка'
обрабатываются особым образом. Слово заменяется строкой с заменой экранированных символов обратной косой черты в соответствии со стандартом ANSI C. Управляющие последовательности с обратной косой чертой, если они есть, декодируются следующим образом:
(таблица стандартных управляющих последовательностей исключена)