For non-gui JMeter, there is much info available about how to take a report. which is basically done by mentioning report name in command and not adding any listener in Test Plan
But I use a different approach. Please confirm whether it compromises the performance of JMeter or it is as good as mentioned in the 1st paragraph.
I add Listener in Test plan and mention filename in the listener. Do my configure settings. Close the Test plan and run it in NON-GUI mode with the following command.
jmeter -n -t ProjectName.jmx