Using the monero cli with the transfer command.
transfer 48aBif46.....Ab1d .001
How can you set a custom transaction fee? What if I made the transaction fee .000001 or even zero?
There is no way to use unmodified Monero software to create transactions with anything other than fees from the standard tiers (x1, x4, x20, and x166).
If you were to modify the source code, compile it yourself, and then send a transaction with a fee outside the norm, it would not be rejected by the network. However, if miners find themselves mining transactions with fees significantly below the standard minimum fee, they could also modify the source code to reject those transactions. Modifying the fee in this way would make the transactions you send stick out from the crowd, which is antithetical to Monero's purpose.
That's not possible as is: you would need to change the code of the wallet and recompile it. And if you do, your transaction may be rejected by miners (in particular, a fee free transaction is not compatible with the protocol and will always be rejected).
However there are 5 pre-defined fee levels. If you want the lowest fee level, you can use this command:
transfer unimportant 48aBif46.....Ab1d .001
The fee will be approximately 0.003 based on current network characteristics.