ИМХО ты делаешь что-то простое без необходимости сложное. Почему бы просто не сделать что-то простое, как.
NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"
cd "$(mkdir -v "$(date -R)"|sed s+.`(.*)'.*)"
Это предназначено для создания каталога с именем $(date -R)
. Я мог бы просто cd $(date -R)
, но виновником является то, что дата может измениться с момента запуска предыдущей команды ( mkdir
).
Поэтому я хочу проанализировать его вывод, чтобы определить имя созданного каталога. Как мне исправить код? В настоящее время отображается >
подсказка, указывающая, что цитата отсутствует.
Изменение '
на \'
не меняет результат. Если у вас есть лучший способ сделать это, скажите, пожалуйста.
ИМХО ты делаешь что-то простое без необходимости сложное. Почему бы просто не сделать что-то простое, как.
NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"
С bash вы также можете использовать расширение истории :
mkdir "$(date -R)" && cd !#:^
sed
Часть в вашей команде достаточно сломана. Попробуй это:
sed -e "s/.*\`\(.*\)'.*/\1/"
Если вы часто хотите mkdir
и cd
за один шаг, попробуйте эту (только для bash) функцию:
mdc () { mkdir "$@" && cd "${!#}"; }
Это просто оборачивается mkdir
. Используйте его как mdc [mkdir options] newdir
и убедитесь, что newdir
идет в последнюю очередь.
Побочный эффект: вам не нужно использовать sed
для вывода date
, потому что date
сам по себе имеет несколько хороших инструментов для форматирования. Если вы передаете date строку, начинающуюся с '+', вы можете использовать коды форматирования из strftime .
$ date '+%Y-%m-%d_%H-%M-%S'
Я лично использовал бы что-то сортируемое для имени каталога, что означает, что я никогда не буду использовать «Пт» в качестве начальной части имени.