タグ

ブックマーク / rcmdnk.com (25)

  • バージョン番号のソート

    B! 81 0 0 0 v8.10.1みたいなバージョン番号をソートしようとするとき、 単にsortコマンドとか使うとv8.2.1とv8.10.1で真ん中の2と10の1だけを 見て思ったのと逆にソートされてしまいます。 かといって単純に-nで数字として全体を見ることもできないのでちょっと工夫が必要です。 sortコマンド 区切ってソート sort -V git tagでの表示 sortコマンド v1.2.1 v1.10.1 v2.2.1 v2.2.2 v2.2.10 v10.2.1 みたいな内容のversions.txtというフィアルの中身をソートしたいとき、 期待するのは上の形になることです。 これをそのままsortコマンドとかに入れると $ sort versions.txt v1.10.1 v1.2.1 v10.2.1 v2.2.1 v2.2.10 v2.2.2 となります。 このま

    バージョン番号のソート
  • Macで濁点とかが起こす文字化け問題について

    B! 24 0 0 0 Macの中でGNU screenなどを立ち上げると文字化けすることがありますが、 その辺の問題についてのメモ。 Macでの文字化け問題 問題の確認 Windowsでの文字化け問題 HomebrewでインストールするGNU screenの文字化け対策 Macでの文字化け問題 Macの中でGNU screenを立ち上げたらファイル名の表示などが文字化けしたりすることがあります。 殆どの場合は日語ファイル名で濁点を使ってる場合で、文字コードの問題です。 ただ、単純にUTF-8かShift_JISか、とかそういったものではなく、濁点や半濁点の扱いの特殊さによります。 MacではFinderでもターミナル上でも基的にUTF-8で文字を扱いますが、 UTF-8の中でもいくつか文字の取り扱いに対して違うものが存在します。 FinderではNFD(Normalization F

  • Batsを使ったシェルスクリプトのテスト

    B! 58 0 0 0 (Bashの)シェルスクリプトに関してテストを導入するために フレームワークとしてBatsを導入します。 bats batsの使い方 assertion シェルスクリプトでなくても使える bats シェルスクリプトのテストツールとして恐らく一番有名なツール。 オリジナルはこちら。 こちらは4年くらい前に更新が止まっていますが、 個人でメンテナンスを続けていくことが難しくなったときに みんなで続けていこうとして使われる様になったのが 以下のレポジトリ。 batsというアカウントはすでに他に取られていたのでこういう名前になった模様。 Call for Maintainers · Issue #150 · sstephenson/bats Information about community-maintained fork · Issue #236 · sstephen

    Batsを使ったシェルスクリプトのテスト
  • PoetryでPython CLIツールを簡単にPyPiに登録する

    B! 15 0 12 0 Pythonのパッケージ管理といえばpipが一般的ですが、pipでインストールできるパッケージは PyPIで管理されています。 ここには誰でもパッケージを登録することができますが、実際にアップロードするには 色々と体裁を整える必要があります。 特にコマンドラインツールを作ろうと思うと一工夫必要です。 その点、Poetryを使うと設定項目を自分でほとんど書くことなくPyPI用 パッケージを作りアップロードすることができます。 Poetry インストール スクリプトget-poetry.py pip 補完 使い方 雛形作成 install pytest 依存パッケージの追加/削除 コマンドラインツール(CLI)の作成 poetry shell パッケージのビルド パッケージの登録 TestPyPIへの登録 PyPIへの登録 ビルドと登録を同時に行う 設定ファイル pi

    PoetryでPython CLIツールを簡単にPyPiに登録する
  • tmuxに慣れてみる: tmuxとGNU screenの違いなど

    B! 216 0 1 0 ターミナルマルチプレクサとして GNU Screen を普段使っていますが、 tmux の方が活発に開発されてる様に見えたり 乗り移ってく人も沢山居るみたいなので気になって何度か試してみましたが、 イマイチ違いを吸収出来ずにScreenに戻ってきてました。 無理に移行する理由もそれ程無いですが、また試してみたので 取り敢えず違いなどのメモ。 設定ファイル Prefix (Escape) コマンドモード キー設定一覧 デタッチ/アタッチ キーバインド コピーモード/履歴スクロールバック Session/Layout/Window/Pane split 全Paneに同時入力 swap-paneの問題 Status表示 .bashrcなどでの判断方法 違いが理解できたら 設定ファイル screen tmux ファイル名 ~/.screenrc ~/.tmux.conf

    tmuxに慣れてみる: tmuxとGNU screenの違いなど
  • CentOS 7などのSystemdに対応したデーモンプログラムを作る

    B! 82 0 0 0 RHEL 7系のCentOS 7などではそれまでRHEL 6系で使われていたSystem V系のinitから Systemdを用いたデーモン管理がベースになるようになりました。 CentOS 7でデーモンを自作したいものがあって作ったので 基的な作り方についてまとめておきたいと思います。 Systemd (systemctl) デーモン体作成 最小限の設定 サービスファイル rsyslogの設定ファイル logrotate インストール/アンインストールスクリプト 動作チェック まとめ Systemd (systemctl) initのときには/etc/init.d/の中にデーモン名の(通常)シェルスクリプトが入っていて、 このスクリプトがstartとかstopとかの引数を受ける様に作られ、 直接 # /etc/init.d/httpd start とかするか、

    CentOS 7などのSystemdに対応したデーモンプログラムを作る
  • GitのPagerの設定

    B! 42 0 0 0 ターミナル作業中に何かを表示させるとき、 長いと上側が切れてターミナルウィンドウのスクロールなりなんなりで戻らないと行けないので 面倒です。 なので長い出力はlessにパイプで渡したり、コマンドそのものがlessに渡したりすることがあります。 Gitでもいろいろと長い出力がありますが、 lessに渡されるものとそうでないものがあります。 その辺の設定について調べてみたメモ。 パイプにつなぐ PAGER: シェルでの設定 GIT_PAGER core.pager pager.XXX git –no-pager/–paginate 優先順位 lessのオプション パイプにつなぐ $ git diff |less の様にすればlessで見れるわけですが、この場合Gitは標準出力ではない ところの出力するとして、デフォルトではカラー表示などを止めます。 表示を常に有効にして

    GitのPagerの設定
  • Macで勝手に英文先頭が大文字になったり二重ハイフンが大きなハイフンになったりするのを止める

    B! 27 0 1 0 MacEvernoteなんかで編集しているとき、 英文を書いてると先頭が勝手に大文字になったりハイフンを続けて書くとまとまった一つの大きなハイフンになったりします。 最初、アプリの設定かもしくはGoogle日本語入力によるものかと思っていましたが Mac自体の機能によるものでした。 ユーザ辞書設定 特定のアプリのみで効く 特定の入力ソースでのみ効く 今後も余計なお世話が増えるかも ユーザ辞書設定 Macの環境設定からキーボードに行き、ユーザ辞書のタブを開くと 以下のような設定項目があります。 左の方にはユーザが設定した変換辞書があります。 (見てみると随分昔にiPhoneで設定した辞書が残っていて忘れてたものたちが。。。) 重要なのは右側で、ここに自動変換に関わる項目が並んでいます。 英字入力中にスペルを自動変換 文頭を自動的に大文字にする スペースバーを2回押し

    Macで勝手に英文先頭が大文字になったり二重ハイフンが大きなハイフンになったりするのを止める
  • macOS & Chromeで外部アプリでリンクをクリックした際に新しいページなウィンドウが立ち上がる問題

    B! 15 0 1 0 macOSでブラウザ以外のアプリでリンクがあってクリックして開いたり、 ターミナルからopenコマンドを使ってURLを開く時、 デフォルトに指定されたブラウザでURLが開かれます。 これをChromeに指定してる場合、開きたいURLが開かれる代わりに 新しいWindowが立ち上がり起動時に指定したページが開かれる という問題が起こって困っています。 外部リンクをデフォルトブラウザで開く Macで起こる問題 原因 とりあえずの解決法 外部リンクをデフォルトブラウザで開く WindowsでもmacOSでもLinuxでも、Evernoteなどの外部アプリケーションにURLを書いておくと、 クリックした場合に設定したデフォルトのブラウザで開いてくれます。 macOSであればターミナルから $ open https://rcmdnk.com と、openコマンドにURLを与え

    macOS & Chromeで外部アプリでリンクをクリックした際に新しいページなウィンドウが立ち上がる問題
  • Homebrew 1.0.0がリリース: これに伴う変更とそれに対するBrew-fileでの変更

    B! 112 0 0 0 MacのパッケージマネージャーのHomebrewのバージョン1.0.0がリリースされました。 1.0.0ということで正式リリース的な感じですが、 このバージョンアップに伴いレポジトリインストール先の変更等 幾つかの変更点があります。 その変更によってBrew-fileの方でちょっと問題があったりもしたので そのあたりを直しました。 Homebrew 1.0.0 Homebrewのインストール先の変更 Homebrew体とFormulaの入ったレポジトリの分離 Homebrew-Caskとの統合 bundle、serviceサブコマンドを公式にサポート Auto update HEADバージョンで入れたパッケージのアップデート Brew-file 4.0.X Homebrew 1.0.0 1週間ほど前にHomebrew 1.0.0がリリースされました。 1.0.0

    Homebrew 1.0.0がリリース: これに伴う変更とそれに対するBrew-fileでの変更
  • Macでコマンドラインからシステムの言語を変更する方法

    B! 17 0 0 0 Macには予め複数の言語パックが入っていて、システムの言語を自由に変更することが出来ますが、 コマンドラインからも選択することが出来ます。 システム言語の変更 システム言語の変更 通常、システム言語はMacのセットアップ時に選択しますが、 環境設定から変更することも出来ます。 この言語設定をコマンドラインから行えるコマンドlanguagesetupがあります。 languagesetupは管理者権限が必要なのでsudoで行う必要があります。 ターミナルなどを立ち上げて、 $ sudo languagesetup Password: 1) Use English for the main language 2) Utiliser le français comme langue principale 3) Deutsch als Standardsprache ver

    Macでコマンドラインからシステムの言語を変更する方法
  • NeoBundleからDein.vimへの移行

    B! 103 0 0 0 NeoBundle はVimのプラグインマネージャーですが、 少し前に開発者の方から「NeoBundleの開発は終わり、これからは Dein.vimを使ってね。」 と言ったアナウンスがあったので .vimrcの整理を兼ねてプラグインマネージャーの変更を行いました。 Dein.vim的な設定等 TOML化 速くなったか? トラブルシューティング NeoVim? Dein.vim dein is the dark powered Vim package manager. It is created from full scratch. Concepts are: Faster than NeoBundle Simple No commands, Functions only Easy to test and maintain No Vundle/NeoBundl

    NeoBundleからDein.vimへの移行
  • Vimのdiffモード関連Tips

    B! 258 0 0 0 Vimのdiffモード機能はVimを使うべき一つの大きな理由になるくらい便利なものだと思います。 違いを見るためだけでも左右に並べて見れるので diffコマンドなんかよりもよりわかりやすく見ることが出来ます。 そのdiffモード関連のVimの機能やプラグイン等のまとめ。 vim -d vimdiff :diffsplit diffモードでの操作 diffモードの設定 :DiffOrig linediff.vim vcscommand.vim diffchar.vim vim-diff-enhanced vim -d 2つの似たようなファイルを比べたい時に $ vim -d a.txt b.txt とすると2つを比べた状態でファイルを開くことが出来ます。 3つ以上同時に比較することも可能です。 diffモードでは以下のオプションがセットされます。 diff: on,

    Vimのdiffモード関連Tips
  • Zshの補完について 2

    B! 46 0 0 0 以前、 Zshの補完について ちょっと書きましたが、 足りない所とか理解しきれてなかった所があるので追記。 Zshの補完について 補完設定ファイルの作成 補間関数がロードされるタイミング Zshの補完について 取り敢えず前回のはこちら。 Zshの補完について 補完を有効にするために autoload -U compinit compinit を.zshrc等で設定しておくことやcompdef/compadd等の 補完を作成、登録するコマンドなどについてまとめています。 上のautoloadはcompinitを有効にさせるためのコマンド。 compinitは指定されたパスにある補完ファイルから 補完をアップデートして、~/.zcompdumpというファイルに コマンドとそれに使う補間関数の定義の一覧を作成します。 パスはfpathまたはFPATHで設定されていて、 何

    Zshの補完について 2
  • シェルスクリプトのreadでControl-a等を読み取る: ANSI C quoting

    B! 26 0 0 0 trashコマンドを拡張 している時に、選択画面で上下するときにVimみたくCtrl-F で1画面進む、みたいなことしたいな、と思って Controlキーを含んだ入力をreadで読み取って扱う方法を取り入れたのでそのメモ。 入力キー1つを受け取る Controlと同時押しのキーを受け取る Tips 8進数または16進数で書くときの注意 Ctrl-Cを使いたい場合 水平タブ(Ctrl-I)等を使いたい場合 使えない文字 ESCを判断する まとめ 入力キー1つを受け取る 入力キーを1つ受け取るにはBashでは read -s -n 1 c Zshでは read -s -k 1 c とします。 スクリプトがこの時点まで進んだ時に入力待ちになって、 何か1つでもキーを押すと、そのキーがcに入ります。 必要なら直前に echo -n "input: " とでも出しておけばわか

    シェルスクリプトのreadでControl-a等を読み取る: ANSI C quoting
  • GNU Screen v4.3.0がリリースされてたのでHomebrew at Macでアップデート

    B! 23 0 0 0 GNU Screen v4.3.0 がリリースされてたので UTF8パッチをあてたFormulaをアップデートしたりして 試してみました。 GNU Screen v4.3.0 MacでHomebrewで入れてみる GNU Screen 4.3.0の新しいコマンド GNU Screen v4.3.0 GNU Screen - ニュース: GNU Screen v.4.3.0 [Savannah] これによると6月13日に4.3.0がリリースされてたようです。 ちょっと他のソフトのFormulaをアップデートしてテストとかしてた時に screenutf8.rbのFormulaがエラー出してて調べたら最近色々アップデートがあったみたいで。 2008年リリースの4.0.3から長いこと4.1.0のdevelopバージョンがちょっと出てきてて、 正式リリースが結局6年後の201

    GNU Screen v4.3.0がリリースされてたのでHomebrew at Macでアップデート
  • spark: シェルスクリプトで棒グラフ表示

    B! 251 0 0 0 GitHubで面白そうなシェルスクリプトを探してる時に見つけた Spark by holman について。 数値を棒グラフ上に表示してくれるスクリプトです。 Spark 使用例 Spark Spark は数値群を引数に与えるか標準入力で与えてあげると その数値群を棒グラフに変換してくれるシェルスクリプトです。 インストールはGitHubのレポジトリ から直接sparkというスクリプトファイルを取ってきてPATHの通った所に入れるか、 MacであればHomebrewで $ brew install spark でsparkコマンドが使えるようになります。 使い方は非常にシンプルで $ spark 0 20 40 60 80 100 ▁▂▃▅▆█ こんな感じで数値を与えるとそれを棒グラフにしてくれます。 インプットに使える数字は少数も使えますが、 実際に使われる際には

    spark: シェルスクリプトで棒グラフ表示
  • Brewfileはオワコンではない

    B! 227 0 0 0 Brewfileはオワコン と言われて久しいわけですが、 これはHomebrew体から 訳あってbundleコマンドが外されただけです。 デフォルトコマンドからはサポートが外されましたが、 bundleを引き継ぐ公式のレポジトリもありますし、 一方でより便利に使う方法とかは出てきています。 Brewdler Brew-file その他のツール まとめ Brewdler Brewdlerはbrew bundleの元になるもので(と思う)、 元々はandrew/brewdler というレポジトリにありました。 (今はこのリンクはHomebrew/homebrew-brewdler へリダイレクトされる様になっています。) 2013年の頃まではBrewdlerはRubyGemsでインストールするようになっていました。 Homebrewの拡張:brewdler, tap

    Brewfileはオワコンではない
  • Macでdefaultsコマンドで設定出来るオプションを調べる

    B! 67 0 0 0 Macではdefaults というコマンドを使ってコマンドラインからシステムの設定や アプリ毎の設定を確認したり変えたりすることが出来ます。 ただ、どの様な事が出来るのか、は色々な所で書かれてる物を断片的に集めるしか無く、 何が出来るのか知る術がなかなかよい方法がありません。 defaultsコマンドそのもので現在設定されている物は確認出来るので、 そこからコマンドに戻してあげればある程度使いたい設定項目が 分かるだろう、ということでそのリストを作るコマンドを作ってみました。 parse-plist プロパティリスト plistの解析方法 xml.dom.minidomを使った解析 plutilを使う 使い方 もうちょっと色々やってみようというところ parse-plist ということで作った物が以下にあります。 bin/parse-listを適当なPATHの通った

    Macでdefaultsコマンドで設定出来るオプションを調べる
  • c: c言語をスクリプト感覚で実行出来る様にするコマンド

    B! 92 0 0 0 PythonRubyなんかはShebangをファイルの先頭に書いておくと、 ファイルの実行権限を持っていれば内容をその言語のものとして読み取って実行してくれます。 これと同じような事をしてくれるコマンドが cです。 c Shebangを使って実行 コマンドとしてファイルを引数として渡して実行 その他出来るコト c cはファイルの中身を見ると結構単純なシェルスクリプトです。 中でccを使ってコンパイルして実行する、を一気にやってくれるわけです。 その際、実際の実行ファイルなんかは 一時ディレクトリ($C_CACHE_PATH or $TMPDIR or /tmp) に作られるのでまるでスクリプトを実行してる様な感じで コマンドが実行されます。 使うには上のレポジトリからcスクリプトを取ってきて適当なPATHの通った ディレクトリにインストールします。 Shebang

    c: c言語をスクリプト感覚で実行出来る様にするコマンド