2014-12-28 2 views
1

Я хочу создать файлы с текущей датой в качестве префикса, а некоторые - как оставшуюся часть имени файла.Как передать переменную программе командной строки?

Что-то вроде этого:

touch `date +"%Y-%m-%d-"$1`.md hello 

где $1 должен подобрать hello и создать мне файл с именем 2014-3-3-Hello.md.

+0

Если вы хотите использовать 'touch' вам нужно написать свой собственный сценарий (если он уже не поддерживает это) – keyser

+0

Зависит как вы интерпретируете «возможно». Если вы хотите прикоснуться к созданию имени, вам не повезло. Если вы просто хотите создать файл с этим именем, это легко. – cmaster

+0

- это то, что вы хотите создать файл в скрипте или вам нужно его запустить как команду из командной строки? – SMA

ответ

5

Вы можете использовать команду замены:

touch "$(date +"%Y-%m-%d-")hello.md" 

Если вы хотите, чтобы назвать несколько файлов, все заканчивающуюся .md, просто обернуть вещь в for цикле:

for baseName in hello world foo bar ; do 
    touch "$(date +"%Y-%m-%d-")$baseName.md" 
done 

Это будет создать четыре файла с именами, такими как 2014-3-3-hello.md, 2014-3-3-world.md и т. д.

+0

PERFECT! Спасибо огромное! :) –

4

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

$ touchdatemd() { touch $(date +"%Y-%m-%d-")"$1".md; } 

Тест:

$ mkdir test && cd test 
$ touchdatemd hello 
$ touchdatemd "I love pie" 
$ touchdatemd bye 
$ ls 
2014-12-28-bye.md 2014-12-28-I love pie.md 2014-12-28-hello.md 
+1

Спасибо! Это также полезно знать. –