Як перетворити компакт-диск на щойно створену директорію?


2
cd "$(mkdir -v "$(date -R)"|sed s+.`(.*)'.*)"

Це призначене для створення імені dir $(date -R). Я міг би просто cd $(date -R), але винуватцем є дата, яку можна змінити після запуску попередньої команди ( mkdir ).

Тому я хочу проаналізувати його вихід, щоб визначити ім'я створеного dir. Як виправити код? Наразі він відображається > підкажіть, що цитата відсутня.

Зміна ' до \' не змінює результат. Якщо у вас є кращий спосіб зробити це, будь ласка, скажіть так.


2
Я об'єднав для вас незареєстровані облікові записи та примусив конвертувати ваші відповіді на коментарі. Тепер ви маєте змогу прийняти та прокоментувати цю відповідь - доки ви знову не втратите свої файли cookie. Таким чином, ви можете розглянути можливість реєстрації, інакше будь ласка, знайте, що можете відновити незареєстрований обліковий запис як журнал, оскільки ви надали дійсну адресу електронної пошти.
DMA57361

Відповіді:


12

ІМХО ви робите щось просте, зайве складно. Чому б не просто зробити щось просте.

NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"

Ваше рішення чудово працює, і я приймаю вашу відповідь. Тим не менш, я все ще залишився цікаво, як виправити мій код, з цікавості.
nnbvcn

Мій 2с: (NEWDIR=$(date -R); mkdir "$NEWDIR" && cd "$NEWDIR") Це не перешкоджає оточенню.
estani


2

The sed частина у вашій команді досить зламана. Спробуйте це:

sed -e "s/.*\`\(.*\)'.*/\1/"

Якщо ви часто хочете mkdir і cd за один крок спробуйте цю функцію (лише для bash):

mdc () { mkdir "$@" && cd "${!#}"; }

Це просто обертається навколо mkdir. Використовуйте його як mdc [mkdir options] newdir і переконайтеся newdir йде останній.


Я забув про другу частину; це має бути: cd $ (mkdir -v "$ (date -R)" | sed -r s +. * `(. *) '. * + 1+)" Я спробував ваш варіант, але він дає той же результат коли я поміщаю: cd "$ (mkdir -v $ (date -R) | sed -es /.*` (. *) '. * / 1 /) "Ваш mdc () працює відмінно. , але оскільки я не зареєструвався, я можу відповісти лише після того, як ви втратили файли cookie. (Якщо можете, будь ласка, змініть це у коментар до відповіді).
nnbvcn

Ви залишили всі важливі цитати навколо регулярних виразів, коли ви покладете його. Покладіть подвійні лапки назад, як вони знаходяться в моєму, і подивіться, чи працює вона так.
jw013

Після того, як я повернув котирування, він спрацював. Я взяв їх на перше місце, тому що gedit демонстрував неправильне підсвічування. Дякую.
nnbvcn

1

Побічна сторона: вам не потрібно використовувати sed для виходу date, оскільки date сама має свої власні інструменти форматування. Якщо ви передаєте дату рядок, що починається з '+', ви можете використовувати коди форматування strftime .

$ date '+%Y-%m-%d_%H-%M-%S'

Я б особисто використовував щось сортируемое для назви каталогу, що означає, що я ніколи не буду використовувати "Fri" як першу частину імені.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.