I was recently working on a script to pull a scrubbed database dump using the
pg_dump
Postgres utility. Ultimately, the script does something like this to
dump a remote database to a local file:
pg_dump \
-h host.region.rds.amazonaws.com \
-U db_username \
-d db_name \
-F c \
-f scrubbed-database-$(date +%Y-%m-%d).dump
Notice the last part of that command where we define the name of the dump file.
It has a $(...)
that is used to run and interpolate a command as part of the
filename.
Here is that date
command run on its own:
$ date +%Y-%m-%d
2025-04-02
In the above command, that would mean if I were to run it today, I'd get
scrubbed-database-2025-04-02.dump
.
This approach can be used with any command where you are producing a file that you want to be dated or timestamped.
Here is another example that incorporates the time as well:
$ touch $(date +%Y%m%d_%H%M%S)-migration.sql
# => 20250402_092442-migration.sql