fish-shell

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
fish-shell [2020/06/12 14:53] – [概要] mumeiyamibitofish-shell [2023/05/12 15:15] (現在) – [rsync や scp で fish をインストールしたリモートサーバにファイルを転送できない (旧方法)] mumeiyamibito
行 15: 行 15:
  
   * 共用サーバ等でホームディレクトリにインストールする ($HOME/local にインストールする場合)   * 共用サーバ等でホームディレクトリにインストールする ($HOME/local にインストールする場合)
 +    - cmake のバージョンが 3.2 以上でない場合、cmake をインストールする。
 +      * [[サーバ関連/cmake のインストール]] 
     - 最新版のソースをダウンロードする。\\ <code bash>     - 最新版のソースをダウンロードする。\\ <code bash>
 $ wget https://github.com/fish-shell/fish-shell/releases/download/3.1.2/fish-3.1.2.tar.gz $ wget https://github.com/fish-shell/fish-shell/releases/download/3.1.2/fish-3.1.2.tar.gz
行 29: 行 31:
       * cmake の ''-DCMAKE_INSTALL_PREFIX'' オプションでインストール先を変える。       * cmake の ''-DCMAKE_INSTALL_PREFIX'' オプションでインストール先を変える。
       * 参考サイト: [[http://physpolyglot.hateblo.jp/entry/2015/05/08/191110 | CMakeでprefixを変える - physpolyglot]]       * 参考サイト: [[http://physpolyglot.hateblo.jp/entry/2015/05/08/191110 | CMakeでprefixを変える - physpolyglot]]
 +      * ''-j 4'' は並列にコンパイルするオプションであり、この場合、4 CPU を使ってコンパイルしている。環境に応じて、変更する。
     - インストールされたか確認する。\\ <code bash>     - インストールされたか確認する。\\ <code bash>
 $ ~/local/bin/fish --version $ ~/local/bin/fish --version
 fish, version 3.1.2 fish, version 3.1.2
 </code> </code>
-    - ''.bashrc'' の先頭に記述する。\\ <code bash> 
-if [ -z "$PS1" ]; then 
- return 
-fi 
-</code> 
-      * .bashrc で何らかの処理がされている場合、scp や rsync が進行しないエラーが発生するため、.bashrc がこれらのコマンドで読み込まれた際、対話モードでない場合は即座に終了するようにする。 
-      * 参考サイト: [[https://qiita.com/montblanc18/items/b93fa4082e3bc2702a7f | .bashrc内にechoを入れておくとscpに失敗する - Qiita]] 
     - .bashrc の末尾に追記する。\\ <code bash>     - .bashrc の末尾に追記する。\\ <code bash>
-BOOT_FISH=1 +if [ "$SSH_TTY" != "" ]; then 
-FISH_PATH=$HOME/local/bin/fish + BOOT_FISH=1 
-if [ $BOOT_FISH -eq 1 ]; then + FISH_PATH=$HOME/local/bin/fish 
- if [ -f $FISH_PATH ]; then + if [ $BOOT_FISH -eq 1 ]; then 
- $FISH_PATH + if [ -f $FISH_PATH ]; then 
- exit+ $FISH_PATH 
 + exit 
 + fi
  fi  fi
 fi fi
行 54: 行 52:
       * ''BOOT_FISH'' が 1 のときのみ、fish-shell 環境になる。エディタで、ここを 1 以外にすれば、bash 環境になる。       * ''BOOT_FISH'' が 1 のときのみ、fish-shell 環境になる。エディタで、ここを 1 以外にすれば、bash 環境になる。
       * bash が一度起動しているため、環境変数は引き継がれる。       * bash が一度起動しているため、環境変数は引き継がれる。
 +      * rsync や scp が転送できない対策として、SSH_TTY の if 文を追加した (2020/10/26)。
 +        * 参考サイト: [[https://linux.just4fun.biz/?Linux%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/scp%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95%E3%83%BBbashrc%E7%B7%A8#d1b1e007 | Linux環境設定/scpができなくなった時の対処法・bashrc編 - Linuxと過ごす]]
     - 再ログインする。     - 再ログインする。
  
行 251: 行 251:
   * 参考サイト: [[https://github.com/fish-shell/fish-shell/issues/3473 | Rsync and sftp doesn't work when remote host uses fish shell · Issue #3473 · fish-shell/fish-shell]]   * 参考サイト: [[https://github.com/fish-shell/fish-shell/issues/3473 | Rsync and sftp doesn't work when remote host uses fish shell · Issue #3473 · fish-shell/fish-shell]]
  
 +
 +
 +==== コマンドラインスタック ====
 +  * とても役立つテクニックで、buffer stack とも呼ばれるらしい…。
 +    * 長いコマンドを打っている時に、ヘルプオプションを見たくなった時に便利。
 +    * 長いコマンドを打っている時に、やり忘れたコマンドを実行したくなった時に便利。
 +  * つまり、現在の入力中のコマンドを一時的に退避させる方法。
 +  * 方法: 
 +    * 以下の関数を ''$HOME/.config/fish/config.fish'' に記述する。\\ <code bash>
 +function push-line
 +  set cl (commandline)
 +  commandline -f repaint
 +  if test -n (string join $cl)
 +    set -g fish_buffer_stack $cl
 +    commandline ''
 +    commandline -f repaint
 + 
 +    function restore_line -e fish_postexec
 +      commandline $fish_buffer_stack
 +      functions -e restore_line
 +      set -e fish_buffer_stack
 +    end
 +  end
 +end
 +
 +function fish_user_key_bindings                                                                                        
 +    bind \cs push-line
 +end
 +</code>
 +    * 最後の ''bind ...'' でキーバインドを設定し、Ctrl + s で動作するようにしている。
 +  * 参考サイト: [[http://turanegaku.hateblo.jp/entry/2017/06/22/015349 | fish shellでコマンドラインスタック - つらねの日記]]
 +
 +
 +==== rsync や scp で fish をインストールしたリモートサーバにファイルを転送できない (旧方法) ====
 +  * ''.bashrc'' の先頭に記述する。\\ <code bash>
 +if [ -z "$PS1" ]; then
 + return
 +fi
 +</code>
 +    * .bashrc で何らかの処理がされている場合、scp や rsync が進行しないエラーが発生するため、.bashrc がこれらのコマンドで読み込まれた際、対話モードでない場合は即座に終了するようにする。
 +    * 参考サイト: [[https://qiita.com/montblanc18/items/b93fa4082e3bc2702a7f | .bashrc内にechoを入れておくとscpに失敗する - Qiita]]
 +
 +
 +==== ハイフンの入った文字列の置換ができない ====
 +  * 問題: ''string replace'' でハイフンの入ったパターンを置換できない。
 +  * 解決策: ''replace'' の後に ''--'' (ハイフン 2 つ) を入れる。
 +    * 例: <code bash>
 +$ string replace -- '-min' '' 'hoge-min.js'
 +hoge.js
 +</code>
 +
 +  * 参考サイト: [[https://github.com/fish-shell/fish-shell/issues/3416 | string command fails if input starts with a dash · Issue #3416 · fish-shell/fish-shell · GitHub]]
 ===== 参考サイト ===== ===== 参考サイト =====
   * [[http://fish.rubikitch.com/document-ja/ | fish2.4日本語ドキュメント:すぐ使える25の便利機能と実例]]   * [[http://fish.rubikitch.com/document-ja/ | fish2.4日本語ドキュメント:すぐ使える25の便利機能と実例]]
  
-{{tag>プログラミング}}+{{tag>プログラミング Linux サーバ}}
  
  • fish-shell.1591941236.txt.gz
  • 最終更新: 2020/06/12 14:53
  • by mumeiyamibito