Corredor

ウェブ、プログラミングの勉強メモ。

Bash

テキストファイルを確認する Linux コマンドのまとめ

普段 Linux 環境でテキストファイルを見たり編集したりする時、僕はもっぱら Vim を使っている。しかし、ログファイルを閲覧したりする時は、less とかを上手く使えるとカッコイイ気がする。 そこで今回は、今更ながらテキストファイルを閲覧するコマンド類…

シェルスクリプトの Lint ツール「shellcheck」を使ってみた

シェルプログラミング実用テクニック (Software Design plusシリーズ) [ 上田隆一 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > OS > Linuxショップ: 楽天ブックス価格: 3,278円 日頃、Bash で簡単なスクリプトを書くことがある。何もインストール…

Git For Windows SDK に expect コマンドが入っていなかったので pacman でインストールする

パスワードを使って SSH 接続する時に、expect コマンドを使うと、入力を自動化できたりする。 neos21.hatenablog.com このシェルスクリプトを作ったのは MacOS だったので、Windows でも同じことをしたくなった時に、GitBash に expect コマンドが入ってい…

SSH Config の管理を捗らせる Include と、ホストを一覧表示するワンライナー

~/.ssh/config (SSH Config) というファイルに、SSH 接続情報を記載しておける。当然、コマンドをイチイチ打つより便利なので多用しているのだが、最近そろそろ登録ホスト数が増えてきて、1ファイルに書いておくのが大変になってきた。 そこで調べてみると、…

踏み台サーバを2台経由して SSH ログイン・ポートフォワーディングする

通常、最もシンプルな構成で別のサーバに SSH 接続する際は、 ローカルマシン 目的のサーバ という登場人物で、ローカルマシンから $ ssh -i 【ローカルマシンにある秘密鍵のパス】 【目的のサーバのユーザ名】@【目的のサーバのパブリック IP】 と叩けば SS…

awk を使って出力のアラインメントを揃える

Node.js スクリプトを書く際は、console.table() とか、columnify という npm パッケージとかを使うと、出力するデータをイイカンジに整形できる。 neos21.hatenablog.com 今回は Bash スクリプトの中で、イイカンジに整形したくて、やり方を調べた。 参考:…

git pull 時に --set-upstream-to とか言われるのを回避するコマンドを作る

git pull した時に --set-upstream-to しろみたいなコメントが出て、git pull 出来ない時がある。 $ git pull There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details…

MacOS と Linux で top コマンドが大分違うので整理する

top コマンドで CPU 使用率やメモリ使用率を見たいなーと思ったのだが、MacOS と Linux (CentOS) とでオプションがかなり違うので、よく使うモノを整理することにした。 環境確認 普通に top コマンドを打った画面 CPU 使用率順にソートする メモリ使用率順…

MacOS で at コマンドを有効化して使ってみる

あるコマンドを予約実行したい場合、すぐ思い付くのは cron (crontab) かと思われる。しかし cron は、ある処理を定期的に繰り返し実行するスケジュール設定になっており、ある処理をある時に1回だけ行いたい場合には使いづらい。 ある処理を1回だけ予約実行…

Homebrew でインストールしたツールを実行したら「Insecure world writable dir」とかいうエラーが出た件の対処法

MacOS Mojave にて、Homebrew でインストールした ghi というツールを実行したところ、以下のようなエラーが出た。 /usr/local/Cellar/ghi/1.2.0_4/libexec/bin/ghi:128: warning: Insecure world writable dir /usr in PATH, mode 040777 ワーニングメッセ…

文字単位で Diff が見られる「icdiff」

通常の diff だと行単位での差分しか見られないので、$ git diff --color-words --word-diff コマンドや --word-diff-regex='\\w+|[^[:space:]]' オプションを使って頑張って文字単位の差分を見たりしていた。 しかし、それ専用のコマンドがあった。icdiff …

Typo したコマンドを正してくれる「thefuck」

git push コマンドを git psh と叩いてしまい、「何それ?」とターミナルに怒られた。というような経験は皆さんもよくあることだろう。 そんな時、thefuck というツールを入れておけば、ターミナルに $ fuck と言うだけで、「もしかしてこういうコマンドが打…

find コマンドで対象ディレクトリ直下のファイルのみを絞り込みたい

find コマンドを使うと、対象ディレクトリのサブディレクトリ以下のファイルも検索対象に含んでしまう。 # カレントディレクトリ配下の Markdown ファイルを全て出力する $ find . -type f -name '*.md' ./AAA.md ./BBB.md ./CCC/ccc.md ./DDD/ddd/DdD.md そ…

グローバル IP アドレスを取得するウェブサービスまとめ

自身のグローバル IP アドレスを確認するためのウェブサービスをまとめる。いずれも curl コマンドで実行した時に、IP アドレスのみが返されるように調整している。 # 以下は IP アドレスのみがそのまま返ってくる $ curl inet-ip.info $ curl ifconfig.me $…

XREA のサーバに SSH 接続する

メインサイト Neo's World は、XREA というウェブホスティングサービスのかなり初期の頃に取得したアカウントだ。コレ以前に s15 サーバも取得していたし、別サイトで s38・s41・s58 サーバなどをレンタルしたことがある。さらに最近、Yahoo! Geocities の閉…

CentOS7 を日本語環境にする

GCP に登録して GCE をイジり始めた。CentOS 7 イメージを利用して VM を立ててみたのだが、デフォルトでは英語環境になっているので、いくつか日本語環境としての変更を入れてみる。 タイムゾーンを UTC から JST に変更する 標準出力の日本語表示化 man ペ…

SSH 鍵ペア・API 鍵ペアの作り方おさらい

ある VM に SSH 接続する時に使う鍵ペアとか、API Key として認証に使用する鍵ペアの作り方をおさらいする。それぞれは何らかの記事で紹介したことがあると思うが、コマンド単体で紹介したことがなかったので。 SSH 鍵ペアの作り方 API 鍵ペアの作り方 SSH …

man ページに出てくる (1) などのカッコ付き数字は何?

man コマンドに関する話。 以下は MacOS の場合だが、ターミナルで $ man chown と叩くと、次のように表示される。 CHOWN(8) BSD System Manager's Manual CHOWN(8) NAME chown -- change file owner and group …中略… SEE ALSO chgrp(1), find(1), chown(2)…

OCI CLI のプロファイルからテナンシの OCID を得る Bash スクリプト

OCI (Oracle Cloud Infrastructure) の各種操作・閲覧が行える OCI CLI。 OCI CLI を使う際は、接続先の環境などを記したプロファイルを用意する。$ oci setup config コマンドでプロファイルを作成すると、デフォルトでは ~/.oci/config というパスにファイ…

チートシートを検索・出力するコマンドラインツール「ch-sh」を作った

僕は自分用チートシートとして、よく Markdown ファイルにスニペットやコマンドなどを記載している。その Markdown ファイルたちが入っているディレクトリでよく grep するので、コマンド化してみた次第。その名も「ch-sh」。 GitHub - Neos21/ch-sh: チート…

grep -l で取得したファイル名リストを for in で回す

Bash の話。 grep -l コマンドで、検索文字列を含むファイル名のみを出力できる。こんな感じだ。 # -r オプションは指定ディレクトリ配下を再帰的に検索する $ grep -lr '検索文字列' './テスト ディレクトリ/Texts' ./テスト ディレクトリ/Texts/Test1.md .…

MacOS の /System/ ディレクトリ配下のファイルを削除したかったので SIP を解除した

MacOS Mojave で検証。 Finder で、「システム」や「ユーザ」などのディレクトリが日本語で見えているのが気になった。 これらの表記は、当該ディレクトリ直下にある .localized というファイルを削除すると英語表記に戻せるのだが、このファイルは Finder …

コマンドを1つずつ確認してもらいながら実行するシェルスクリプト

複数のコマンドを順に実行していくだけなら、シェルスクリプトとしてコマンドを羅列していけば良いが、 場合によって途中のコマンドだけ実行をスキップしたいことがある 間違いがあった時に途中で中断しやすくしたい などの理由から、コマンド群が一気に実行…

色々な設定ファイルにプロキシ設定が含まれていないか確認するスクリプト

自分は、社内ネットワーク内で仕事をする時と、インターネットに直接繋いで作業する時とで、設定ファイルを使い分けている。.bashrc や .gitconfig、.npmrc などのファイルだ。 社内ネットワークで仕事する場合は、これらのファイルに社内ネットワーク向けの…

Bash での変数展開・真偽判定のまとめ

Bash における変数展開、および真偽判定の書き方を色々と試した。ただの学習記録。 変数展開 Bash 変数展開 · GitHub 真偽判定 Bash 条件式の真偽を判定する · GitHub 以上。 入門bash 第3版作者: Cameron Newham,Bill Rosenblatt,株式会社クイープ出版社/メ…

LINE Notify を使ってシェルスクリプトから LINE に通知を送る

LINE Notify というサービスを利用すると、コマンドラインから LINE アプリに対して通知を送れたりするので試してみた。 パーソナルアクセストークンを発行する curl でメッセージを送ってみる 以上 パーソナルアクセストークンを発行する まずは LINE Notif…

Mac のデスクトップ通知をシェルスクリプトから送る

MacOS Mojave で検証。Mac で Slack などを使っていると、画面の右上に表示されるデスクトップ通知。コレをシェルスクリプトから送ってみる。内部的には AppleScript を使っている。 $ osascript -e 'display notification "お知らせです" with title "タイ…

Windows GitBash で Python・Node.js・Docker が上手く動かない場合は winpty を設定する

Windows GitBash にて、$ python や $ node コマンドを叩いて、プロンプト上で簡単なコードを動かしてみたかったのだが、どうもプロンプトの応答が戻ってこない。 また、$ docker 関連のコマンドを使うと、以下のようなエラーメッセージが返ってきた。 $ doc…

Bash で一括リネームするアイデア

Bash でファイルを一括リネームしたく、やり方を調べていた。 今回リネームしたいファイル群は、 01 hoge.png 02 fuga.png 03 foo.png 04 bar.png …と、こんな風に「連番 + テキスト」となっている画像ファイルで、「テキスト」部分を除去して連番のみのファ…

history コマンドに日時も記録する

以前、ターミナルのプロンプト PS1 に \D{%F %T} という書式を加えて、現在日時を画面上に表示するようにした。コレはターミナルの実行結果をまるごとコピペすれば作業日時付きの証跡になるので有用だと思っている。 neos21.hatenablog.com しかし、プロンプ…