The Android shell does not have the cp command. Android shell also has no sed or grep or vi. I have no adb daemon available. There is mv command but it rejects to work if source is on a read-only device.
The most common answer to that is simple: Bundle few apps (busybox?) with your APK (assuming you want to use it within an application). As far as I know, the /data partition is not mounted noexec, and even if you don't want to deploy a fully-fledged APK, you could modify ConnectBot sources to build an APK with a set of command line tools included.
For command line tools, I recommend using crosstool-ng and building a set of statically-linked tools (linked against uClibc). They might be big, but they'll definitely work.
To copy dirs, it seems you can use
adb pull <remote> <local> if you want to copy file/dir from device, and
adb push <local> <remote> to copy file/dir to device. Alternatively, just to copy a file, you can use a simple trick:
cat source_file > dest_file. Note that this does not work for user-inaccessible paths.
To edit files, I have not found a simple solution, just some possible workarounds. Try this, it seems you can (after the setup) use it to edit files like
busybox vi <filename>. Nano seems to be possible to use too.