Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
# status

this software was written a long time ago and may not compile
immediately.  contact me if you need help.  it can be made to run
on at least openbsd & linux.

# about

samblah is a command-line smb/cifs file transfer client, its
functionality resembles that of smbclient(1) which is part of the
samba project.  samblah provides certain features that smbclient(1)
lacks, such as command-line completion, convenient globbing and
resuming of transfers.

# features

- command-line completion allows for completion of commands and,
  depending on the command, local or remote files.
- extensive and completely configurable command-line editing is
  provided by the readline library, see readline(3) for information
  on how to configure its behaviour.
- globbing is provided for both local and remote files, i.e. patterns
  containing `*', `?' or `[...]' are replaced with the files they
  match, matching is done by fnmatch(3).  note that globbing is done
  in a generic manner, not inside each internal command but directly
  after parsing the command-line, this causes it to work as expected
  for all commands.
- other interesting features include recursive file transfers and
  listings, resuming of transfers, a nice quoting mechanism and more.

# screenshots

	while transferring, the progress bar, current size and
	estimated time of arrival are updated once every second.

recursive `get'
	samblah can retrieve directories recursively.

resuming a transfer
	when a the destination file of a transfer already exists,
	the user is asked whether to overwrite, resume, or skip the

	as can be seen in the screenshot, completion is quite useful
	when navigating.

	you can use the wildcards `*', `?' and `[characters]' to
	match file names.

# installing

samblah needs libreadline and libsmbclient.  chances are that
libreadline is already installed on your system, if not, you can
find it at <>.
as libreadline is pretty mainstream, installing it should not cause
much trouble.

libsmbclient is a bit harder.  It comes as part of samba,
<>.  at the moment of writing, samba-2.2.8 is
the latest release.  the problem is that the Makefile does not build
and install libsmbclient correctly.  see if your operating
system/distribution has a libsmbclient package, that will be the
easiest.  otherwise, try modifying the Makefile of samba to suit
your needs.

when you have libreadline and libsmbclient, it is time to compile
samblah.  edit the Makefile and add the location of the libreadline
and libsmbclient header files to the include path.  then execute
`make'.  If this succeeds, there will be a binary `samblah' and a
formatted manual page `samblah.0'.  to install samblah, copy the
binary to somewhere in your path (you might want to strip(1) it
first) and copy the manual page (either samblah.1, the raw manual
page, or samblah.0, the formatted manual page, possibly compressed)
to where your systems keeps manual pages.  note that there is no
`install' target since there is no way of determining where to
install the files.

# download

note that this software is unmaintained, so don't expect many
updates.  still, changes can be found here:

# author & licence

this code was written by Mechiel Lukkien <> or

all files in samblah distributions are in the public domain.  this
means you can do anything with it you want.

# thanks

helpful people who have provided feedback/bug reports/bug fixes and
suggestions for improvements:  Ferdi Meijerink, Berteun Damman.