nkfコマンドでOS差を意識せずにスクリプトを作る

はじめに 以前改行の文字コードの違いが原因でWindowsで書いたシェルスクリプトがLinuxで動作しなかった。そして原因解決に多大な時間を掛けてしまったという記事を書きました。(その時は改行コードに加えてファイルフォーマットにも問題がありましたが) 以前はVimでsedを利用して改行コードを置換していましたが、もっと良い方法があることに気が付きました。それはnkfコマンドです。nkfコマンドならいちいちVimでファイルを開くことなく変換が出来て、更に改行コードや文字コードの確認も簡単です。 今回は備忘録をかねて頻度の高いnkfの使用法をまとめておきたいと思います。 符号化文字集合と符号化方式(文字コード) nkfコマンドをまとめる前にまずは文字コードへの理解を軽く整理しておきます。 符号化文字集合とはあらゆる文字に対して数字を振って区別するための規格です。キャラクタセットと呼ばれることもあります。「JIS... 御覧になる | 御シェアする

cronとAppleScriptでブラウザからリンクアクセスするダイアログを定期的に表示する

はじめに 今回はAppleScriptとcronを使い、定期的にあるサイトへのリンクへのアクセスを促すダイアログを表示させるスクリプトを作成したいと思います。 イメージとしては時間になると下の画像のようなダイアログが自動で表示されて、ボタンを押すと設定しておいたサイトへアクセスさせるという仕様です。 AppleScript作成 AppleScriptとはMac... 御覧になる | 御シェアする

fzfとAWS CLIとjqを使って踏み台から簡単sshする

はじめに 一般的な構成ならセキュリティを考慮してサービスを動かすホストには踏み台からしか接続出来ない制限を掛けている筈です。その結果サービスホストの細かい調査やチューニングを行いたい時には、一旦踏み台ホストに接続してから狙いのホストに接続する必要があります。 この作業はメンテナンス中は結構頻発しますし、サービスが増える程多くなります。今がまさにそんな状態ですので、これを機にスクリプトを作っておきたいと思った次第です。fssh(仮)とコマンドを入力すると踏み台から接続可能なホストの一覧が表示されて、その中から一つを選択するとsshでログインが可能という様な仕様のスクリプトを作りたいと思います。 準備 スクリプトを紹介する前に準備を整えていきます。ちなみに踏み台及びログインする各ホストはAWSを想定しています(AWS... 御覧になる | 御シェアする

Vimとsedで制御文字を取り除く

はじめに 以前、OSを跨ぐ作業により異なる改行コードが混在してスクリプトが実行出来なかったという事がありました。https://momozo.tech/2019/11/23/fac%e6%94%b9%e8%a1%8c%e3%82%b3%e3%83%bc%e3%83%89/ 異なるエディタを使っていたり、変態的なキーマッピング設定を行っているなど、理由は様々ですが意図しない文字コードがソースコードに入り込む現象は意外と多いです。(他には.editorconfigを作っていないとかも考えられますかね。) その結果プログラムが動かず、あげくデバックに何時間も要したなんて悲しい過去が、エンジニアならば心当たりがきっとあるはずです。そこで今回はVimで制御文字を調査してsedで簡単に除去する方法をまとめたいと思います。 Vimによる制御文字の調査 まずはVimで制御文字を調べる方法です。制御文字の一覧はWikipediaが簡潔でリファレンスに丁度いいです。 Vimにおける制御文字の入力方法は挿入モードで<Ctrl... 御覧になる | 御シェアする

先頭にシバンを挿入するVimスクリプト

シバンとは まずシバンとは下記の様なシェルスクリプトの先頭行に記述するインタプリタの指定の事です。 #!/bin/sh ※シェルスクリプトが後ろに続く 自分も難しい事は分かりませんが、そのシェルスクリプトがどのシェル上での実行を想定しているのか明記する為のものだと思っています。 TL;DR シバンを先頭行に挿入するVimスクリプトを書いてみます。Exコマンドラインから:Shebangと実行すると、現在開いているバッファの先頭行にシバンが追加される仕様です。 "... 御覧になる | 御シェアする

tmuxセッション・ウィンドウ・ペイン操作まとめ

はじめに tmuxとは複数の端末セッションを管理し、同時に複数のコマンドラインプログラムを実行出来るやつです。Linux標準だとscreenがそれにあたります。 最近になってようやくまともな使い方を覚えたのでまとめたいと思います。まずtmuxは大きい方からセッション→ウィンドウ→ペインという単位で管理するという事を理解して下さい。そしてそれぞれの操作方法を知りましょう。 また以下のコマンドはtmuxコマンドといい、<Prefixキー>:からtmuxコマンドラインに入り入力するものです。ちなみに自分の場合<Ctrl... 御覧になる | 御シェアする

rmコマンドでファイルを消さなければいいのでは?

もしもrmコマンドがファイルを消さない世界だったら 幸せな世界なんじゃないでしょうか。エンジニアならば誰しもが一度はrmコマンドでうっかりファイルを消去してしまったという経験がお有りかと思います。気をつけていても忘れた頃にやってしまうあのミス。バックアップやスナップショットを取っていたり、特殊な条件下なら復旧も可能ですが残念ながらそうでない場合も多いです。2回目ともなればもはや諦めがつきダメージが少ないかもしれません。 そもそもこんなに手軽にファイルを消去出来てしまうなんて冷静に考えたらおかしいことではないでしょうか。WindowsやMacにはゴミ箱というセーフティネットがあるのにも関わらず、どうして昔からLinuxにはゴミ箱が搭載されないのか。 そんな事を考えながらふと思ったのですが、無いなら作れば良いんじゃないでしょうか。ゴミ箱を。 rmコマンドを変える rmコマンドのエイリアスを作成することで、rmコマンド本来の処理をオーバーライドしてしまいます。まずは次のようなシェルスクリプトを書いて下さい。 #!/bin/bash TIMESTAMP=`date... 御覧になる | 御シェアする

乗換案内取得スクリプトを一行で実装してみた

乗換案内取得スクリプトとは 今回作成する乗換案内取得スクリプトとは読んで字の如く乗換案内を取得するスクリプトです。例えば最寄り駅から新宿駅までの乗り換え案内及び、乗車時間、料金等を取得可能です。 この記事を読まれている多くの方が毎朝乗り換えをスマホからアプリやブラウザを使って検索されているのではないでしょうか。そんな単調作業をPCなら一行で、スマホならワンタップで乗換案内を取得する方法をまとめてみました。 openコマンド 乗換案内取得スクリプトと仰々しい言い方をしていましたが、早い話がopenコマンドを実行してブラウザ起動→検索をコマンド化してしまおうということです。前回気温を取得するスクリプトを作成しましたがそれと全く同じロジックです。 下記のコマンドを実行してみて下さい。 $... 御覧になる | 御シェアする