📋
クロスプラットフォームで動くクリップボードにコピーするコマンドをzsh/fishに追加する
zsh
clip.zsh
clip() {
local input
if [[ $# -eq 0 ]]; then
input=$(cat)
else
input=$(cat "$1")
fi
if [[ -n "$IS_WSL" || -n "$WSL_DISTRO_NAME" ]]; then
echo -n "$input" | clip.exe
elif [[ "$(uname)" = "Linux" ]]; then
echo -n "$input" | xsel -bi
elif [[ "$(uname)" = "Darwin" ]]; then
echo -n "$input" | pbcopy
fi
}
fish
clip.fish
function clip
if [ -n "$IS_WSL" ] || [ -n "$WSL_DISTRO_NAME" ]
cat $argv[1] | clip.exe
else if [ "$(uname)" = "Linux" ]
cat $argv[1] | xsel -bi
else if [ "$(uname)" = "Darwin" ]
cat $argv[1] | pbcopy
end
end
使用例
clip a.txt
これでa.txtの中身がクリップボードにコピーされます。
もちろん標準入力からの入力も対応していて
clip
で標準入力から受け付けます[1]。
参考文献
- How to check if a program is run in Bash on Ubuntu on Windows and not just plain Ubuntu?
- WSL で xsel とか使わずに クリップボード にコピーする方法
- xselコマンドを使ってクリップボードにアクセス
- ターミナルで標準出力をクリップボードにコピーする
-
catの動作と一緒です。 ↩︎
Discussion