タグ

shellに関するopparaのブックマーク (56)

  • シェルスクリプトでファイル名や拡張子名を取得する - Linux シェルスクリプト プログラミング

  • GitHub - babarot/afx: 📦 Package manager for CLI

  • シグナルと trap コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

  • 親子共々殺したい - Qiita

    殺したい。 誤解がないように書くと、fluentdとかapacheとか親プロセスがワーカー(子)を生むようなものがハングしたときに、親と子をまとめてkill -KILLしたい事がある。pkill -KILLで名前があってれば無差別にkillという方法もあるが、無差別殺人事件になる可能性があるので、特定の親子プロセスだけをkillしたい。なお、親のPIDはわかってるものとして、$PIDとおく。 UNIXでは、親を殺してしまうと子はinit養子に引き取られてしまう。そのため、親を殺す前に子を全て列挙する必要がある。psコマンドで--ppid=を付けることで調べることが出来る。

    親子共々殺したい - Qiita
  • pre-commitでShellCheckを使う

    B! 0 0 0 0 0 Gitのcommit時などに自動でlinterなどを動かしてコードを直したり警告を出したりしてくれる pre-commitでシェルスクリプトの文法チェッカーである ShellCheckを使う方法について。 pre-commit ShellCheck pre-commitのSupported hooksに載っているもの jumanjihouse/pre-commit-hooks or syntaqx/git-hooks shellcheck-py shellcheck公式のpre-commit hook 直接自分でコマンドを走らせる まとめ pre-commit pre-commitPython製のGit hookを使ってcommit時などにlinter等を実行するツールです。 Python製ですが他の言語の文法チェックなども行えます。 pipで $ pip in

    pre-commitでShellCheckを使う
  • 初学者のための正しいシェルとカーネルの概念 ~ 大学も技術者認定機関も間違いだらけ - Qiita

    なんだろう、嘘つくのやめてもらっていいですか? 大学も技術者認定機関も、いつまで古いまたは間違ったシェルとカーネルの概念を説明し続けるのでしょうか? シェルはカーネルの言葉をユーザーの言葉に翻訳したり、出力結果をユーザーに中継したり、カーネルを防御したりする層ではありません。指定したコマンドを実行するだけのプログラムです。勉強中の学生か代理執筆業者が適当な文献を調べて書いたとしか思えません。そして他人の説明を自分の言葉に置き換えるのが上手い人がおかしな説明をさらに広めています。個人サイトやオンライン学習サイト程度であれば適当なことを書いていても気にも留めませんが、大学や技術者認定機関のような正しいことを書いているに違いないと思えるような所までもが間違ったことを書いているから困ったものです。 みなさんは大学や技術者認定機関が言っていることなら正しいと思いこんでいないでしょうか? そんなことあ

    初学者のための正しいシェルとカーネルの概念 ~ 大学も技術者認定機関も間違いだらけ - Qiita
  • shellだけでリッチなTUIアプリが作れる「gum」がすごい - ハイパーマッスルエンジニア

    Shell ScriptだけでリッチなTUIアプリが作れるようになる「gum」がかなり良い感じ。 github.com 入力、書き込み、選択、Fuzzy、ローディングなど、TUIアプリに必要なものがサクッと書けるようになる。 インストール go install github.com/charmbracelet/gum@latest 機能 Input Write Filter Choose Confirm Spin Input gum input --placeholder "input here" Write gum write --placeholder "Details of this change" Ctrl+dで入力終了 Filter ls -1 | gum filter fzfでおなじみのFuzzy Filter。fzfのようにpreview表示などはできないっぽい。 Choos

    shellだけでリッチなTUIアプリが作れる「gum」がすごい - ハイパーマッスルエンジニア
  • シェルスクリプトを Lambda で実行すると途中終了するときの対処方法 | DevelopersIO

    困っていた内容 AWS CLI を実行するシェルスクリプトの実行環境を EC2 から Lambda に移行中です。 サンプルやドキュメントを参考に、aws --versionが Lambda で実行できる環境まで作ることができ、シェルスクリプトを実際に Lambda で実行したところ、処理の途中で終了しました。 数分の処理なので15分のタイムアウトは関係ないと思いますが、他に確認すべき点はありますか。 Lambdaのログ { "errorMessage": "RequestId: f3a45ffe-fb50-15dd-22de-8fca9af4b439 Error: Runtime exited with error: exit status 254", "errorType": "Runtime.ExitError" } どう対応すればいいの? bootstrapファイルのオプションを確

    シェルスクリプトを Lambda で実行すると途中終了するときの対処方法 | DevelopersIO
  • 新規アカウント作成後に CloudShell(AWS CLI) を使ってデフォルトVPCを削除する | DevelopersIO

    デフォルトVPCはアカウント作成時に自動で用意されるVPCです。 インターネットとの接続が可能なネットワーク設定になっています。 このVPCは特別な要件が無い限り削除してしまうのがいいでしょう。 意図せず このVPC上にリソースを配置して、パブリック公開になってしまう事態を避けるためです。 今回は「新規アカウント作成後に(全リージョンの)デフォルトVPCを削除する」ために、CloudShell (AWS CLI) 版の手順を書いてみました。 ※今回は手動ですが、自動化のやりかたは色々あります。以下 自動化の1つです。 Lambda-backed custom resourcesで全リージョンのデフォルトVPCを削除する | DevelopersIO デフォルトVPCを削除する手順 0. 前提 新規アカウント作成後の「ワークロードがまだ構築されていない」環境を想定しています EC2(VPC)

    新規アカウント作成後に CloudShell(AWS CLI) を使ってデフォルトVPCを削除する | DevelopersIO
  • シェルスクリプトのset -eを正しく使ってエラー処理を楽にしよう! - Qiita

    はじめに この記事は正しく理解してないとハマりやすい set -e を正しく使う方法を解説しています。実はこの記事は前に書いた「シェルスクリプトのset -eを罠を避けて使う方法」の簡略版で前回は実際の動作を詳しく書いたのですが、内容がうまくまとまらなくて満足しておらず、私が set -e を使う時に気をつけてることを考えるともっとシンプルだよなということで新たに書き直すことにしました。普通に set -e を使うだけならこの記事の範囲の理解で十分だと思います。詳しい挙動については前回の記事を参照して下さい。 2021-12-16 「4. set -e の効果がコマンド置換に継承しないシェル対策」を追加 set -e とはなにか? この記事を読むような人は知っているかと思いますが set -e とはコマンドの実行結果がエラー(= 終了ステータスが 0 以外)になった時にシェルスクリプトを自

    シェルスクリプトのset -eを正しく使ってエラー処理を楽にしよう! - Qiita
  • bashで16色表示するスクリプト用意しておくと便利 - Qiita

    それぞれのターミナル環境で色の設定違うと思われるので色の確認できるスクリプトあると便利。自分の場合は強調表示がオレンジ色付いたりとかすぐ解る。 #!/bin/bash echo -e " # Attribute codes: # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed # Text color codes: # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white # Background color codes: # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white 状態番号 \033[00m デフォルト状態 00 \033[

    bashで16色表示するスクリプト用意しておくと便利 - Qiita
  • シェルスクリプトの罠を避ける三つの tips

    シェルスクリプトは、Unix 系環境で仕事をするエンジニアなら誰もが一度は書くであろうにもかかわらず、書き方や特性を熟知している人が少ない言語です。この記事は、シェルスクリプトを書くときに罠を踏まないようにするために最低限あなたが気を付けるべき tips 集です。「たかがシェルスクリプト」とは思わないでください。生半可に書かれたシェルスクリプトはあなたの (チームの) 生産性をかえって低下させます。 Shebang に bash を明示しろ Bash でしか使えない機能のことを俗に Bashism と言います。Bashism はもちろん Bash 以外のシェルでは動きません。これに関するありがちな罠は、以下のように発生します。 Bash が /bin/sh として使われている環境でシェルスクリプトを書く。うっかり Bashism がシェルスクリプトに含まれていても、 /bin/sh は何も

    シェルスクリプトの罠を避ける三つの tips
  • AWS Systems Managerのパラメータストアに登録したJSONをシェルから利用する | DevelopersIO

    データアナリティクス事業部の鈴木です。 AWS Systems Manager Parameter Store(以降、パラメータストア)にJSONを登録し、シェルスクリプトから参照する例を紹介します。 やりたいこと パラメータストアにJSONを登録し、シェルスクリプトから参照します。 シェルスクリプトで使用する情報の登録先をパラメータストアにしておくことで、パラメータストアの様々な恩恵を享受することができます。その中でも今回は、同じ名前のパラメータを参照していても、登録する値を変えるとシェルから利用する値を変更できることに注目します。パラメータにはJSONも文字列として登録できるため、1つの名前に対してまとまった情報を登録することが可能です。 なお、パラメータストアを利用する際には、以下に注意が必要です(2021/12月時点)。 標準パラメータの最大サイズは4KBです。 デフォルトの最大

    AWS Systems Managerのパラメータストアに登録したJSONをシェルから利用する | DevelopersIO
  • 複数ファイルの改行コードをCRLF→LFに一括置換する - Qiita

    プロジェクト内でWinユーザーとmacユーザーが混在したことにより、改行コードがCRLFのファイルとLFのファイルが混在する形となってしまい、LFに統一する対応を行なった際のメモ。 ※LF→CRLFの置換だと勝手が違うようなので、あくまでCRLF→LFの前提で書いていきます。 下準備:VSCodeで改行コードを可視化する 改行を可視化するプラグインをインストールします。 下記以外にも種類があるので、自分が使いやすいものを選びましょう。 code-eol →様々な改行記号に対応しています。 line-endings →CR、LFという文字で改行が表されます。 見た目がわかりやすかったので今回はこちらを使いました。 line-endingsで改行を可視化する際は、VSCodeの設定からsettings.jsonを開き、以下を追記します。 これで改行が可視化されます。 CRLFを含むファイルを検

    複数ファイルの改行コードをCRLF→LFに一括置換する - Qiita
  • ShellでSeleniumを作る ~Shellnium~ - Qiita

    はじめに この記事はQiita夏祭り2020のイベントの1つ、パソナテックさんが開催している「〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマで投稿しています。 いやぁ良いお題ですよね。エンジニア心揺さぶられるし、景品も豪華だし、何よりちょっとワクワクしたので参加させていただきました。 今回は「ShellでSeleniumを作る ~Shellnium~」というお題でやっていきます。下記はShellniumで遊んでいるGIFです。 ブラウザの自動操作の模様をiTermの背景として鑑賞することができます。意味不明さがすごいですね。(透明度をいじってるとかではありません) いろんな言語でSeleniumは扱える Seleniumは皆さん御存知の通り、ブラウザの自動操作をするツールですね。 SeleniumはWebDriverを介してブラウザの自動操作を行っていくもので、php,

    ShellでSeleniumを作る ~Shellnium~ - Qiita
  • Amazon Linux2のシェルプロンプトのホスト名を変更する

    Amazon Linux2 のシェルプロンプトは、初期状態では ip-192-168-63-91 のように IP アドレスをハイフンでつないだ文字列が表示されます。 [ec2-user@ip-192-168-63-91 ~]$ これを、以下の webserver のように任意の文字列に変更する方法を紹介します。インスタンスのホスト名を変更せずにシェルプロンプトのみ変更します。 [ec2-user@webserver ~]$ 作業するサーバを間違えていないかシェルプロンプトを見て確認することができるため、番環境で作業をするときに安心します。 /etc/profile.d/prompt.sh に環境変数に設定する Amazon Linux インスタンスのホスト名に影響を与えずにシェルプロンプトを変更する - Amazon Elastic Compute Cloud を参考に進めます。 NIC

    Amazon Linux2のシェルプロンプトのホスト名を変更する
  • シェルスクリプトのための良いデザイン ~ expr と bc から知る設計の違い ~ - Qiita

    はじめに POSIX で規定されているコマンドに expr コマンドと bc コマンドがあります。expr は正規表現による比較ができる一方 bc コマンドは高度な算術計算が行えるなど機能は全く同じではありませんが共通する機能として数値計算機能を持っています。ただし同じ計算を行うだけでも、この 2 つのコマンドは設計に大きな違いがあります。この記事ではこの 2 つのコマンドの違いから、シェルスクリプトにとってふさわしいコマンドの設計について解説します。 引数 vs パイプ expr と bc の違いは簡単な計算を行うだけですぐ気づきます。例えば 1 + 2 を行う場合は次のようになります。 なんと bc コマンドは面倒くさいんでしょう? どうみても expr の方が直感的です。わざわざ計算する数式をパイプで渡すなんて冗長です。echo なんて要らないでしょう?シェルスクリプトを格的に学ぶ

    シェルスクリプトのための良いデザイン ~ expr と bc から知る設計の違い ~ - Qiita
  • GitHub - ko1nksm/shdotenv: dotenv for shells with support for POSIX-compliant and multiple .env file syntax

  • [一撃]正規表現で一致したS3バケットを削除するシェルスクリプトを書いてみた | DevelopersIO

    うわっ…私のバケット、多すぎ…? こんにちは、のんピ です。 cdk deployとcdk destroyで楽しくスクラップビルドをしていたら、S3バケットが大量に作成されていた なんてことはありませんか? 私はあります。 現在の私の環境のS3バケットは42個もありました。 マネージメントコンソールからS3バケットを削除する際には、バケットを1つずつ選択して一度バケットの中身を空にしてから削除する必要があります。 真心を込めた手作業で対応しても時間が勿体ないです。 ここでS3バケット名をご覧いただくと分かりますが、作成されたS3バケット名は先頭は固定の文字列で、後半はランダムな文字列(モザイクの裏側)になっています。 これを利用して正規表現に一致したS3バケットを一撃で大量に削除しようと思います。 正規表現に一致したS3バケットを削除するシェルスクリプト 作成したシェルスクリプトを記載しま

    [一撃]正規表現で一致したS3バケットを削除するシェルスクリプトを書いてみた | DevelopersIO
  • どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita

    シェルスクリプトは環境依存が激しいから…… などとよく言われ、敬遠される。それなら共通しているものだけ使えばいいのだが、それについてまとめているところがなかなかないので作ってみることにした。 「どの環境でも使える=POSIXで定義されている」と定義 「どの環境でも使える」とは、なかなか定義が難しい。あまりこだわりすぎると「古いものも含め、既存のUNIX全てで使えるものでなければダメ」ということになってしまう。しかし、私個人としては 今も現役(=メンテナンスされている)のUNIX系OSで使いまわせること にこだわりたい。 とはいっても全てのOSやディストリビューションについて調べられるわけではないので、この記事では基的に最新のPOSIXで定義されていることをもって、どの環境でも使えると判断するようにした。(飽くまで「基的に」ということで) 従って、互換性確保のため、シェルの中で使ってよい

    どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita