10 ms·
fish shell
- atldev 13y agoSee it in action here: http://youtu.be/MVw8N3hTfCI?t=56s http://youtu.be/MVw8N3hTfCI?t=56s
- 9ac345a5509a 13y agoPrevious discussions: https://news.ycombinator.com/item?id=5723235 https://news.ycombinator.com/item?id=5567639 https://news.ycombinator.com/item?id=4073162
- matthewlehner 13y agoI like the features it has, but every time someone post a link to fish shell, I wonder why I would switch from bash or zsh. Will this really be THAT MUCH BETTER? Will I just run into weird errors? Is it totally sh compliant? These are important things to know and should be on the homepage.
- jfb 13y agoThe thing that's stalled me out from using fish before is that it's different enough from the Bourne shell that it seriously interrupts my day to day usage; but it's TOO similar, with the horrible shell semantics. So it's never really been worth it to me.
- AlexMax 13y agoI am a year-or-two-old fishshell convert who is reasonably well versed in bash and tried using zsh and bash with a big .bashrc. A few things stand out to me as huge pluses: - It has a lot of cool functionality out of the box such as highlighting, smarter autocomplete (type in a partial word at the prompt and hit up instead of the cumbersome bash ctrl r/s history prompt that loves to beep at you), directory history (alt left-arrow and alt right-arrow), and more. - You don't need a 10k .bashrc or 1k .zshrc to unlock most of that cool functionality, it's just enabled by default. So anywhere you have fishshell installed, you get 95% of what you're used to, no need to git clone or scp over your .bashrc. - Startup time is _very_ quick compared to bash or zsh with said 10k .bashrc or 1k .zshrc, and is comparable to bash or zdh with no startup file. The only weird error I ever ran into was with an older version of fish shell complaining about missing directories in your PATH every time there was an automatic completion available. I have not run into that issue with newer releases. It is not sh-compliant, which will occasionally wreck havoc when you have a program that shells out without explicitly using sh. I remember running into this issue specifically with vim and emacs on more than one occasion, but truth-be-told I consider this a bug with those programs rather than a fault with fish. There's also the matter of it not being installed on some machines, but I've used bash for so many years now that my brain flips back into bash-mode anytime I see that familiar colorless prompt with a dollar sign at the end. It's not an essential upgrade. I also wouldn't bother using it for shell scripts either. But I'd say give it a boy scout try for interactive usage and see how you like it.
- dfc 13y agoDo you know anyone with a 10k .bashrc?
- eblume 13y agoI know people with well more than that, particularly when you factor in 'oh my zsh' and its ilk.
- dfc 13y agoI am not sure I would include oh-my-zsh as someone's personal zshrc. Moreover I thought OP had made a distinction between bash (10k) and zsh (1k) so I am not sure how o-m-z counts as a bashrc? I will take your word for it but I cant imagine what people put in there bashrc to get to 10k. The entire bash-it repository is 8,588 and over a third of it is bash completions which seems to duplicate the majority of what is already provided by bash-completion. And I am not sure that bash-completion is really "my .bashrc." $ cd bash-it $ sloccount ./ ...SNIP... SLOC Directory SLOC-by-Language (Sorted) 3198 completion sh=3198 3168 plugins sh=3168 1081 themes sh=1081 748 lib sh=748 242 aliases sh=242 135 top_dir sh=135 16 template sh=16 0 custom (none) Totals grouped by language (dominant language first): sh: 8588 (100.00%) Are there some big bashrc customizations that I might be overlooking? edited to reflect distinction between parent and grandparent comment
- eblume 13y agoSorry, I'm not the parent commenter.
- AlexMax 13y agoMy apologies, I was being a little facetious. Just a little. :) The size difference was based on my intuition that when I maintained my own .bashrc and .zshrc, I was able to "get away" with fewer total lines in my .zshrc than my .bashrc. I remember my .bashrc being dozens of pages, my .zshrc was only a couple. Compare that to my fish init file...all it does is set a few paths and aliases and turn off the greeting, because everything else just works out of the box for me.
- qznc 13y agoIt is NOT totally sh compliant. Intentionally.
- ilaksh 13y agoTake a look at the concept of status quo bias. What I do is spawn fish at the end of my .zshrc that way I can just exit if I run into something that doesn't work with fish. The biggest plus for me is that the default auto complete in fish is twice as smart as the other ones.
- stevelosh 13y agoI've been using fish for a while now. Overall it's pretty great. Here's my fish config if you want to see an example: https://bitbucket.org/sjl/dotfiles/src/tip/fish/config.fish https://bitbucket.org/sjl/dotfiles/src/tip/fish/config.fish
- untothebreach 13y agoGotta say, this one is my favorite: 112 function hey_virtualbox_shut_down_or_i_will_fucking_cut_you 113 VBoxManage controlvm $argv poweroff 114 end
- liquidise 13y agoA powerful demonstration of self-documenting code. I applaud the application.
- ArbitraryLimits 13y agoI've always been a fan of die_you_gravy_sucking_pig_dog() from the FreeBSD source. http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sbin/shutdown/shutdown.c?rev=1.26&content-type=text/plain http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sbin/sh...
- eblume 13y agoFor someone calling fish 'pretty great' I sure see a lot of angst towards fish in that config file! Thanks for the post though.
- tjbiddle 13y agoThis config file is glorious. Every other line is just pure gold. function fish_user_keybindings jesus_fucking_christ_bind_the_fucking_keys_fish end
- naranja 13y agoFor people looking for a more generic start https://github.com/bpinto/oh-my-fish https://github.com/bpinto/oh-my-fish might be a good hint, too
- hrkristian 13y agoI like auto-complete in web-browsers, but I can't see a single use for it in my terminals. After all, what Linux-user hasn't automated their terminal input to some degree? Nah, I'll stick with my [TAB]...
- frewsxcv 13y agoYou could just try it instead of speculating
- kmm 13y agoI tried it for a while and I just can't work with it. I'm back to fish 1.23 for now, and I don't know what I'll do when that becomes unmaintainable. I might just have some personal patches, I really wish they included an option to disable it.
- morsch 13y agoYou can't see a single use for auto-complete in your terminal so you'll stick to your key invoking auto-complete in your terminal?
- fjcaetano 13y agoWhy is this interesting when we have zsh? https://github.com/robbyrussell/oh-my-zsh?source=cc https://github.com/robbyrussell/oh-my-zsh?source=cc
- frewsxcv 13y agozsh is really just fancy bash. fish feels like a brand new shell, and in my opinion, what a shell should be
- tuananh 13y agoor prezto https://github.com/sorin-ionescu/prezto https://github.com/sorin-ionescu/prezto
- thatswrong0 13y agoOne thing I have found with prezto (as well as oh-my-zsh) is that over time, starting up a new terminal window can take a while. On the other hand, when I tried fish, I found certain aspects of it to be sluggish (autocomplete, for example).
- dfc 13y agoOthers may say say why is zsh interesting when we have rc? Or why is rc interesting when we have bash? Others may ask why is bash interesting when we have tcsh or pdksh? I would like to know what is interesting about a world with one shell for every user?
- naranja 13y agoWhy is zsh interesting, when you can have a friendly shell out of the box https://github.com/bpinto/oh-my-fish https://github.com/bpinto/oh-my-fish I tried to get started with both. For me fish was by far the easier & more friendly starter. For shell powerusers zsh might be offer more options and less pitfalls.
- tuananh 13y agothe developer should provider a converter tool to convert .bashrc/.zshrc to fish config
- agumonkey 13y agoit looks like a NP-Complete problem
- mst 13y agoA solution that converted as many easy things as possible and then output anything it couldn't figure out somewhere so you could convert that by hand would still probably be rather useful.
- agumonkey 13y agoAgreed. And from what I understand it's how the python 2 -> 3 transition was dealt with.
- appplemac 13y agoOne of my favourite features: a single configuration file. No more .bashrc and .bash_profile . However, it seems like Fish is not fully POSIX-compatible, therefore you can face weird problems in Vim plugins, for example.
- dfc 13y agoThe fact that you cannot redirect stderr to stdout and pipe to another command is a bit of a stumbling point for me. When I saw the bug[1] for the first time I thought that it must be some strange corner case, but it turns out it is a real bug. After reading the bug report I started to wonder if there were any other other unixy features that were missing. I/O redirection is a core unix concept in my opinion. [1] "Redirect stderr to stdout and pipe doesn't work as expected" https://github.com/fish-shell/fish-shell/issues/110 https://github.com/fish-shell/fish-shell/issues/110
- barrkel 13y agoIt doesn't have process redirection either, and that's one I use a fair bit. For example paste <(hquery -q '//a/@href' x) <(hquery -q '//a' x) Where hquery is one of my utilities for running xpath queries over loosely parsed HTML. This would produce a tab-delimited list of link urls to link text.
- mitmatt 13y agoTry piping into psub, as in paste (hquery -q '//a/@href' x | psub) (hquery -q '//a' x | psub) http://ridiculousfish.com/shell/user_doc/html/commands.html#psub http://ridiculousfish.com/shell/user_doc/html/commands.html#...
- moystard 13y agoIt actually made me switch back to zsh. Pipe not working is just a no go for me. But overall, this is a great shell, very accessible compared to bash/zsh, I particularly appreciated the configuration mechanism.
- planckscnst 13y agoWhat made me finally stop trying to use it is that you can't modify the environment of a command like so: HOWDY=pardner env.
- deleted 13y ago[deleted]
- patrickg 13y agoI have been using fish for a few months exclusively on my Mac. I really miss a few bashisms: mostly pressing esc-. inserts the last part of the last command. I have not changed the shell on my server, somehow I am afraid of breaking things... (bad shell scripts that don't have correct shebang line).
- ryanwatkins 13y agoesc-. is my biggest miss as well. There are discussions on this but still havent been able to fix it on osx in iterm2 myself. Did get option-. to work for now but esc-. has 20+ years of pure reflex action burned into my brain.
- patrickg 13y agoCan you post your solution (or give a pointer)?
- ryanwatkins 13y agofunction fish_user_key_bindings bind \e. 'history-token-search-backward' end There is a thread about it here https://github.com/fish-shell/fish-shell/issues/89 https://github.com/fish-shell/fish-shell/issues/89
- patrickg 13y agoNot successful yet on the Mac Terminal.app command line... Thanks anyway.
- efnx 13y agoIn fish it's simple enough to start typing the command you want and then hit arrow right to autocomplete. If you have a couple often commands that start the same way just arrow up or down to cycle through them, then arrow right to put them on the command line.
- 13y ago
- pit 13y agoOooh, it's like a MUD!
- d5ve 13y agoI defined the following function to convert my bash aliases to fish functions, which eased my switchover a bit. I saved it as ~/.config/fish/functions/import_bash_aliases.fish function import_bash_aliases --description 'bash aliases to .fish function files.' for a in (cat ~/.bashrc | grep "^alias") set aname (echo $a | grep -Eoe "[a-z0-9]+=" | sed 's/=//') set command (echo $a | sed 's/^alias .*=//' \ | sed 's/^ *\'//' | sed 's/\' *$//' ) echo "Processing alias $aname as $command" if test -f ~/.config/fish/functions/$aname.fish echo Function $aname is already defined. Skipping... else alias $aname $command funcsave $aname end end end
- JelteF 13y agoI tried fish, last time it was posted. I quickly abandoned it though. One of my main commandline utilities is git in combination with git-flow(amazing). I found the normal git completion lacking. I believe branches didn't get completed correctly in combination with some commands. The git-flow completion was non existent. When that changes I might try it again. But for a shell that has tabcompletion as a selling point I was very unimpressed.
- dmotz 13y agoOne thing I missed in fish was bash's sudo !! to quickly re-execute a command. A replacement is easy enough though and is in my config here: https://github.com/dmotz/dotfiles/blob/master/functions/sudo!!.fish https://github.com/dmotz/dotfiles/blob/master/functions/sudo... Beyond a few other syntax incompatibilities, I've enjoyed using it.
- 0xACE 13y agoGave fish a shot for a week or so. It gives some "oohs and ahs" right off the bat, but in the long term, not something that I could use. Maybe if it was at least somewhat bash or POSIX compatible I would be on board, but the developers don't even seem to want to help us out in that regard.
- mkname 13y agoI just took fish for a quick spin, and... wow -- I am impressed. It really feels "interactive". I don't think I'll replace my battle tested zsh, but even as a "grumpy old man": you should at least try it. It feels really... fresh.
- Symmetry 13y agoI've been using fish for a while and have generally been very happy, I'm even working on creating a set of functions for ROS to integrate with fish the way it currently does with bash and zsh. My one tiny gripe is the way that if I set foo this that "the other" then echo $faux; echo $faux[1] doesn't produce anything, but echo $foo[4] gives me an error message that I can't just pipe to /dev/null Also, writing autocompletes for functions is both far simpler than in bash, but I'm also missing some of tools that bash provides.
- TheLegace 13y agoThat's very interesting, especially for people interested in using ROS as an educational platform. It would be pretty amazing, considering the file resolution properties of ROS. I actually love it since I don't have to be in the same directory and it's easy to go through many projects. Just curious what sort of work are you doing on ROS. Earlier this year I was working on simulation stuff in Gazebo.
- Symmetry 13y agoI'm a robotics software engineer at Vecna, working on our QC Bot[1]. We use a combination of ROS and our own Java stuff for the robot system, and since I'm a long time fish user I started doing the port for my own use. I've been working on getting the patch into shape for actually going upstream in the 4 hours per week we get for community service, contributing to open source, etc. [1]https://www.vecna.com/solutions/hospital-delivery https://www.vecna.com/solutions/hospital-delivery
- sdfjkl 13y agoFish is a great interactive shell. I've been using it for some time now. A few things I occasionally run into: You can't just paste somebodies setup instructions into your shell anymore (you can temporarily invoke bash for that though). And when writing setup instructions yourself, sh is still pretty much the standard. VirtualEnv generates an activate.fish out of the box - nice! I still occasionally type !grep by accident. And I do miss &&.
- azio 13y agoJust installed the thing. Really impressed.
- mmanfrin 13y agoI really liked fish, but as someone who is still learning bash/cli scripting, it makes things difficult when instructions from programs come only in Bash syntax, which does not work well with fish (some things with homebrew were an absolute nightmare to install).
- L_Rahman 13y agoIt definitely makes following instructions a little more complex, but in most instances when a line doesn't work I've found that a quick switch over to bash to run that line and back proves to be sufficient. Of course I'm also very new to bash/cli so I'm just happy if I can get things done and haven't yet gotten to the stage where I'm worrying about if it's the proper way to go about doing things.
- Zarel 13y agoHow I installed Homebrew from fish: bash ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" https://raw.github.com/mxcl/homebrew/go)"
- ballard 13y agoFor people that just don't care about advanced features or gotchas, fish seems fine. For people that exploit redirection, file handle rewiring, here docs and such... consider zsh with https://github.com/sorin-ionescu/prezto https://github.com/sorin-ionescu/prezto
- reledi 13y agoI've been using fish for about 3 months now and I love it. Switched from bash. Here's a presentation I gave to my local coder community on fish: http://www.youtube.com/watch?v=SWmKfb2jQhU http://www.youtube.com/watch?v=SWmKfb2jQhU
- cwp 13y ago"Finally, a command line shell for the 90s" Now that's an odd slogan. Is it trying to make the point that the competition is even older? Appeal to old-school hackers? Subtly tell me that the project hasn't been updated in a while?
- nilved 13y agoIt's satire.
- aidenn0 13y agofish: the shell for people who want to use multi-line echo instead of here-docs.