0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonヒアドキュメントをワンライナーで実行しながらすべてをクリップボードに入れる

0
Posted at

サンプル

python3 << 'EOF' 2>&1 | tee /dev/tty | base64 | tr -d '\n' | printf "\033]52;c;%s\a" $(cat)
print("--- Starting HelloWorld with Error ---")
# 意図的な例外(ゼロ除算)を発生させる
result = 1 / 0
print("This will not be printed")
EOF

出力結果(クリップボードにも同じものが入る)

--- Starting HelloWorld with Error ---
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
ZeroDivisionError: division by zero

技術的な解説

  • python3 << EOF でヒアドキュメントでbashで動かせる
  • 2>&1 で標準エラー出力と標準出力を合流
  • tee /dev/tty で画面にも次のパイプにも出す
  • base64 | tr -d '\n' | printf "\033]52;c;%s\a" $(cat) でOSC52でクリップボードに入れる

何のためにこんなことを?

  • ClaudeCodeがRate Limitの間に、GoogleWorkspaceのWebブラウザ版でもコーディングアシスタント的に動かしたかった
  • コマンドを受け取りコマンドを実行してその結果をブラウザ版のGeminiに貼り付けるという作業を極限まで手数を減らしたかった
  • 実際にClaudeCodeがやってることってコマンドの実行結果(エラーメッセージ含めて)を眺めて次のコマンドを繋げてるだけなので

uvでも似たことはできる

uv run - << 'EOF' 2>&1 | tee /dev/tty | base64 | tr -d '\n' | printf "\033]52;c;%s\a" $(cat)
print("--- Starting HelloWorld with uv run ---")
# 意図的な例外を発生させる
x = 10
y = 0
print(f"Calculating {x} / {y}...")
result = x / y
EOF

uvの場合はファイル名を引数にもらうのだけれど、それを- で標準入力を受け付けるように指定する。あとは << 'EOF' でヒアドキュメントを標準入力として渡すだけ。uvなら依存モジュールもコメントに書いちゃえば、インストール込で実行してくれる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?