email - Unix mail command: Sort by newest first
2014-07
When I use the "mail" command, it prints a list of messages in my inbox in a format like this: 1 Super User Mon Jun 9 17:13 86/4716 Complete Registration With Stack Exchange
However I've noticed that it does this with the oldest messages first. Is there a way to change this behaviour?
To make this as an answer, I'd suggest to use pine
.
The mail
command really isn't made for interactive use. It's for bare bones, your system is completely hosed, and you're searching for some email from cron. For anything else, use something newer and designed for day to day use, such as pine
or mutt
.
When sending an email to someone in Apple Mail it remembers their address, so if you try and send another email to them it'll prompt you with it - even if you haven't added them to the address book.
Is there any way of exporting those remembered addresses, or saving them to the address book?
In Mail, go to Window -> Previous Recipients. You can then add them to your Address Book. If you want to export the list to a file, you can do so in the Terminal by directly accessing the sqlite database with sqlite3. Excerpt from link (formatting mine):
This turns out to be more complicated than I had hoped, but it is possible.
The Apple mail program uses a database program available in Unix called “sqlite3.” The executable is in /usr/bin. For information about this program, type “man sqlite3” in a terminal window. Also, there is information on the web, at www.sqlite.org. A friend whose day job is in database administration helped me work this out.
First, go the proper directory in a terminal window:
cd ~/Library/Application Support/AddressBook
The file of interest is MailRecents-v4abcdmr.
Note that the
file
command describes this as:$ file MailRecents-v4abcdmr MailRecents-v4.abcdmr: SQLite database (Version 3) $ sqlite3 MailRecents-v4.abcdmr SQLite version 3.4.0 Enter ".help" for instructions sqlite>
Let’s see the headers:
sqlite> .headers ON
Now, let’s get some information about what’s in this database file:
sqlite> select * from SQLITE_MASTER; /* don’t forget the semicolon */ /* lots of output */
The table
ZABCDMAILRECENT
is of interest to us. Note that the last 3 columns are calledZLASTNAME
,ZFIRSTNAME
, andZEMAIL
. We want these from the table, in columns, in filename.txt.sqlite> .mode columns ZABCDMAILRECENT sqlite> .width 15 15 36 /* make sure the columns are wide enough */ sqlite> .output filename.txt /* note: no ‘;’ */ sqlite:> select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT; sqlite> .exit
Done. The email names and addresses are now in
filename.txt
, one per line.Maybe, someday, someone at Apple will add this capability to mail.
To export to a CSV file:
Run as one line:
sqlite3 -csv ~/Library/Application\ Support/AddressBook/MailRecents-v4.abcdmr 'select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT;'
To export to file "recent.csv":
sqlite3 -csv ~/Library/Application\ Support/AddressBook/MailRecents-v4.abcdmr 'select ZLASTNAME, ZFIRSTNAME, ZEMAIL from ZABCDMAILRECENT;'>recent.csv
This is a stupid, but simple way to do it.
Mark all mails, choose print - but change to save to PDF, then export to Word, then export to TXT file format and start to filter the file with Text Wrangler.
Easy but stupid ;)