Content deleted Content added
Added reference to konqueror |
m →Session initiation: sxhl Tag: nowiki added |
||
(47 intermediate revisions by 31 users not shown) | |||
Line 1:
{{short description|Computer protocol}}
'''''FI'''les transferred over '''SH'''ell protocol'' is a [[Protocol (computing)|protocol]] to use [[Secure Shell|SSH]] or [[Remote Shell|RSH]] to transfer files between computers and manage remote files.▼
{{More citations needed|date=December 2009}}
▲'''
The advantage of FISH is that all it requires on the server-side is an SSH or RSH implementation, [[Unix shell]] and a set of standard [[Unix]] utilities like [[ls]], [[cat (Unix)|cat]] or [[dd (Unix)|dd]]. Optionally, there can be a special FISH server program (called ''start_fish_server'') on the server, which executes FISH commands instead of Unix shell and thus speeds up operations.▼
▲The advantage of FISH is that all it requires on the server-side is an SSH or RSH implementation, [[Unix shell]], and a set of standard [[Unix]] utilities (like [[ls]], [[cat (Unix)|cat]] or [[dd (Unix)|dd]]—unlike other methods of remote access to files via a remote shell, [[Secure copy|scp]] for example, which requires ''scp'' on the server side). Optionally, there can be a special FISH server program (called ''start_fish_server'') on the server, which executes FISH commands instead of Unix shell and thus speeds up operations.
The protocol was designed by Czech Linux Kernel Hacker, Pavel Machek, in 1998 for the [[Midnight Commander]] software tool.<ref>[https://github.com/MidnightCommander/mc/blob/master/src/vfs/fish/fish.c File: ''Fish.c'' - via Midnight Commander Official Repository]</ref>
==Protocol messages==▼
▲== Protocol messages ==
Client sends text requests of the following form:
Line 13 ⟶ 16:
Fish commands are all defined, shell equivalents may vary.
Fish commands always have priority: the server is expected to execute a fish command if it understands it. If it does not, however, it can try
When there is no special server program, Unix shell ignores the fish command as a comment and executes the equivalent shell command(s).
Server replies are multi-line, but always end with
### xyz
line. <
Return codes are a superset to those used in [[
The codes 000 and 001 are special, their meaning depends on presence of server output before the end line.
== Session initiation ==
The client initiates SSH or RSH connection with
The first two commands sent to the server are <tt>FISH</tt> and <tt>VER</tt> to negotiate FISH protocol, its version and extensions.▼
▲The first two commands sent to the server are <
{{sxhl|2=fish|<nowiki/>
#FISH
echo; start_fish_server; echo '### 200'
Line 34 ⟶ 37:
#VER 0.0.2 <feature1> <feature2> <...>
echo '### 000'
}}
The server may reply to VER command with a lines like
VER 0.0.0 <feature2> <...>
### 200
which indicates supported version of the FISH protocol and supported extensions.
== Implementations ==
* [[Midnight Commander]]<ref>{{cite web | url=https://github.com/MidnightCommander/mc/blob/master/src/vfs/fish/fish.c | title=Mc/Fish.c at master · MidnightCommander/Mc | website=[[GitHub]] }}</ref>
* [[Far Manager#Linux, MacOS and BSD version|far2l]]<ref>{{cite web | url=https://github.com/elfmz/far2l/issues/1819 | title=Feature: Consider porting FISH(FIle transfer over SHell filesystem) from Midnight Commander · Issue #1819 · elfmz/Far2l | website=[[GitHub]] }}</ref>
*[[Lftp]]▼
* [[Lftp]]<ref>{{cite web | url=https://github.com/lavv17/lftp/blob/master/src/Fish.cc | title=LFTP/SRC/Fish.cc at master · lavv17/LFTP | website=[[GitHub]] }}</ref>
* fish:// [[KDE]] [[KIO|kioslave]]<ref>{{cite web | url=https://github.com/KDE/kio-extras/blob/master/fish/fish.cpp | title=Kio-extras/Fish/Fish.CPP at master · KDE/Kio-extras | website=[[GitHub]] }}</ref> (with [[konqueror]], [[Krusader]] or [[Dolphin (file manager)|Dolphin]])
* fish as [https://github.com/greyltc/tcl-vfs/blob/master/library/template/fishvfs.tcl tcl-vfs]
* FISH was implemented in [[Emacs]] TRAMP some time ago, but support was removed<ref>[https://github.com/emacs-mirror/emacs/commit/03c1ad4351c10ec998410e8d34f52ac4a1a0decd#diff-96ee1cf8a36451f16ddf3f468f6ac74643eeee171d17054ca0c8cbf6653a26a8 related commit in Emacs]</ref><ref>{{cite web | url=https://lists.gnu.org/archive/html/tramp-devel/2010-09/msg00001.html | title=Re: Tramp's fish method }}</ref> (although TRAMP still can use shell connections in a similar way using tramp-sh.el script file)
== See also ==
* [[SSH File Transfer Protocol]]
==References==
{{Reflist}}
== External links ==
* [http://cvs.savannah.gnu.org/viewcvs/mc/mc/vfs/README.fish?view=markup README.fish from Midnight Commander]
[[Category:Network file transfer protocols]]▼
{{DEFAULTSORT:Files Transferred Over Shell Protocol}}
▲[[Category:Network file transfer protocols]]
|