クリップボードにコピーしたコマンドをそのまま実行する(応用編)
前回の応用
以下は
Linuxでは
xselがインストールされていること前提で話を進めていく。
クリップボードに貼り付けた
複数のコマンドを一度に実行したいときは下のようにするとよい。
$ xsel --clipboard --output | while read row; do eval $row; done
(macの人はxsel --clipboard --outputをpbpasteに置き換えてください。)
これで
apt search postgresql
apt search mysql
みたいに改行区切りで複数のコマンドが書かれているものも
一気に実行されるはずだ。
ただし、whileは一行ごとに標準入力を受け取るごとに
実行するコマンドなので、最後に改行がないと正しく動かないので注意。
また、危険なコマンドも一気に実行されてしまうため、
本当に実行して良いコマンドかどうか
よく考えること。
インターネットのサイトにあるコマンドで「$」付きのため
正しく実行されないコマンドがある場合は
$ xsel --clipboard --output | sed 's/^\$ *//' | while read row; do eval $row; done
とするとよい。
sedでは
文字列の最初にある
「$」または「$のあとの0個以上の空白スペース」がある場合は
そこの部分を空の文字列に置換する
という処理をしている。
このコマンドをまとめてさらに
一つの関数にすることもできる。
aliasコマンドでもまとめることはできるが、
関数と役割が違うような気がするし、
''がコマンドに入ってくると
aliasは書きづらい。
~/bin/myfunctionsという
ファイルを作成し、
以下の関数を作成する。
function clipexe () {
xsel --clipboard --output | sed 's/^\$ *//' | while read row; do eval $row; done
}
この関数を
bashログイン時に
読み込むと良いので
~/.bashrcに
source $HOME/bin/myfunctions
とファイルに追記して、
おく。
コマンドから~/.bashrcに追記するなら下のようになるか。
$ echo "# read myfunctions
source /home/takemitsu/bin/myfunctions" >> ~/.bashrc
(#の行はただのコメント)
これで
bashログイン時に
$ clipexe
でクリップボードの内容をそのまま実行できるようになる。
以下は
Linuxでは
xselがインストールされていること前提で話を進めていく。
クリップボードに貼り付けた
複数のコマンドを一度に実行したいときは下のようにするとよい。
$ xsel --clipboard --output | while read row; do eval $row; done
(macの人はxsel --clipboard --outputをpbpasteに置き換えてください。)
これで
apt search postgresql
apt search mysql
みたいに改行区切りで複数のコマンドが書かれているものも
一気に実行されるはずだ。
ただし、whileは一行ごとに標準入力を受け取るごとに
実行するコマンドなので、最後に改行がないと正しく動かないので注意。
また、危険なコマンドも一気に実行されてしまうため、
本当に実行して良いコマンドかどうか
よく考えること。
インターネットのサイトにあるコマンドで「$」付きのため
正しく実行されないコマンドがある場合は
$ xsel --clipboard --output | sed 's/^\$ *//' | while read row; do eval $row; done
とするとよい。
sedでは
文字列の最初にある
「$」または「$のあとの0個以上の空白スペース」がある場合は
そこの部分を空の文字列に置換する
という処理をしている。
このコマンドをまとめてさらに
一つの関数にすることもできる。
aliasコマンドでもまとめることはできるが、
関数と役割が違うような気がするし、
''がコマンドに入ってくると
aliasは書きづらい。
~/bin/myfunctionsという
ファイルを作成し、
以下の関数を作成する。
function clipexe () {
xsel --clipboard --output | sed 's/^\$ *//' | while read row; do eval $row; done
}
この関数を
bashログイン時に
読み込むと良いので
~/.bashrcに
source $HOME/bin/myfunctions
とファイルに追記して、
おく。
コマンドから~/.bashrcに追記するなら下のようになるか。
$ echo "# read myfunctions
source /home/takemitsu/bin/myfunctions" >> ~/.bashrc
(#の行はただのコメント)
これで
bashログイン時に
$ clipexe
でクリップボードの内容をそのまま実行できるようになる。
コメント
コメントを投稿