2011-06-29 8 views
1

J'essaye d'écrire un script bash pour créer/vérifier l'existence d'un fichier basé sur la date. Fondamentalement, je veux avoir un direcotry de todo_lists à l'intérieur duquel sont des fichiers avec la liste todo todays. Ainsi, chaque fois que j'ouvre le terminal (Mac OS 10.6.8), il vérifierait si 6-29-11.txt ou tout autre basé surbash créer un fichier basé sur la date?

date "+%m%d%Y" 

si elle existe seulement less le contenu de celui-ci et si elle n'en crée pas.

donc je me demandais comment utiliser cette date chaîne formatée comme un nom de fichier et comment vérifier les variables de chaîne à savoir

[ -e date_string.txt ] && ... 

Comment pourrais-je accomplir ces choses, je suis assez nouveau pour bash

Répondre

5

Essayez ceci:

DATE=`date "+%m%d%Y"` 
if [ -f "todo_lists/$DATE.txt" ]; then 
    do stuff 
fi 

les backticks (`) un moyen, exécuter cette commande et retourne le résultat sous forme de chaîne

+0

merci exactement ce dont j'avais besoin –

+0

et la négation de cela? – pufos

+0

@pufos - Je suppose que vous voulez dire, vérifiez si le fichier n'existe pas? Si oui, alors la syntaxe est 'if [! -f "todo_lists/$ DATE.txt"]; puis – Geoffrey

2

A cet effet, votre Mac a déjà inséré des puces.

En bref: vous pouvez faire un fichier (par défaut $ HOME/calendrier) et vous pouvez entrer un rappel de la ligne en elle sous la forme comme:

06/29<TAB>reminder for today 
06/30<TAB>reminder for tomorrow 
07/15<TAB>another one 

et dans votre $HOME/.profile simple, entrez la commande calendar .

Après ce qui précède, chaque fois que vous ouvrez une nouvelle fenêtre de terminal, la commande calendar consultera le fichier calendrier pour les rappels d'aujourd'hui et une fois trouvé un rappel, va imprimer ce ...

vous pouvez inclure plus différents calendriers (avec Namedays par exemple) et plus ...
check man calendar


et la réponse à votre qst est:

file="./todo/$(date "+%F").txt" 
[ -f "$file" ] && { 
     echo "My today reminders" 
     cat "$file" 
} 

Je suggère d'utiliser le format « +% F » (2011-06-29) parce que vous obtenez une liste triée des fichiers, lorsque vous faites ls ou si ...

ps: utiliser $(command ....) forme au lieu de ` command` (backticks) parce que vous pouvez facilement nicher $(command $(another $(nexT))) eux. Les backticks sont dépréciés dans le bash en cours.

+0

aussi exactement ce dont j'avais besoin, juste son premier venu –

Questions connexes