質問: bash on windows(windows subsystem for windows)でubuntuを動かし、そこから、sshで外部のサーバーに接続しています。 ここで、矢印キーを上下に動かすと、過去のコマンドを表示し、ctrl + spaceとctrl-wで切り取りができます。 しかし、pwdで表示したカレントディレクトリのコピーは、コマンドの”結果”であるのでコピーできません。 現在 teeでファイルに書き出したり、windowsのクリップボードを利用したりしてコピーしています。 もっと直接的にターミナルの操作だけで簡便に(teeなど使わずに)コピーする方法はないでしょうか? 追記 Q.どこにコピーしたいのか?コマンド中か? 記述が不明瞭ですみません。 コマンド中にコピーしたいと思っています。 ただ、コマンド中で、Ctrl + spaceで選択範囲を作った後、Ctrl-wで切り取り、Ctrl-yでペーストできるので、 kill-ringみたいなものがあるのではないかと思っています。Ctrl-yで取り出される領域にコピーできるのなら、そちらでもいいと思っています。
回答: > > コマンド中にコピーしたいと思っています。 > > > `Ctrl-W`などは、1行入力機能(readlineモジュール)の機能です。なので、入力中の行以外には対応できません。 入力中の行でカレントディレクトリを使いたければ、`.`でいいわけなので、あるディレクトリにいたときに`pwd`で表示させた物を今使いたいとう事だと思います。1つ前のディレクトリであれば、Bashなら、`$OLDPWD`に入っています。 `cp $OLDPWD/foo .`等。 もっと前の物を使いたい場合は、コピーしたい場所で、`FOO=$PWD`しておいて、使いたい場所で `cp $FOO/hoge .`等とします。 もっと汎用化して、コマンドの出力を後で使いたい場合は、`FOO=$(コマンド)`のように変数に入れます。 変数の記述はそのままで実行できますが、確認のため、コマンドラインで変数名を中身を値に戻したいときは、Bashのデフォルトだと、`$FOO`の直後で`ESC Ctrl-E`を押します。ちょっと覚えにくいですね。 WindowsやXのクリップボードみたいなことが、ターミナルに閉じて行えるようにするソフトもありますが、Windowsのクリップボードが使えているのであれば、それに勝るものでは無いので割愛します。