Shell

ガチShellじゃないよ、ShellScriptについてだよ

tmux popupで遊ぶ

tmux popupとは tmuxのバージョン3.2-rcより導入された新たな機能。 どのようなものかはGIF見ていていただくのが一番早い。 fzfの絞り込みをtmux popupで実行したり、popup内で作業ができる paneやwindowの概念とは別に、新規ウィンドウがtmux上に表示される…

tmuxでiTermのimgcatを使う

iTermの拡張コマンドであるimgcatはtmux上で実行すると挙動がおかしくなる。 これはどうやらtmuxではpane分割があるため、widthやheightがうまく計算できないので描画がおかしくなってしまうらしい。 tmuxでimgcatを実行したときの挙動。一瞬だけ表示されて…

zshで関数内で実行したコマンドを履歴に残す

通常、コマンドを実行したら履歴に残り、Ctrl-p/nや上/下の矢印キーで実行したコマンドを遡ることができる。再度同じコマンドを実行するときはとても便利。 この履歴に手動で追加するにはどうするか。 結論から言うと printf -s 履歴に残したいコマンド でい…

fzfは非表示にした列でフィルタリングすることはできない

--with-nthで特定の列だけを表示した上でフィルタリングがしたかったが、どうもできないらしい。 github.com 上記のIssueによると、できないというよりはそれを実装してしまうと混乱を招きそうだから実装しない、ということらしい。 何がしたかったのか fzf…

TerminalからfzfでBluetooth機器を選択して接続できると幸せになれる

TerminalからBluetoothの接続をする MacでBluetoothのデバイスを接続するとき、ステータスバーからデバイスを選択しているやつおる? エンジニアならTeminalからBluetoothデバイスを選択して接続しないといけない。 AirPodsの接続をTerminalからやりたい Air…

Terminalの現在行をエディタで編集して実行する

長いワンライナーを打っていると編集が面倒くさい ワンライナーじゃなくてもいいのだが、Terminalでコマンドを打っているときに、修正するときのカーソル移動が結構面倒くさい。コマンド履歴をさかのぼり、真ん中の方のコマンドだけ編集したいときなど地獄の…

Terminal上でSnippetを実現する ~ zle(Zsh Line Editor) × fzf ~

ワンライナー打つのしんどい CSV落として該当の列だけ抜き出すときにcat hoge.csv | awk ...とか、fzfでプレビューして〇〇するみたいなときにcat hoge.txt | fzf --preview...など、 大体打つコマンドって決まってくると思う。 .zshrcや.shファイルなどに直…

whichコマンドでaliasではなくPATHを表示する(where, whence, where, type, commandどれ使えばいいのか決める)

コマンドにaliasを貼っていると、whichコマンドでPATHを知りたいのにaliasが表示されてしまう。 $ which grep grep: aliased to grep --color=auto PATHを知りたいときは-pをつけるとPATHが表示できる。(※-pはzshのみ有効) $ which -p grep /usr/local/opt/g…

builtin-commandsのmanの見方

man readとかするとbuiltin commandsのmanが出てきてしまって、read自体の説明にたどり着けない。 我々が見たいのはこのmanではない これはmanがないのではなく、ちゃんと別のところに書いてあるのでそれを覗きに行く。 bashの場合 使っているShellがBashな…

sourceコマンドは複数のスクリプトを読み込めない

結論 先に結論だけ言っておくとsource file1 file2はできない。file1, file2をsourceしたいなら下記のようにする。 find ~/local_scripts |while read script; do source $script done # もしくはfor文でもいい for script $(find ~/local_scripts); do sour…

業務で使うツール(iTerm2,SequelPro,Chrome)をShellScriptでハイパーテクニックする

業務で使うツール(iTerm2,SequelPro,Chrome)をShellScriptでハイパーテクニックする はじめに この記事は今年イチ!お勧めしたいテクニック by ゆめみ feat.やめ太郎 Advent Calendar 2019の20日目の記事です。 今年は「お勧めテクニック」ということで、業…

SSHのデフォルトログインユーザーをrootにする

シンプルに下記の1行を.bashrcに追加するだけで終わる。 sudo su - zshの人は.zshrcなど適宜読み替えて追加するべし。 .XXXshrc系のファイルはログイン時に自動で読み込まれるので、自動でsudo su -を実行してくれるって感じ。 何がしたかったのか kali-linu…

【備忘録】Homebrewで自作ツールを配布する

Homebrewでの配布は簡単だが毎回忘れる Goでバイナリ作ったり、ShellScript書いて配布したいなと思ったときにHomebrew使うことが割とある。 が、その都度毎回調べてやり方を思い出しながらするのが億劫だったので、一回まとめてみる。 ざっくり手順 Homebrew…

fzfでChromeのtab移動をする

VimでWeb開発してるとブラウザとTerminalを行ったり来たりすることが多い。 ブラウザのタブ切り替えをブラウザでやるのではなく、Terminalでできればノンストレスな開発ができるのではないか。そうだろう。 fzfで実現した github.com 追記:fzf本家の方、Jun…

アウトプットを気軽にするために作ったコマンド

記事書くときはVimで大体書いてからはてぶで整形するというのを繰り返しているが、最初の「Vimで記事を書き始める」という障壁をできるだけ低くし、なんとなくモチベーションが続きそうなやり方をコマンドで実践してる。 どんな感じ こんな感じ。 コマンドを…

