Skip to content
/ thefly Public

shell teleporter plugin manager (bash/zsh/ksh)

License

Notifications You must be signed in to change notification settings

joknarf/thefly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

thefly


bash/zsh/ksh plugin manager and env teleporter

Your shell env and plugins are available everywhere (hosts/users)
 
bzzz bzzz !

Demo

thefly_bzz

Install

. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) install

or

$ git clone https://github.com/joknarf/thefly
$ . thefly/thefly install

Creates ~/.fly.d/fly

Add in your rc file (.profile .bash_profile .bashrc .zshrc):

. ~/.fly.d/fly source

Add plugins

fly add joknarf/redo

clones https://github.com/joknarf/redo in ~/.fly.d/plugins/redo and sources the plugin.<shell> (all plugins in ~/fly.d/plugins/*/*.plugin.<shell> will be sourced at login with fly source in your shell rc file)

Teleport plugins/shell env

  • To another user on current host
$ flyas <user>
or
$ fsu <user>

will duplicate ~/.fly.d (without cvs files/tests) in /tmp/.fly.<user>/<flyid>/.fly.d and source all plugins
by default uses <user> shell, to force your favorite shell:
fsub or bsu (bash) - fsuz or zsu (zsh) - fsuk or ksu (ksh)

  • To another host/user
$ flyto [<ssh opts>] <user>[<@host>]
or
$ fssh [<ssh opts>] <user>[<@host>]

will duplicate ~/.fly.d (without cvs files/tests) in <host>:/tmp/.fly.<user>/<flyid>/.fly.d and source all plugins
by default uses <user> shell, to force your favorite shell:
fsshb or bto (bash) - fsshz or zto (zsh) - fsshk or kto (ksh)

  • To another shell
    Change current shell and load your env/plugins:
    $ flysh <shell> # shell in bash ksh zsh
    or fbash - fzsh - fksh

Customize env

Putting your env in ~/.fly.d/.flyrc will be automatically sourced (must be compatible with different shells)
Putting additional shell specific env in ~/.fly.d/.<shellname>rc (.bashrc/.kshrc/.zshrc), will be automatically sourced for shell.

Create your standalone fly package with your full shell env/plugins

save your whole shell environment to use everywhere with standalone fly package.
All your ~/.fly.d environment saved in autoextractable file. The fly package enables your env when sourced.

$ flypack >fly.pak

make your fly.pak available through url, to connect to a server with your env, use for example:

$ ssh -t <host> '. <(curl -s -L https://raw.githubusercontent.com/joknarf/flypack/main/fly.pak) [install] [bash|ksh|zsh]'

load your env in current user:

$ . <(curl -s -L https://raw.githubusercontent.com/joknarf/flypack/main/fly.pak) [install] [bash|ksh|zsh]

install option to install in user home dir ~/.fly.d, default in /tmp/.fly.$USER

Download/activate your env/plugins from your fly git repo or web server

put your .fly.d directory into a git repo and activate all your env/plugins in your current user

. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) install joknarf/myfly

create a tgz file with your .fly.d exposed on web server and activate env/plugins in your current user

. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) install https://myserver/myfly

Connect using thefly env/plugins from http/git repo

uses user ~.fly.d to load env/plugins

$ ssh -t <user>@<host> '. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) remote'  

get env/plugins from .fly.d tgz (contains .fly.d/*)

$ ssh -t <user>@<host> '. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) remote <url .fly.d.tgz>'  

get env/plugins from github repository (repo contains .fly.d contents, cat contain plugins submodules)

$ ssh -t <user>@<host> '. <(curl https://raw.githubusercontent.com/joknarf/thefly/main/thefly) remote <git owner/repo .fly.d>'  

Set your joknarf cool plugins env

$ fly add joknarf/nerdp        # bash/ksh/zsh nerd prompt
$ fly add joknarf/seedee       # bash/ksh/zsh cd history
$ fly add joknarf/redo         # bash/zsh     command history
$ fly add joknarf/complete-ng  # bash         completion next-gen
$ fly add joknarf/pgtree       # bash/ksh/zsh process hierarchy
link description
nerdp nerd dynamic customizable nice prompt
seedee access/search dir history with ctrl or shift down arrow, and many more
redo access/search shell history command menu with shift-tab, and many more
complete-ng autocompletion with interactive menu
pgtree process search / tree / kill command line

Don't teleport a human with your fly !

Remember that ~/.fly.d directory will be duplicated in /tmp when teleporting, don't put huge data in your ~/.fly.d directory, the consequences could be dramatic ! (ask Jeff G. ;-)

Bzzz Bzzz