Not the aquatic creature, but rather the
which is not as shit as the other ones.
I'm gradually transitioning to
fish, after accidentally losing
a lot of precious data due to a quirk in
bash syntax. Long boring story.
It's time for new, exciting, different stupid errors.
fish has a strong fanbase and an opinionated design. If you dislike those opinions, at least you might appreciate it has a healthy degree of sarcasm in its opinions, which sarcasm is sorely absent from the drearily earnest nerdview of your typical gnu.org project. You might also hold that having some kind of opinion is better than the design-by-accumulation-of-cruft which structures traditional command-line shells.
- fzf adds fuzzy history search.
- ubuntu users can get an updated fish PPA.
- or install using Linuxbrew .
modifying the search PATH
Adding a path? Say it's
set -gx PATH /usr/local/bin $PATH
Removing a path?
set -gx PATH (string match -v /usr/local/bin $PATH)
set -U fish_user_paths /usr/local/bin $fish_user_paths
TODO: explain the differenece between
will depend upon me working out how the content of
$PATH magically replenishes
if you are still using
virtualenv on python you will need
virtualenvwrapper.sh. Or switch to native python3
which is more or less the same thing but works better and doesn't support
python 2. But if you need to support python 2 at this stage it's because you are
in some weird enterprise environment with horrid legacy software, so hopefully
you can farm this problem out to the tech support team?
Using anaconda python
You need to do some extra setup to use conda with fish. Specifically, add the line
~/anaconda3/ with the output of
conda info --root
if you used a nonstandard install location)
Now you can activate an anaconda environemnt, e.g. the default
conda activate base
Modifying any settings with GUI
Vars, expansions, extensions, suffixes
for file in (ls *.html) mv \(file (basename \)file .html).txt end
#!/bin/fish while true echo "Loop forever" end
Temporary variable setting uses
env FOO=BAR baz.sh
Execute the second command if the first succeeded
The commmand you want is and, which is hard to google for
../bin/something.sh foo; and cp foo ~/Dropbox/
aliases, custom commands
command, alias, or abbr?