並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 88件

新着順 人気順

ShellScriptの検索結果41 - 80 件 / 88件

  • dotfiles を使った環境構築の時短術(M1 Mac 向け) - SMARTCAMP Engineer Blog

    挨拶 おすすめする人 dotfiles とは dotfiles を使ってみた感想 セットアップ方法 リポジトリ構成 自動セットアップ アプリケーションの管理 カスタマイズ デスクトップアプリケーション CLI アプリケーション Mac App Store のアプリケーション 完成系 プログラミング言語の管理 カスタム例 設定ファイルのシンボリックリンク作成 カスタム例 .gitignore および README.md .gitignore README.md さいごに 挨拶 こんにちは!スマートキャンプエンジニアの石井(トマス)です。現在、Boxil Event Cloudの開発に携わっています。 好きなことは「開発体験の向上」に取り組むことで、プロダクト参画時、開発環境をホストマシンに直接構築している状態で手順書もなく非効率だったのでDocker化し環境構築を簡略化しました。 今回は「開

      dotfiles を使った環境構築の時短術(M1 Mac 向け) - SMARTCAMP Engineer Blog
    • POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(最大並列数あり、GNU Parallel, xargsなし) - Qiita

      はじめに シェルスクリプトで並列処理を行う場合、一般的には GNU Parallel か xargs を使うのではないかと思います。しかし GNU Parallel はその名の通り GNU が提供しているツールですし xargs も並列数を指定する -P オプションは POSIX で規定されてないので動作する環境が限られます。また、これらは外部コマンドであるためシェル関数を呼び出すことが出来ないという制限もあります。これをシェルスクリプトのみで実装することで、環境依存すること無く並列処理を実現することが出来ます。 補足 続編記事も書きました。 POSIX準拠シェルスクリプトでfind -print0やxargs -0を使わずにスペースや改行が含まれたファイル名を処理する 続・POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(名前付きパイプ版) 実装 実は最大並列数の

        POSIX準拠シェルスクリプトでマルチコアの能力を活用する並列処理の実装(最大並列数あり、GNU Parallel, xargsなし) - Qiita
      • シェルスクリプトで日付処理ならdateコマンドは投げ捨ててDateutilsを使おう! - Qiita

        はじめに シェルスクリプトで日付や時間の処理をするのって面倒ですよね? date コマンドはオプションは機能が少ないし Linux と macOS で書き方が違うし便利な機能は移植性がありません。移植性がないため POSIX は新しい機能を標準化することができません。書き方の違いは macOS で GNU Coreutils をインストールすれば解決できますが機能の少なさはどうしようもありません。なにかいい方法はないかな?作るかな?と思っていたのですが Dateutils を使ってみたらこれが思いの外良くできていたので使い方の紹介です。 project homepage: http://www.fresse.org/dateutils/ github page: https://github.com/hroptatyr/dateutils Dateutils のコマンド一覧 date コマ

          シェルスクリプトで日付処理ならdateコマンドは投げ捨ててDateutilsを使おう! - Qiita
        • シェル芸の可読性を向上させるマルチライナー記法のススメ - Qiita

          Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

            シェル芸の可読性を向上させるマルチライナー記法のススメ - Qiita
          • bashの機能いろいろ

            シェルスクリプトを書いていると「それはbash独自機能だから」「POSIXシェルには無い機能だから」と言われることがよくあります。だいたいは「それみんな使ってるのでPOSIXで標準化されてると思った」といったものなのですが、本記事では便利なものから「え、それやるくらいならPythonでよくない?」まで、bashの機能を紹介しようと思います。 for文でC言語っぽくループを回す シェルスクリプトでfor文といえばfor i in $(seq 10)とかをよく使いますが、bashだと以下のように書けます。

              bashの機能いろいろ
            • Bourneシェルの終焉まで残り1年(→3年) ~ 新しいシェルへの移行は完了していますか? - Qiita

              はじめに 30年以上もの長い間 UNIX を支えてきた Bourne シェルも UNIX のサポート終了とともに消え去ろうとしています。みなさん、他のシェルへの移行はお済みでしょうか? 残り一年、まだ移行が済んでいないという人のために、移行のための簡単なガイドラインと各シェルの特徴をまとめました。 関連記事 シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 残り1年というのはどういうこと? Bourne シェルは POSIX に準拠していない古いシェルです。最初の Bourne シェルは 1979 年に登場し、最終バージョンは 1992 年のものです。ちゃんとしたデータを持っているわけではありませんが、現在 Bourne シェルを使っている最もシェアが高いと思われる UNIX は Solaris 10 です。ただし Solaris 10 では 1989 年

                Bourneシェルの終焉まで残り1年(→3年) ~ 新しいシェルへの移行は完了していますか? - Qiita
              • 実行中のシェルスクリプトをchattr(1)を使ってimmutableにするというのはどうか - その手の平は尻もつかめるさ

                [追記] 実行中のシェルスクリプトをchattr(1)を使ってimmutableにするというのはどうか - その手の平は尻もつかめるさ 調べてみたけどこれが良さそう <a href="https://stackoverflow.com/a/3399850/1921216" target="_blank" rel="noopener nofollow">https://stackoverflow.com/a/3399850/1921216</a>2022/01/02 17:02 b.hatena.ne.jp このブックマークコメントで指摘されましたが、immutableにするまでもなくこのラッパースクリプトを噛ませると良さそう。 #!/bin/bash # usage: # sh-run.sh script-you-want-to-run.sh args... set -ue file="$

                  実行中のシェルスクリプトをchattr(1)を使ってimmutableにするというのはどうか - その手の平は尻もつかめるさ
                • ただ15行のシェルスクリプトで個人ナレッジマネジメントツールを作った話

                  はじめに 自分が読んだ本や記事などを読む時に書いたノートを体系的に管理したいですよね。 現在優秀なナレッジマネジメントツールはありふれています。企業向けだと Confluence DocBase Qiita Team などがあります。個人向けは Notion HackMD Boost Note のようなシンプルで使いやすいツールがあります。マインドマップツールをさらに含めると数え切れません。 筆者自身はミニマリストです。 コードのようにGithubで自分のノートを管理したい Webからマインドマップ形式になっているノートを確認したい サブスクではなく、無料で使いたい なので、個人ナレッジマネジメントツールを自作したいという発想に至りました。 結果としては下記の15行シェルスクリプト、GitHub ActionsとMarkdownマインドマップ変換ツールmarkmapで作りました。 項目をク

                    ただ15行のシェルスクリプトで個人ナレッジマネジメントツールを作った話
                  • なぜシェルスクリプトはPOSIX準拠でも環境依存が激しいのか? 〜POSIXの問題点とその解決策の案〜 - Qiita

                    なぜシェルスクリプトはPOSIX準拠でも環境依存が激しいのか? 〜POSIXの問題点とその解決策の案〜ShellScriptBashshellPOSIX まえがき この記事は「シェルスクリプトで高い移植性と生産性を両立させるシリーズ」の第一弾です。移植性と生産性を両立させるための前提知識として POSIX コマンドの問題点について解説します。第二弾では高い移植性と互換性を実現させるための考え方、そして第三弾、第四弾ではそれを実現するシェルスクリプトの具体的な実装テクニックを紹介します。第五弾では現実的な問題と回避方法について解説する予定ですがまだ具体的な内容は決まっていません。第五弾はその前に「シェルスクリプト入門(仮)」の記事を書こうと思ってるので少し遅くなると思います。もし興味がある方は記事をストックしていると更新時に通知されると思います。 2021-07-11 追記 記事が長くなった

                      なぜシェルスクリプトはPOSIX準拠でも環境依存が激しいのか? 〜POSIXの問題点とその解決策の案〜 - Qiita
                    • 祝🎉 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
                      • パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita

                        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                          パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita
                        • シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita

                          ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ubuntu や Solaris 10、11 などでは(ディスクサイズが大きい今では分ける理由がないから)と統合されています。Debian では統合されてない上に [ は /usr/bin 以下にあったりします。元々 /usr/bin は必要性が低いコマンドを置く場所なので、そこに [ があるというのは面白いですね。 [ が /bin/[ だったのはいつまで? この /bin/[ が使われなくなったのは今から 40 年前の Unix System III (1981) に搭載された Bourne シェルからのようです。 The Traditional Bourne Shell Family より

                            シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita
                          • bashでset -xしたときの出力をmask

                            #!/bin/bash # 出力先のFD5に、sedで「ABCD1234」を****に置換する処理を設定 exec 5> >(sed 's/ABCD1234/****/g') export BASH_XTRACEFD=5 set -x # ここ以降のset -x出力内の「ABCD1234」がマスクされる echo "APIキーは ABCD1234 です"

                              bashでset -xしたときの出力をmask
                            • シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita

                              TL; DR 変数をダブルクォートしない使い方は上級者向けの危険な機能です! $@ と $*(または配列の全要素)をダブルクォートしない使い方は知る必要すらありません! ShellCheck を導入すれば誰でも簡単に正しい書き方がわかります!! 2021-08-21 補足 この記事は dash や bash などの POSIX シェルの一般的な動作を解説しており zsh のデフォルトとは異なります。記事の中でも説明していますが zsh の場合はシェルのオプションを変更することで POSIX 準拠の動作に変更することができます。zsh に関しては後半の「zsh に関する注意点」も参照してください。 はじめに プログラミング言語は、言語によって記号の意味が異なることがよくあります。クォーテーションマークはその一つです。C 言語ではシングルクォートは文字リテラル(一文字)を意味し文字列はダブルク

                                シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita
                              • 誰も書かない? シェル・シェルスクリプトの基本

                                シェルスクリプトの基本の基本とはどういうものなのか、他の多くのプログラム言語で処理を実装するのと比べ、どのような違いがあるのか。あまり ( 当然過ぎて? ) 書く人がいなさそうなので、つらつら説明したもの

                                  誰も書かない? シェル・シェルスクリプトの基本
                                • シェルスクリプトでLISP処理系を作ってみた

                                  【2022-01-22追記】簡易版のLISP処理系をPOSIX準拠シェル(+sed)で作成する様子の動画を作成してみました. この記事は,筆者がシェルスクリプトで簡易実装している純LISP処理系の開発についてまとめたものです.『PureLISP.sh』と呼んでおり,次のGitHubリポジトリでパブリックドメインとして開発・公開しています. 基本的には,上記リポジトリのREADMEの内容を記事として膨らませたような構成です.このことから,今回の記事内容に関するコメント等だけでなく,『PureLISP.sh』そのものへの御意見等(GitHubのIssues/Forkを含む)も受け付けます.ただし,開発の経緯・目的から,次の3点は維持します. 最低限必要な要素で構成されたLISP処理系を志向すること POSIX準拠のシェルスクリプトで実装すること パブリックドメインにて開発・公開すること なお,

                                    シェルスクリプトでLISP処理系を作ってみた
                                  • ファイルの編集と置き換えの違い または シェルスクリプトの安全な置き換え - mrwk update

                                    この記事の目的 unixでのファイルの編集と置き換えの違いをまとめます。 unix系OSでのファイルの編集と置き換えの違いについて説明する。 シェルスクリプトの編集により事故が起きる仕組みを理解する。 安全な置き換えの手順を理解する。 ファイル名→inode→ファイル実体の対応づけ UNIX系OSのファイルシステムは、「ファイル名→ファイル実体」という対応関係ではなく、間にinodeを挟んだ「ファイル名 → inode → ファイル実体」という対応づけを行っています。 inodeを経由した対応関係のイメージ 「ファイル名→inode」の対応づけは、ディレクトリエントリにより行われます。 ディレクトリ内でファイル名とinode番号の対応づけが行われていて、ls -iなどで確認できます。 「inode→ファイル実体」の対応づけは、ファイルシステム内部で行われ、ユーザからは隠されます。 inod

                                      ファイルの編集と置き換えの違い または シェルスクリプトの安全な置き換え - mrwk update
                                    • シェルスクリプトでスクリプトの引数をループする方法

                                      B! 65 0 0 0 今更ながら知ったこと。 通常の方法 in無し The for Loop (POSIX Shell Command Language) ;の省略 man bash その他の方法 参考 通常の方法 bashとかでよくやる方法は arg1.sh 1 2 3 4 5 #!/usr/bin/env bash for arg in "$@";do echo "$arg" done とする方法。 "$@"はスクリプトの引数を展開し、ダブルクォートしてあると 引数毎に分けてダブルクォートした状態で展開します。 1 2 3 4 $ ./arg1.sh a b c a b c "$*"とすると同じく展開しますがダブルクォートが全体について for文で回すと1つの引数として扱われます。 大概のシェルで同様の動作をします。 これは関数の引数も同じで、 arg2.sh 1 2 3 4 5 6

                                        シェルスクリプトでスクリプトの引数をループする方法
                                      • シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 - Qiita

                                        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに シェルスクリプトの世界は今後 10 年で大きく変化します。10 年という数字は切りが良い数字を持ってきただけで根拠はありません。これより長い時間がかかるかもしれませんし、もしかしたら短くなるかもしれません。しかし確実によりよい方向に変わっていくでしょう。Unix/Linux の標準コマンドはさまざまな問題を抱えています。Unix/Linux の標準コマンドに依存している限りシェルスクリプトに大きな改善はありません。これからのシェルスクリプトの世界は Unix/Linux の標準コマンドに依存しない世界です。それがどういうものに

                                          シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 - Qiita
                                        • 静的型付きスクリプト言語 Cotowali

                                          この記事は未踏2021採択者アドカレ! の 23 日目の記事です。 Cotowali について Cotowali は、2021年度未踏に「シェルスクリプトへのコンパイルを行う静的型付けスクリプト言語の開発」のテーマで採択され、現在開発中のスクリプト言語です[1] Cotowali コンパイラは V言語で記述されています。Vコミュニティ公式ではないプロジェクトとしては規模が大きく、V言語コンパイラのバグ発見にも貢献しています[2]。 コンセプト POSIX 準拠シェルスクリプトへのトランスパイル シェルスクリプトの機能を取り入れながらも、一般的な言語に近く理解しやすい文法 シンプルな静的型付け ちなみに、Cotowali はあくまでシェルスクリプトをバックエンドに使う新規のスクリプト言語であり、シェルスクリプトに型をつけるものではありません。 静的型付けではありますが、型システムはごく簡易な

                                            静的型付きスクリプト言語 Cotowali
                                          • set -eのもとで特定のコマンドの終了ステータスを変数に入れるシェルスクリプトのスニペット - Islands in the byte stream

                                            課題編 シェルスクリプトで「あるグローバルな状態を変える操作を行い、その結果をチェックし、状態をもとに戻す」みたいなタスクをするときに「その結果をチェックし」のところでコマンドの終了ステータスを変数に入れて置きたいみたいなことがあります。例えば、次のようなコマンド操作です。 set -e # グローバルな状態を変える操作を行う git merge --no-ff --no-commit $main_branch || true # 結果をチェックしてexit codeを変数に入れる git diff --cached --exit-code --quiet ; code=$? # グローバルな状態をもとに戻す git merge --abort # 上位プロセスに結果を渡す exit $code スクリプト全体には set -e (コマンドが失敗するとシェルスクリプトが即座に終了する)を効

                                              set -eのもとで特定のコマンドの終了ステータスを変数に入れるシェルスクリプトのスニペット - Islands in the byte stream
                                            • GitHub - tzador/makedown: Organise your shell scripts within executable markdown files

                                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                GitHub - tzador/makedown: Organise your shell scripts within executable markdown files
                                              • 環境変数 PATH に空文字があるとカレントディレクトリが指定されているのと同じ意味になる

                                                何だと!? タイトルのまんま。 恥ずかしながらこれ今まで知らなかった。 もしかして常識だったりする? ちなみに確認したのは Linux だけど、glibc の posix サブディレクトリ配下の execl*execvpe の挙動なので glibc 使ってればみんな一緒じゃないかな?知らんけど… 環境変数 PATH が設定されていない時 unset PATH とした状態。 この場合、PATH=/bin:/usr/bin と設定されているのと同じ意味になる(追記も参照のこと)。 当然カレントディレクトリは含まれていない。 環境変数 PATH が空の時 PATH= とした状態。 「PATH 環境変数が設定されていない時」とは異なる事に注意。 この場合、PATH=. と設定されているのと同じ意味になる。 つまり、カレントディレクトリが含まれている。 環境変数 PATH の最後が : で終わってい

                                                  環境変数 PATH に空文字があるとカレントディレクトリが指定されているのと同じ意味になる
                                                • どこからでも実行できるシェルスクリプトの正しい書き方 ~ 冒頭でディレクトリを移動するな! - Qiita

                                                  はじめに どこからでもシェルスクリプトを実行できるようにと、冒頭でカレントディレクトリを移動するコードをベストプラクティスかのように書いてある記事がいくつかありますが、それは違います。例えば以下のようなコードは良くないコードです。 # スクリプトのある場所にカレントディレクトリを移動してはいけない cd "$(dirname "$0")" # 上記のやたらと面倒な書き方 WORKDIR=$(cd "$(dirname "$0")" && pwd) cd "$WORKDIR" 絶対に書いたらだめなのか?と聞かれるなら、理由をわかった上で「手抜きとして」なら書いても良いと思いますが、ベストプラクティスではありません。 補足 上記のコードは問題点を示すサンプルコードです。他にも cd が失敗した場合などの別の問題がありますが、この記事の内容とは無関係なので意図的に省略しています。私は set -

                                                    どこからでも実行できるシェルスクリプトの正しい書き方 ~ 冒頭でディレクトリを移動するな! - Qiita
                                                  • シェルスクリプトは ((i=i+1)) ではなく i=$((i+1)) で計算しなければいけない!という話 - Qiita

                                                    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                                      シェルスクリプトは ((i=i+1)) ではなく i=$((i+1)) で計算しなければいけない!という話 - Qiita
                                                    • GitHub - binpash/try: Inspect a command's effects before modifying your live system

                                                      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                        GitHub - binpash/try: Inspect a command's effects before modifying your live system
                                                      • Hypershell: A Type-Level DSL for Shell-Scripting in Rust | Context-Generic Programming

                                                        Discuss on Reddit, Lobsters, and Hacker News. Summary I am thrilled to introduce Hypershell, a modular, type-level domain-specific language (DSL) for writing shell-script-like programs in Rust. Hypershell is powered by context-generic programming (CGP), which makes it possible for users to extend or modify both the language syntax and semantics. Table of Contents Estimated reading time: 1~2 hours

                                                          Hypershell: A Type-Level DSL for Shell-Scripting in Rust | Context-Generic Programming
                                                        • The Biggest Shell Programs in the World

                                                          Help me fill out this page! It's freely editable. What programs should be listed? I'm using "biggest" in the sense of substantial, not necessarily the raw number of lines. Hand-written shell scripts. There are many big autoconf-generated scripts, like the 70K-line coreutils script, but I don't consider them substantial in this sense. Shell programs that use data structures and algorithms. As a cou

                                                            The Biggest Shell Programs in the World
                                                          • jqコマンドとシェルスクリプトの上手い速い使い方

                                                            はじめに シェルスクリプトから jq コマンドを使う記事はいくつも見かけますが、あまりにも面倒でよくない書き方ばかりが見つかるのでベストプラクティスをまとめました。 この記事は「詳細解説 jqコマンドとシェルスクリプトの簡単で正しい使い方 〜 データの流れを制するUNIX哲学流シェルプログラミング」の要約版です。詳しい解説やもう少し高度な使い方を知りたい方、シェルスクリプトの考え方についてはリンク先を参照してください。リンク先は長すぎたので、こちらはとりあえず使いたい人用に簡潔にまとめました。(あと、いつも qiita を使っているので zenn を使ってみたかった) 👎 ダメな書き方 よく見かける書き方ですが、コードの見通しが悪く、メンテナンス性が低く、パフォーマンスが(かなり)悪く、特定の場合に不具合が発生する書き方です。 for item in $(jq -c '.items[]'

                                                              jqコマンドとシェルスクリプトの上手い速い使い方
                                                            • Why Create a New Unix Shell? (2021)

                                                              Introduction Before explaining why I created Oil, let's review what it is. You can think of a Unix shell in two ways: As a text-based user interface. You communicate with the operating system by typing commands. As a language. It has variables, functions, and loops. Shell programs are text files that start with #!/bin/sh. In this document, we'll think of Unix shells as languages. The Oil project a

                                                              • Release 8.0.0 · google/zx

                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                  Release 8.0.0 · google/zx
                                                                • シェルスクリプト オプション解析 徹底解説 (getopt / getopts) - Qiita

                                                                  はじめに シェルスクリプトでオプション・引数解析といったらまず挙がるのが getopt と getopts です。さてどちらを使うべきでしょうか?始めに断っておくと実は私はどちらも積極的には使っていません。なぜなら独自実装でもほとんどコードは変わらず、より柔軟な処理ができるからです。とはいえ getopt と getopts はシェルスクリプトの基本なのでこれらの使い方について解説したいと思います。(解説が不要な人はそれぞれの「使用方法」を読んでください。) 本編の前に この記事を書いたあと独自実装のオプション解析コードを書き最終的に getopt や getopts よりも高機能で使いやすいオプションパーサー getoptions を開発しました。もはやちまちまとしたコードを手書きする作業は不要です。シェルスクリプトで簡単に引数解析したいだけという方にはこちらをおすすめします。POSIX

                                                                    シェルスクリプト オプション解析 徹底解説 (getopt / getopts) - Qiita
                                                                  • Release 8.1.0 · google/zx

                                                                    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                      Release 8.1.0 · google/zx
                                                                    • bashスクリプトのベストプラクティスを調査した

                                                                      はじめに ポートのSREを担当している @taiki.noda です。 弊社で実施しているインフラ勉強会でbashスクリプトについて調査したので、今回はそれを紹介したいと思います。 まずなぜこの内容を調査したのかについて3点 bashでのシェルスクリプトは簡単に利用できるが、バグを生みやすく、可読性の低くなりやすい言語 複雑な処理は他の言語(Go, Python等)を使った方が良いが、現状色々な箇所で使われているので、メンテナンス性の高い書き方等調べたい 弊社で使われているシェルスクリプトの書き方を考慮した上で、社内で使えるテンプレートを作成・コーディング規約的なものを作ろうと思った ファイルの構成 シバンは#!/bin/shではなく#!/bin/bash 特にshを使うというわけではないなら、bashを明示する ファイルの冒頭に用途・使い方を明記

                                                                        bashスクリプトのベストプラクティスを調査した
                                                                      • xargs 完全理解マニュアル - xargs は拡張引数 (extended arguments) の略って知っていますか? - Qiita

                                                                        はじめに xargs コマンドは「なにか凄そうだけどよく分からないコマンド」としてよく知られています。使う人は使うけど何をやっているのか全くわからないコマンドです。また、やっていることがわかっても実際に使ってみると、空白やクォーテーション文字でエラーになってしまう使い方がとても難しいコマンドです。この記事はそういうよくわからない xargs はどういうコマンドなのか解説します。この記事を読むと xargs を「完全に理解した」と言えるようになるでしょう。 xargs コマンドが難しい理由は、xargs 自体の設計や実装の問題で古い時代の制限が多いからです。仕様が意味不明で一貫性がなくで他のコマンドと正しく連携するのが困難です。そして本来の目的と違う用途に流用されてばかりです。最初にこの記事の結論を書いておきます。 xargs は難しすぎるコマンド、可能な限り使うな 昔と違い今はそんなに重要

                                                                          xargs 完全理解マニュアル - xargs は拡張引数 (extended arguments) の略って知っていますか? - Qiita
                                                                        • GitHub - b3nj5m1n/xdg-ninja: A shell script which checks your $HOME for unwanted files and directories.

                                                                          You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                            GitHub - b3nj5m1n/xdg-ninja: A shell script which checks your $HOME for unwanted files and directories.
                                                                          • Use Long Options in Scripts

                                                                            Use Long Options in Scripts Mar 21, 2025 Many command line utilities support short form options (-f) and long form options (--force). Short form is for interactive usage. In scripts, use the long form. That is, in your terminal, type $ git switch -c my-new-branch In your release infrastructure script, write try shell.exec("git fetch origin --quiet", .{}); try shell.exec( "git switch --create relea

                                                                            • シェルスクリプトの正規表現の詳細解説(令和最新版)〜 基本正規表現(BRE)と拡張正規表現(ERE) - Qiita

                                                                              上記は正規表現を使う UNIX (POSIX) コマンドですが、シェルスクリプトで使うなら ERE だけを覚えれば十分だとわかると思います。例外は expr ぐらいですが、あまり使わないと思います。人によっては対話型シェルから less や vim を使っていると思いますが、これらも全て ERE をサポートしています。ちなみに egrep は POSIX 準拠ではなくなったコマンドです。 sed -E (ERE) は POSIX Issue 8 で標準化される(予定) もともと sed コマンドは BRE にしか対応しておらず、sed -E または sed -r は BSD または GNU の拡張機能なので厳密に POSIX に準拠したい場合は使用してはならないと言われていたこともありました。しかしそれはもう昔の話です。sed -E は POSIX で標準化されます。もはや最新のよく使われ

                                                                                シェルスクリプトの正規表現の詳細解説(令和最新版)〜 基本正規表現(BRE)と拡張正規表現(ERE) - Qiita
                                                                              • GitHub - progrhyme/shelp: Git-based package manager for shell scripts written in Go

                                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                                  GitHub - progrhyme/shelp: Git-based package manager for shell scripts written in Go
                                                                                • Shell scripting with Node.js

                                                                                  Why should I read this book? This book is about shell scripting with Node.js. You will learn: How Node.js works: Its foundations: its architecture, its event loop, etc. Its API: How to use its global variables and modules. What npm packages (the de-facto standard for JavaScript packages) are. How to use npm (the package manager bundled with Node.js) to: Install and manage packages. Create and publ

                                                                                  新着記事