oh-my-zshからの脱却

今更マサラタウンだけどoh-my-zshから脱却した。 全然遅さとか感じていなかったが、Profileしてみるとoh-my-zsh関連がビビるほどの遅延を発生させており、腹がたったからやった。 oh-my-zshを脱却して困ったこと oh-my-zshを入れていると、色々と勝手に設定…

Finderで開いているディレクトリにコマンドで移動する(open . ではない)

ShellScriptでドヤりたいGWアドベントカレンダー6日目いくで。 よくある「open .」でFinderで開く方法ではなく、逆にFinderで開いているディレクトリをTerminalで開く。 何を言っているかよくわからないのでとりあえず動作デモ。 Finderで開いているディレク…

ShellScriptでクリップボードの履歴管理する(ついでに水平連結もする)

ShellScriptでドヤりたいGWアドベントカレンダー5日目いくで。 クリップボード管理アプリをShellScriptで作った。 そもそもはスプレッドシートから列をコピーしてA列とB列を入れ替えて貼り付けたいと思ったのが発端で、 どちらかというと副産物的な感じでク…

Shellで定義済みの関数を流し読みしながら表示する

ShellScriptでドヤりたいGWアドベントカレンダー4日目いくで。 皆さん.zshrcや.bashrcは充実していますか? Vimの世界では「.vimrcの量=vim力」と言われているらしいですが、shellも似たようなものでしょうか。 それはさておきshellには様々な関数がありま…

コマンドで文字列画像を生成する

ShellScriptでドヤりたいGWアドベントカレンダー3日目いくで。 適当な画像が必要なときって結構あると思う。 そんな時一々Googleで画像検索するのが億劫になったのでコマンド一発で作れるようにした。 デモ こんな感じで好きな文字列の画像を生成する。 方法…

Chromeの履歴をShellScriptで弄り倒す

ShellScriptでドヤりたいGWアドベントカレンダー1日目いくで。 ブラウザの履歴ってその人がその日何をやっていたのか示すものとして結構な情報詰まってると思うのよね。 「俺今日何やってたっけ・・・」っていう時の思い出し作業や、「さっき見てたページも…

俺よりiTerm使いこなしてるやつおる?

お前らはまだiTermの本当の力を知らない 純正Terminal、Hyper、Alacritty等を使ってるやつ、今すぐ捨ててiTermに乗り換えたほうが良い。 iTermから乗り換えた人も今一度iTermのことを知ってほしい。きっと知らない機能があるはず。 目次 Shell統合をさっさと…

iTermをAppleScriptで操作する

基本的には以下の公式ドキュメントがわかりやすいし参考になる。 www.iterm2.com ただ実際使う時どうなるの、どうすんの?っていうのを紹介する。 AppleScriptでiTermを操作する基本的な構文 iterm.sh #!/usr/bin/osascript tell application "iTerm" activa…

Shellでランダムな文字列を生成する(文字列/数字文字列/乱数)

ふとした瞬間に「あ、ランダムな文字列生成したい」というときがあると思う。 そんなときのShellコマンドを紹介。 ランダムな文字列にも色々種類がある 今回生成するのは以下。 ランダムな文字列生成(例:'ex792Lhk') ランダムな数字文字列生成(例:'189765'…

【bashrc/zshrc】alias、functionの俺的命名規則3つ

aliasにする?functionのままにする? .bashrcや.zshrcにaliasやfunction()を記載することってよくあると思う。 またfunctionはそのままfunction名をコマンドとして打てば実行できるし、 簡単なコマンドの羅列はalias 少し複雑な処理が必要なのはfunction な…

サーバーのコマンド実行をお願いするときに気をつけること5選

本番サーバーでコマンド実行する際、権限を持っている人にコマンド実行を依頼することってあるじゃん。全台サーバーに実行みたいな。 そんな時に「このコマンドエラー出るよ」と言われないために気をつけるべきことを書いていくぞ。 1. rm, cpには\をつけてa…

fzfでAuthorを指定して編集ファイル一覧を出力する

優秀だなと思った人のソースは全部読みたい 自社開発や大規模なプロジェクトで開発しているとたまに「ああなんてわかりやすいコードを書くんや...」と思うことがある。 とりあえずgit blameして誰が書いたのか特定したはいいものの「もっとこの人の書いたコ…

はてなAPIをcurlでサクッと実行する

とりあえずはてなAPIをサクッとshellで実行したい人に向けて。 自分の記事を取得する curl -u {はてなID}:{APIキー} https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry はてなAPIはOAuth認証、WSSE認証、Basic認証のいずれかを行う必要があるので…

Webエンジニアの作業効率を1.3倍ぐらいにするワンライナー

この記事は今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018の25日目の記事です。 ワンライナーでサクッと作業完了できる人かっこいいですよね。 "今すぐ登録すべきalias"ということで普段業務中にでごりごりと使っているワンライナーを…

fzfで末尾に?がついてしまう現象

以下のような現象。 多段scpを試みたときに出会った現象。ProxyCommandによる多段scpができなかったので、しょうがなく愚直に2回scpをしようとした。 expectで踏み台サーバーにsshして、ls。lsの結果をfzfで絞り込んでscpする以下のようなスクリプトを組んだ…