Is there software for macOS that adds command history, autocompletion or other features to an
ftp command line client?
FTP and SFTP are completely different protocols. There is software that supports both, but it's just a common interface over two completely different things under the hood.
The best way to use SFTP is via sshfs, which makes any SFTP server available as a networked filesystem. You can then use ordinary shell commands (with the shell's history and completion) to access remote files.
sshfs myserver.example.com:/path/to/root example.com
cp myserver/subdir/myfile.txt ~
fusermount -u myserver
The sshfs software itself is easily available from package repositories such as Brew. The problem with sshfs is that it requires a kernel extension for FUSE, which is fine on Intel Macs, but a pain on Apple Silicon due to the extra kernel integrity protections.
Improving the basic
You can use
rlwrap to give any line-oriented command line software bash-like line editing commands, history, and completion of (local) file names. rlwrap is available from many package repositories including Brew.
MacOS comes with a convenient command line FTP client: it's built into zsh, in the zftp module. You get all of zsh's features including command line history and completion (of both local and remote files). FTP commands can be used by prefixing either
zftp ls, …) or just
I’m all in to use Mountain Duck and Transmit for my ftp needs now that macOS does not ship ftp or telnet or other “vintage” and traditional command line tools. If you’re not into paid, supported software, check out Cyberduck.
If you only need command line ftp and don’t want to compile it yourself, go for homebrew to install tnftp
brew install tnftp
If you might need other tools, the inetutils is a nice option. Also since sftp and ftps are different protocols with similar names, this other Q&A may be helpful.