並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 125件

新着順 人気順

シェルスクリプトの検索結果1 - 40 件 / 125件

  • いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita

    いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう!ShellScriptBashLinuxUNIXmacOS はじめに [ $? -eq 0 ] や [ $? -ne 0 ] は冗長でデメリットしかありません。非常に多く見かける書き方ですが、1979 年に Bourne シェルが広く公開された時からこのようなコードは必要ありませんでした。実際に当時はこのような書き方は使われておらず、このような書き方をしなければならなかった歴史的な経緯などはありません。これはなぜか広まってしまった良くない書き方です。 優れたコードとは無駄がないシンプルなコードです。丁寧なコードとは無駄な処理を書くことではありません。[ $? -eq 0 ] や [ $? -ne 0 ] は書かないほうが、簡単で読みやすくわかりやすくなります。優れた文法

      いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita
    • 【永久保存版】シェルスクリプト完全攻略ガイド - Qiita

      弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 シェルスクリプトの世界へようこそ! シェルスクリプトって何? シェルスクリプトは普段 Bash などのシェルで実行しているコマンドを並べて、まとめて実行できるようにしたものです。ファイルのバックアップ、ログファイルの解析、システムのセットアップなど、ターミナルで行っていた一連の作業をまとめてシェルスクリプトに記述することで、シェルスクリプトを実行するだけで自動的に一連の作業を終わらせることができるようになります。また、シェルスクリプトはファイルに保存することになるため、再利用するのも簡単になります。 シェルスクリプトで使うコマンドの多くは UNIX コマンドになると思います

        【永久保存版】シェルスクリプト完全攻略ガイド - Qiita
      • シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ

        はじめに 開発部の ikasat です。 皆さんは git, ssh, rsync のような外部コマンドを呼び出すスクリプトを書きたくなったことはありますか? 個人的にこの類のスクリプトは最初はシェルスクリプトとして書くのですが、改修を重ねるうちに肥大化して処理も複雑になり、 後から Python のような汎用プログラミング言語で書き直すことがよくあります。 外部コマンド呼び出しを書き直す際に、Git 操作のために pygit2、 SSH 接続のために paramiko のようなライブラリをわざわざ使うのは大がかりだったり、 rsync に相当するようなこなれたライブラリが存在しなかったりする場合があります。 そのような時は標準ライブラリの subprocess モジュールを利用し、Python から外部コマンドを呼び出すことになるでしょう。 しかしながら、Python のチュートリアルペ

          シェルスクリプトとの対比で理解するPythonのsubprocess - 朝日ネット 技術者ブログ
        • Bashシェルスクリプトの作成法をゼロから解説したLinux/WSL/macOSのユーザー向け解説書/『Bashシェルスクリプト入門』が発売【Book Watch/ニュース】

            Bashシェルスクリプトの作成法をゼロから解説したLinux/WSL/macOSのユーザー向け解説書/『Bashシェルスクリプト入門』が発売【Book Watch/ニュース】
          • シェルスクリプトをJavaScript/TypeScriptで記述、どのOSでも実行できる「Bun Shell」、JavaScriptランタイムのBunが発表

            JavaScriptランタイムのBunは、新機能としてシェルスクリプトをJavaScriptもしくはTypeScriptで記述し、特定のOSに依存せずに実行できる「Bun Shell」を発表しました。 シェルスクリプトは特定のシェルに依存するもの LinuxやmacOS、WindowsなどのOSは一般に、「シェル」(Shell)と呼ばれる機能を備えています。 シェルはコマンドラインインターフェイスなどのユーザーとの対話機能を備えており、例えばLinuxのコマンドラインで「ls」コマンドを打ち込むとファイルの一覧が返ってくるという動作はシェルが提供しています。 そしてシェルでは一般に、こうしたコマンドを複数つなげた一連の動作をスクリプトとして定義し実行できる「シェルスクリプト」が利用可能です。例えば、次のシェルスクリプトは、「ls」コマンドによるファイルの一覧をファイル「list.txt」に

              シェルスクリプトをJavaScript/TypeScriptで記述、どのOSでも実行できる「Bun Shell」、JavaScriptランタイムのBunが発表
            • 祝🎉 POSIX.1-2024 (Issue 8) 改定!16年ぶりの大幅改定でシェルスクリプトはどう新しくなるのか? - Qiita

              FreeBSD では 2024-05-31 に 200112 から 200809 への変更がようやく行われました(一度間違えて 200808 と書いてしまっていますが)。 https://cgit.freebsd.org/src/commit/?id=2e30926a68 https://cgit.freebsd.org/src/commit/?id=6e0278408e macOS は FreeBSD のユーザーランドのコマンドを使用しているため、そのせいで 200112 のままだった可能性も考えられますが、シェルやカーネルは FreeBSD のものではないため、FreeBSD が変更になったからと言って macOS が更新されるとは限らないでしょう。Solaris 10 と 11 ではディレクトリごとに準拠バージョンが異なるバイナリが配置されており以下のようになります。Solaris

                祝🎉 POSIX.1-2024 (Issue 8) 改定!16年ぶりの大幅改定でシェルスクリプトはどう新しくなるのか? - Qiita
              • 良いシェルスクリプトのためのkillとtrapの基本 ~ シグナル番号は使わない、シグナル名を使う - Qiita

                はじめに kill コマンドと trap コマンドはシェルでシグナルの送信と受信を行うためのコマンドです。このコマンドは意外と適切ではない使われ方をよく見かけます。この記事では kill と trap の基礎知識を解説します。 POSIX準拠のkillコマンドの構文 POSIX で標準化されている kill コマンドの使い方は次のとおりです。POSIX で標準化されているというのは移植性が高い書き方ということを意味しています。シグナル名の指定には -s オプションが必要です。そして signal_name であって signal_number でないことに注意してください。POSIX シェルの世界にシグナル番号という概念はありません。シグナル番号を指定した書き方は避ける方をおすすめします。

                  良いシェルスクリプトのためのkillとtrapの基本 ~ シグナル番号は使わない、シグナル名を使う - Qiita
                • シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 - Qiita

                  はじめに シェルスクリプトの世界は今後 10 年で大きく変化します。10 年という数字は切りが良い数字を持ってきただけで根拠はありません。これより長い時間がかかるかもしれませんし、もしかしたら短くなるかもしれません。しかし確実によりよい方向に変わっていくでしょう。Unix/Linux の標準コマンドはさまざまな問題を抱えています。Unix/Linux の標準コマンドに依存している限りシェルスクリプトに大きな改善はありません。これからのシェルスクリプトの世界は Unix/Linux の標準コマンドに依存しない世界です。それがどういうものになるのかをこの記事で解説しています。この記事は私の予言であり目標です。 シェルスクリプトの失われた30年の進化を取り戻す! 残念なことに、シェルスクリプトの世界は 30 年前から大きく変わっていません。それまでの間、プログラミング言語の世界、ソフトウェア開発

                    シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 - Qiita
                  • Bun でクロスプラットフォームなシェルスクリプト

                    Bun でクロスプラットフォームなシェルスクリプト 2024.01.20 Bun の `$` を使うと、クロスプラットフォームなシェルスクリプト(Bun Shell)を書くことができます。Bun Shell は macOS (zsh)、Linux (bash)、および Windows (cmd) と OS の違いを気にせずにシェルスクリプトを書ける、JavaScript オブジェクトとのやりとりが可能であることが特徴です。

                      Bun でクロスプラットフォームなシェルスクリプト
                    • リードタイムを測るシェルスクリプトを作ってチームの振り返り会を活発にした話 - Classi開発者ブログ

                      こんにちは。エンジニアのすずまさです。 去年の夏頃にリードタイムの計測を始めてから、振り返りで良い気づきを得られるようになったりリードタイムを減らすアクションが生まれたりと良いことがたくさんあったので、今回はその紹介をしようと思います。 リードタイムの定義 『LeanとDevOpsの科学』では、リードタイムを「コードのコミットから本番稼働までの所要時間」として定義しています。 私たちのチームのリポジトリではブランチ戦略としてGitHub Flowを採用しており、mainへのマージと本番稼働のタイミングが近しいため「PRをopenしてからマージするまでの期間」をリードタイムとして定めて計測しました。 リードタイム計測を始めた動機 私たちのチームでは「チームのスピードがあまり出ていない気がする」という漠然とした課題感がありました。しかし、課題感はありつつも、ではどうするかと言われると具体的なア

                        リードタイムを測るシェルスクリプトを作ってチームの振り返り会を活発にした話 - Classi開発者ブログ
                      • シェルスクリプトの関数で「戻り値」を返す方法、全部まとめ(bash/zshの新機能 関数置換・値置換の使用例) - Qiita

                        シェルスクリプトの関数で「戻り値」を返す方法、全部まとめ(bash/zshの新機能 関数置換・値置換の使用例)ShellScriptBashZshkshmksh はじめに シェルスクリプトのシェル関数の return コマンドは他の言語のような戻り値を返すものではありません。return コマンドで返すものは終了ステータス、つまり 0 から 255 までの数値です。しかし現実には終了ステータス以外の値を返したいというのはよくあります。この記事ではシェル関数から「他の言語でいう戻り値を返す」に相当する方法をすべてまとめました。または次期 bash 5.3/zsh 5.10 で追加される予定の「関数置換 (funsub)」と「値置換 (valsub)」の機能の紹介です。 この記事では現時点で開発中の bash 5.3 と zsh 5.10 に追加される予定の「関数置換」と「値置換」の話を扱って

                          シェルスクリプトの関数で「戻り値」を返す方法、全部まとめ(bash/zshの新機能 関数置換・値置換の使用例) - Qiita
                        • 最終行に改行がないテキストファイルをシェルスクリプトで上手く扱う方法 - Qiita

                          はじめに 一般的にファイルの最終行に改行がないデータを扱うのは良い考えとは言えません(よくない理由は別記事で書きます)。しかしそれでも扱いたい場合もあります。この記事ではその方法をまとめました。 この記事は シェルスクリプト&PowerShell Advent Calendar 2023 2日目の記事です。 ファイルの末尾に改行が必要なのは「POSIXの仕様」だとする説がありますが、これは間違いで POSIX は標準規格で使用している「テキストファイル」の用語を定義しているだけです。 POSIX では「テキストファイル」という用語を、0行以上の行で構成されたファイルと定義しており、行とはヌル文字がを含まず末尾に改行がある LINE_MAX バイト(一般的に2048バイト)以内の文字列のことです。 詳細は以下を参照してください。 「POSIXがファイルの末尾に改行が必要と決めた」はガセネタ

                            最終行に改行がないテキストファイルをシェルスクリプトで上手く扱う方法 - Qiita
                          • 型安全なシェルスクリプトを書けるプログラミング言語Amberを使ってみた

                            シェルスクリプトを型安全に書きたいと考える人もいると思います。 そういった人におすすめのRust製プログラミング言語Amberを使ってみたので簡単に紹介します。 Write your scripts in a modern type-safe and runtime-safe programming language that handles many bugs and mistakes during compilation process. GitHub Star Historyによると最近一気にGitHubのスター数を獲得したようです。 この記事の内容は現時点(2024/05/19)の以下の公式ドキュメントをベースに、追加でソースコードを調べて試した結果を基に書いています。 Discordで活発に議論が行われており、READMEや公式ドキュメントも頻繁に更新されているようなので、この記

                              型安全なシェルスクリプトを書けるプログラミング言語Amberを使ってみた
                            • シェルスクリプトでファイルを一行ずつreadする処理を高速化するテクニック - Qiita

                              期待してる人ががっかりしないように、最初に結論を書いておくと dash、busybox (ash)、mksh、yash、zshにおいて読み込み速度は大幅に速くなりますが bash においては変わりません。ただしは使用メモリが減ります。kshは少し速くなりますが逆に使用メモリは大幅に増えます。シェルスクリプトでの読み込み速度を上げるもので、他の言語を使ったりコマンドを呼び出すよりも速くなるわけではありません。 シェルスクリプトでファイルを一行ごとに読み込む時、一般に使われているのは read 関数です。ですが、この read 関数、遅いというわさを聞きました。たしかに一行毎ずつ読み込むのですから cat を使ってファイル全体を読み込むのに比べれば遅いでしょうが、そのままでは一行ずつ処理をすることは出来ません。 さて一行ずつ処理したい場合に使えるのは read 以外どのような方法があるでしょう

                                シェルスクリプトでファイルを一行ずつreadする処理を高速化するテクニック - Qiita
                              • JavaScriptでシェルスクリプトを書ける「ZX 8.0.0」

                                ZX開発チームは現地時間2024年4月6日、ZX 8.0.0をリリースした。ZXはJavaScriptベースのシェルスクリプト。bashよりも効率的なシェルコマンドやシェルスクリプトを実行できる。本バージョンは安全性と安定性を向上させているが、標準出力設定を扱う「$.verbose」「$.quite」の動作変更やSSH APIの廃止、PowerShell使用時の指定変更など、大きな変更が加わった。なお、現地時間4月8日にオプション追加など改良を加えたバージョン8.0.1もリリースしている。 ZXの公式サイト ZXは当初Googleの開発メンバーが多く関与していたが、現在はAnton Medvedev氏が中心となって、開発が進められている。Node.js環境を構築するよりも容易にJavaScriptを実行できるため、bashのシェルスクリプトに不慣れな方は、日常的に開発で用いるJavaScr

                                  JavaScriptでシェルスクリプトを書ける「ZX 8.0.0」
                                • AWS Security Hubで複数リージョン複数コントロールをまとめて無効化するシェルスクリプトを作ってみた | DevelopersIO

                                  複数あるグローバルリソースのコントロールを複数リージョンまとめて無効化したい こんにちは、のんピ(@non____97)です。 皆さんはSecurity Hubで複数あるグローバルリソースのコントロールを複数リージョンまとめて無効化したいと思ったことはありますか? 私はあります。 先日、Security Hubでグローバルリソースの課金を抑えるためには「一つのリージョンでのみグローバルリソースを対象としたコントロールを有効化し、その他のリージョンでは無効化するべき」ということを紹介しました。 こちらの対応をしない場合のコストインパクトについては以下記事が分かりやすいです。 では、コントロールの無効化はどのように行えば良いでしょうか。 2024/6/16時点でグローバルリソースを含む Security Hub コントロールは49個あります。詳細は以下AWS公式ドキュメントをご覧ください。 私

                                    AWS Security Hubで複数リージョン複数コントロールをまとめて無効化するシェルスクリプトを作ってみた | DevelopersIO
                                  • シェルスクリプトが速くなる! forkしない新しいコマンド置換がやってくる!(次期bash/zshの新機能) - Qiita

                                    シェルスクリプトが速くなる! forkしない新しいコマンド置換がやってくる!(次期bash/zshの新機能)ShellScriptBashZshkshmksh はじめに シェルスクリプトを遅くする大きな原因は fork と exec です。この二つは OS のインターフェースである fork() 関数と exec() 関数のことで、シェルスクリプトからは、外部コマンドやバックグラウンドプロセスの実行、明示的なサブシェル (...)やコマンド置換 ret=$(...)、パイプの使用などで呼び出されます。 シェル関数はシェルの中で実行される関数であるため、単純にシェル関数を呼び出す場合には fork も exec も行われません。しかしシェル関数の出力を変数に代入しようとコマンド置換(var=$(func))を使うと、exec は行われませんが fork は行われてしまいます。その事に気づかず

                                      シェルスクリプトが速くなる! forkしない新しいコマンド置換がやってくる!(次期bash/zshの新機能) - Qiita
                                    • Rubyはシェルスクリプトに最適な言語 | ソフトアンテナ

                                      日本生まれのプログラミング言語「Ruby」。 Webフレームワーク「Ruby on Rails」のプログラミング言語として人気を集めていますが、元々はPerlを置き換える事が出来る「グルー言語」としても注目を集めていました。 今回、開発者のLucas Seiki Oshiro氏は、シェルスクリプト作成用のプログラミング言語としても優れているRubyの特徴を、ブログ記事「Ruby: a great language for shell scripts!」で紹介しています。 この記事によると、Rubyの優れた特徴の1つはバッククォートを使って他のコマンドを簡単に呼び出し、その結果を格納できる点にあります。また実行結果を、$?で簡単にコマンドの終了ステータスを取得できるのも便利な機能だとされています。 `ls` my_date=`date` `true` puts $? # 0 `false`

                                        Rubyはシェルスクリプトに最適な言語 | ソフトアンテナ
                                      • AWS CLIとシェルスクリプト、いつ使う?活用できる場面とTips紹介 #devio2024 #cm_odyssey | DevelopersIO

                                        2024/07/31にクラスメソッドの大阪オフィスにて DevelopersIO 2024 OSAKA が実施されました。 参加いただいたみなさま、ありがとうございます! その中で 「AWS CLI と シェルスクリプト、いつ使う?活用できる場面とTips紹介」 というタイトルで登壇させていただきました。 登壇の内容はひとことで言うと 「AWS CLI の出力と併せて、色んなテキスト処理コマンドを活用すると捗るよ」 みたいな感じです。 使った資料を本ブログで公開します。 参考になれば幸いです。 スライド 補足: スライド内のコード(「適切な出力を選ぼう」章) yaml: 雑に grep

                                          AWS CLIとシェルスクリプト、いつ使う?活用できる場面とTips紹介 #devio2024 #cm_odyssey | DevelopersIO
                                        • シェルスクリプトとGrafanaを使用したサーバ監視~Hardening 2023 Generatives~

                                          2023年10月5日~6日に開催されたHardening 2023 Generatives[1](以下、H2023Gと記載)にNECはスポンサーとして協賛しており、ハードニング競技会および競技会でのMarketPlace(後述)として参加を行いました。本ブログでは、MarketPlace(以下、MPと記載)で提供したサービスの詳細、そして競技およびMPに参加したメンバーの参加記を紹介します。

                                            シェルスクリプトとGrafanaを使用したサーバ監視~Hardening 2023 Generatives~
                                          • Dataformワークフローをシェルスクリプトで動かす | DevelopersIO

                                            Dataformを何回も起動して検証データ作成するということをする際に、シェルスクリプトでサクッと自動化できないかなと思いやってみました。 やりたいこと コンパイル変数をシェルスクリプト内で動的に設定し、コンパイルしてDataformのワークフロー実行 今回は例として、コンパイル変数を受け取りテーブルにInsertするという簡単なDataformワークフローを作成して、そのワークフローに動的にコンパイル変数を渡してワークフローを実行するということをしてみました。 前準備 Dataform側を設定してしまいます。 config { type: "operations" } INSERT INTO `データセットID.shelltest_table` (yyyymmdd_str) VALUES (${dataform.projectConfig.vars.compile_val}); shel

                                              Dataformワークフローをシェルスクリプトで動かす | DevelopersIO
                                            • 【初心者向け】ChatGPTがシェルスクリプトをうまく作ってくれない時に知りたかった4つのコツ - RAKUS Developers Blog | ラクス エンジニアブログ

                                              皆さんこんにちは!開発エンジニアをしているnkumaです! 最近ますます生成AI系の勢いが増しているのを感じる今日この頃です。 今回は、(1年くらい前の経験にはなりますが)ChatGPTを触り始めたくらいに躓いた経験から、 うまくいかないときに試していただきたい工夫をいくつかご紹介したいと思います。 本記事のターゲット お使いのChatGPTが素直じゃない方 なぜかChatGPTに作らせたいものが、どんどん逸れていってしまう方 など ※ChatGPTやシェルスクリプトといった言葉は知っている初心者を対象といたします。 そのため、そういった言葉の定義や解説は当記事では触れないのでご了承ください。 本記事のターゲット はじめに 知りたかったコツ4個 ⓵ 段階的に飲み込ませる ② パーツごとに作成してもらい、組み合わせるのは自分でやる ③ 入力データを用意して、読み込ませる ④ 都度、途中経過の

                                                【初心者向け】ChatGPTがシェルスクリプトをうまく作ってくれない時に知りたかった4つのコツ - RAKUS Developers Blog | ラクス エンジニアブログ
                                              • シェルスクリプトでバイナリファイルをランダムアクセスする方法 - Qiita

                                                はじめに この記事ではシェルスクリプトでバイナリデータを扱う方法とランダムアクセスする方法についてまとめました。シェルスクリプトでバイナリデータを扱うことはあまりないかもしれませんが、まとまった情報があるとそういう事をしたい人にとって役に立つでしょう。使用するシェルは POSIX シェル、使用するコマンドは OS に標準インストールされている POSIX コマンドのみを使用し、POSIX で標準化されている範囲だけで実現しています。 ちなみにシェルスクリプトでバイナリデータを扱えるからと言って、シェルスクリプトでバイナリデータが扱いやすいということにはなりません。64ビット符号なし整数で扱うにはどうするか、計算を高速に行うにはどうするかなど、さまざまな問題はシェルや awk を単に使うだけではも解決できません。頑張ったところでネイティブの速度には 100 倍以上のレベルで負けます。一般的な

                                                  シェルスクリプトでバイナリファイルをランダムアクセスする方法 - Qiita
                                                • シェルスクリプトでスペースを含む文字列をコマンドにわたす

                                                  音源ファイルパスのリストを読み込み、コーデックを取得するシェルスクリプトを作成しました。 ファイル名にスペースが含まれている際に、コマンドを意図した通りに実行することができず困ってしまったので、対処法を残しておきます。 NG: 読み込んだファイルパスをそのままコマンドにわたす ファイル名にスペースが入っていると、$file がスペースで分割されて複数の引数として認識されてしまう。 #!/bin/bash cat filepath.txt | while read file do ffprobe -loglevel quiet -show_streams -print_format json $file done NG: 読み込んだファイルパスをエスケープしてコマンドにわたす ファイルパスをエスケープしてみたが、結局 $escaped がスペースで分割されてしまうのは変わらず、複数の引数とし

                                                    シェルスクリプトでスペースを含む文字列をコマンドにわたす
                                                  • 【find -mtimeに移植性はない】Unix標準コマンドを使ってる限り、どこでも動くシェルスクリプトなんて書けるわけねーだろ - Qiita

                                                    find -mtime は POSIX で標準化されていますが互換性がありません。find -mtime n、find -mtime +n、find -mtime -n の範囲が環境によって違うのを知っていますか? find -mtime を使うシェルスクリプトは違う OS に持っていったら正しく動かないでしょう。 以下の検証は 0 または 1 を起点n(n日前)としてその前後のオフセット時間にマッチするか(<==> がマッチ範囲)を示したものです。流石に同じだと思うので n > 1 では検証していません。というか誰か他に興味がある人、再検証お願いします! これが本当に正しいのかさっぱりです。 GNU macOS・Solaris 11 FreeBSD・NetBSD・OpenBSD 【find -mtime n の範囲(全部違う)】 -mtime 0 -mtime 0 -mtime 0 --

                                                      【find -mtimeに移植性はない】Unix標準コマンドを使ってる限り、どこでも動くシェルスクリプトなんて書けるわけねーだろ - Qiita
                                                    • いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita

                                                      いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう!ShellScriptBashLinuxUNIXmacOS はじめに [ $? -eq 0 ] や [ $? -ne 0 ] は冗長でデメリットしかありません。非常に多く見かける書き方ですが、1979 年に Bourne シェルが広く公開された時からこのようなコードは必要ありませんでした。実際に当時はこのような書き方は使われておらず、このような書き方をしなければならなかった歴史的な経緯などはありません。これはなぜか広まってしまった良くない書き方です。 優れたコードとは無駄がないシンプルなコードです。丁寧なコードとは無駄な処理を書くことではありません。[ $? -eq 0 ] や [ $? -ne 0 ] は書かないほうが、簡単で読みやすくわかりやすくなります。優れた文法

                                                        いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita
                                                      • 行番号を付加する(シェルスクリプト) - arterminalのブログ

                                                        課題 後続の処理で利用するためにパイプラインを流れるデータに行番号を付加したい。 解決法 以下のような方法がある。 nl コマンドを利用する awk コマンドを利用する sed コマンドを利用する cat コマンドを利用する nl コマンドを利用する nl コマンドは正真正銘の POSIX 規定のコマンドである(nl - The Open Group Publications Catalog)。 しかし、イマイチ知名度が低いせいか、自分の周囲ではこれを使う人をあまり見ない。 以下は利用例である。 ただし、データに空行が含まれている場合、デフォルトでは空行での行番号の付加がスキップされてしまう。 それでは困るというときは -b オプションで a (Number all lines)を指定すると良い。 $ find /usr/bin | nl | head 1 /usr/bin 2 /usr/

                                                          行番号を付加する(シェルスクリプト) - arterminalのブログ
                                                        • 【redash】Dockerコンテナ内部からdumpデータを取得【シェルスクリプト】 | フィンガーイース

                                                          そういえば redash のバックアップを取得していなかったなと気づきまして。 どうやらコンテナ内部の PostgreSQL の dumpデータを取得するればいいようです。 ↓こんな感じのシェルスクリプトをcronで定期実行すればいいですね! #!/bin/sh # バックアップディレクトリを定義 BACKUP_DIR=/var/backup # バックアップファイルを保持する期間を定義 TIME=3 # DBのコンテナIDを取得 CID=$(docker container ls | grep postgres | awk '{print $1}') # dumpを取得 docker container exec ${CID} /bin/bash -c 'pg_dump -U postgres postgres | gzip > /usr/local/redash-backup.gz'

                                                          • 開発チームの一体感を出すために専用のバーチャル背景を作ろうとしたら、いつの間にかシェルスクリプトを触っていた話

                                                            この記事は、Magic Moment Advent Calendar 2023 17日目の記事です。 どうもこんにちは、Magic Moment の @morishin です。 お前は一体何を言っているんだ? タイトルだけでは何を言っているか分からないと思うので説明します。 弊社のアドベントカレンダーページにも載っているコレ。 コレは見ての通りコマンドの実行結果 (標準出力) で、元々は開発チーム専用のバーチャル背景画像として作り始めたものでした。 「バーチャル背景画像からなんでシェルスクリプト?」とお思いでしょうから順番にご説明します。 そもそもバーチャル背景画像を作ることになった経緯 時は遡ること今年の1月。開発チーム [1] を盛り上げるための企画を考えることになりました。 人も増えてきたことだし、今まで以上にチームの一体感を出していこう。もっともっとチームを盛り上げていこう。という

                                                              開発チームの一体感を出すために専用のバーチャル背景を作ろうとしたら、いつの間にかシェルスクリプトを触っていた話
                                                            • シェルスクリプトを実行しようとすると「そのようなファイルやディレクトリはありません」と言われる - 恥は/dev/nullへ by 初心者

                                                              ある実験をするためにシェルスクリプトを書いたのですが、「そのようなファイルやディレクトリはありません」と言われてしまいました。 ネット検索をしてみると、よくある原因は改行コードがCRLFになっていること(CRが余計)らしいのですが、今回は違いました。 真犯人は「BOM」でした。 経緯 どんなスクリプトを書いても同じ結果になるので、以下のシンプルなスクリプトにして実験しました。 #!/bin/bash echo "Hahaha!" このスクリプトを「uho.sh」というファイルにして、実行したのですが ./uho.sh: 行 1: #!/bin/bash: そのようなファイルやディレクトリはありません と表示されます。そこで、 cat -A uho.sh としたら、 M-oM-;M-?#!/bin/bash$ $ echo "Hahaha!"$ と表示されました。 ^M(CRを表す)は無く、

                                                                シェルスクリプトを実行しようとすると「そのようなファイルやディレクトリはありません」と言われる - 恥は/dev/nullへ by 初心者
                                                              • 祝🎉 POSIX.1-2024 (Issue 8) 改定!16年ぶりの大幅改定でシェルスクリプトはどう新しくなるのか? - Qiita

                                                                FreeBSD では 2024-05-31 に 200112 から 200809 への変更がようやく行われました(一度間違えて 200808 と書いてしまっていますが)。 https://cgit.freebsd.org/src/commit/?id=2e30926a68 https://cgit.freebsd.org/src/commit/?id=6e0278408e macOS は FreeBSD のユーザーランドのコマンドを使用しているため、そのせいで 200112 のままだった可能性も考えられますが、シェルやカーネルは FreeBSD のものではないため、FreeBSD が変更になったからと言って macOS が更新されるとは限らないでしょう。Solaris 10 と 11 ではディレクトリごとに準拠バージョンが異なるバイナリが配置されており以下のようになります。Solaris

                                                                  祝🎉 POSIX.1-2024 (Issue 8) 改定!16年ぶりの大幅改定でシェルスクリプトはどう新しくなるのか? - Qiita
                                                                • Bashシェルスクリプト入門 | インプレス NextPublishing

                                                                  インプレス NextPublishing Bashシェルスクリプト入門 著者:大津 真 Linux、macOS、WSLのユーザにBashシェルスクリプトの作成方法をゼロから解説する 本書では、Linuxの標準シェルであるBashを使用したシェルスクリプトの作成方法を解説します。 Chapter 1では、シェルスクリプトの概要と基本的な記述方法、およびシェルスクリプトを活用するためのシェルの基本機能について説明します。 Chapter 2では、値を格納し名前でアクセスできるようにstate変数の概要と、シェルスクリプト内でコマンドライン引数を扱う方法について説明します。 Chapter 3では、シェルスクリプトにおける条件分岐の使用方法を中心に解説します。シェルスクリプトに限らず、プログラムは、頭から終わりまで順番に実行されるとは限りません。条件分岐や繰り返しといったいわゆる「制御構造」を記

                                                                    Bashシェルスクリプト入門 | インプレス NextPublishing
                                                                  • シェルスクリプトのクォートの使い方と変数埋め込みの方法まとめ

                                                                    シェルスクリプトでのクォートの違い シェルスクリプトでは文字列を扱うために3種類のクォート(シングルクォート、ダブルクォート、バッククォート)があり、それぞれ異なる役割を持ちます。それぞれの違いについてまとめます。 例えばクォートで囲った文字列を echo で出力するシェルスクリプトでそれぞれの違いを見ていきます。 #!/bin/bash DATE='date' echo $DATE echo '$DATE' echo "$DATE" echo `$DATE` 上記のシェルスクリプトはそれぞれどのような出力になるでしょうか。 それぞれ違いを見ていきます。 シングルクォート(') シングルクォートで囲まれた文字列は単に普通の文字列として扱われます。したがって、書かれた文字列そのままです。 特殊文字(ダブルクォートやバッククォート、バックスラッシュなど)もエスケープされそのままで扱えます。 #

                                                                      シェルスクリプトのクォートの使い方と変数埋め込みの方法まとめ
                                                                    • 【シェルスクリプト】オプションパーサーの紹介 - Qiita

                                                                      シェルスクリプトはちょっとした処理を書くのには便利ですが、オプションや引数の制御をしっかり書こうとするとなかなか大変です。 今回は自分がよく利用するオプションパーサーの実装を紹介したいと思います。 ■ 実装 #!/bin/bash function usage { cat >&2 <<EOS コマンドの説明 [usage] $0 <ARG1> <ARG2> [options] [args] ARG1: 第一引数 ARG2: 第二引数 [options] -h | --help: ヘルプを表示 -k | --key: オプション名のみ指定するタイプのオプション -v | --key-value <VALUE>: 値の指定が必要なオプション -r | --required <VALUE>: 必須指定のオプション [example] $0 hoge fuga -r piyo EOS exit 1

                                                                        【シェルスクリプト】オプションパーサーの紹介 - Qiita
                                                                      • シェルスクリプトのコード品質保全にVSCodeとGitHubActionsにShellCheckを導入してみた!|SHIFT Group 技術ブログ

                                                                        シェルスクリプトのコード品質保全にVSCodeとGitHubActionsにShellCheckを導入してみた! はじめにSHIFTで自動化アーキテクトをやっている片山 嘉誉です。 シェルスクリプトは、システム管理や自動化タスクにおいて重要な役割を果たします。しかし、そのコードが複雑になると、メンテナンスが困難になることがあります。 例えば、GitHub Actionsを使用してLinux上で自動化処理を行う場合、新しい実行環境を設定せずに標準で動作するシェルスクリプトが便利です。しかし、YAMLファイルにコードを直接記述すると、シェルスクリプトの静的解析ができなくなり、コードの保守が難しくなります。 そこで、シェルスクリプトを.shファイルに分離し、YAMLファイルからこれを呼び出す方法を推奨します。分離した.shファイルならば、ShellCheckを使用して静的解析を行うことができます

                                                                          シェルスクリプトのコード品質保全にVSCodeとGitHubActionsにShellCheckを導入してみた!|SHIFT Group 技術ブログ
                                                                        • シェルスクリプトでエスケープシーケンスを使って端末情報を取得する方法 - Qiita

                                                                          はじめに シェルスクリプトでエスケープシーケンスを使ってターミナルの情報(ウインドウサイズとかカーソル位置とか)を取得する方法の(個人的?)メモです。 report() { ( # trap EXITを使うためのサブシェル set -- "$1" "$(stty -g)" # 現在の端末設定のバックアップ trap 'stty "$2"' EXIT # サブシェル脱出時に端末設定を戻す # rawだとCTRL-Cできないしtimeやminも機能しないようなので-icanon stty -echo -icanon time 1 min 0 # エコーバックなしとその他の設定 printf "$1" >/dev/tty # 問い合わせのエスケープシーケンスを端末に出力 dd count=1 2>/dev/null # 端末からの応答を読み取って標準出力に出力 ) </dev/tty # 標準入

                                                                            シェルスクリプトでエスケープシーケンスを使って端末情報を取得する方法 - Qiita
                                                                          • ブラウザ経由でシェルスクリプト叩いてWake on LANする

                                                                            (この記事はQiitaからのコピーです。 本記事の投稿日はQiitaでの投稿日としています。) WiFiルーターを買い替えたら、発売日的に6年後のモデルなのに、以前の機種にあった"PCリモート起動"(ルーターのWebツールでWoLのマジックパケットを飛ばせる機能)が消え失せました。(WR8750N→WG1200HS3) ブラウザでWoL飛ばせるのがすごい便利だったのですが、無くなったものは仕方ない。自分でどうにかせねばということで、可能な限り手間を掛けずに今までと同じような機能を作ってみます。 必要なもの家のLANとインターネットに繋がっているRaspberry Pi的なやつ(お好きなものをどうぞ)どんな感じにするかを考える“PCリモート起動"とはどういう画面だったかを思い出すと…… こんな感じでした(実機をしまってしまったので、 https://michisugara.jp/archiv

                                                                            • ifから考えたシェルスクリプト言語の曖昧さと奥深さ

                                                                              はじめに いわゆるbash, zshなどのPOSIX系シェルスクリプトのif文は、一般に次のような形で使います。 実際、上記の理解の仕方は基本的に使えます。プログラミングはとりあえず使えることが大事だと思うので、その認識で事足りることは多いでしょう。 大抵のプログラミング言語は海外記事の説明は概ね厳密な解説を書いていることが多い印象が私にはあるのですが、興味深いことに、シェルスクリプトは海外でもどこか似た傾向がある気がしました。ここまで色々な人が色々な説明を記載しているプログラミング言語はあまり見たことがありません。 このとても一見基本的な部分に思えるif文にシェルスクリプトやUnixの歴史なるものが色々隠れている気がしてならならないように思えました。今回文字にしてみて、改めてそう思えました。 以下に書くことはそれなりの教科書的な本では、細部を読めば大抵今から書くことを説明しています。しか

                                                                                ifから考えたシェルスクリプト言語の曖昧さと奥深さ
                                                                              • シェルスクリプトで文字列操作(文字数、抜き出し、ヒアドキュメント)|サラトガ牧場

                                                                                文字列の長さを算出する まず、変数に入っている文字列の長さを算出するには以下のように表現します。 #!/bin/sh KUMA="ABCDE" echo "LEGNTH : ${#KUMA}" 実行結果は以下の通り。 上記の通り、文字列 ABCDE の長さは 5 バイトなので長さも 5 と表示されます。 変数を読み出す際にシャープ(#)を付けるだけです。 文字列の抜き出し 次に、文字列の特定の部分だけを表示してみます。 Java だと String クラスの substring、PHP だと substr(mb_substr)と同じです。 # 5文字とも表示 $ echo "ABCDE" | cut -c 1-5 ABCDE # 1から3文字目まで表示 $ echo "ABCDE" | cut -c 1-3 ABC この cut と変数の文字列の長さを利用すればシェルスクリプト内でも文字列

                                                                                  シェルスクリプトで文字列操作(文字数、抜き出し、ヒアドキュメント)|サラトガ牧場
                                                                                • 【ソースコード有】シェルスクリプト入門 - 構文や書き方、使い方について解説

                                                                                  【シェルスクリプト入門】概要 シェルスクリプトは、LinuxやUnixなどでユーザー操作を受け付け、動作した結果を出力するシェルをまとめたものです。シェルはOSを構成するソフトウェアの一つであり、操作の受付や他のソフトウェアに指示を出したりする役割を担います。 LinuxやUnixを操作する際には、操作コマンドを一つひとつ入力しても問題ありませんが、複雑な処理や繰り返し処理を実行する場合には非常に手間がかかります。そこで、シェルをひとまとめにし、効率的に処理を実行するためにシェルスクリプトが用いられるのです。 シェルスクリプトを使えば、LinuxやUnixでの定例作業の自動化や、サーバーソフトウェアの操作などが行なえます。詳しくは“シェルスクリプトとは?使用例やできること、使うための方法” で解説していますので、こちらをご覧ください。 【シェルスクリプト入門】基本文法と書き方 ここからは、

                                                                                    【ソースコード有】シェルスクリプト入門 - 構文や書き方、使い方について解説