タグ

Shell-Scriptに関するmasa8aurumのブックマーク (18)

  • Bourneシェルの終焉まで残り1年 ~ 新しいシェルへの移行は完了していますか? - Qiita

    はじめに 30年以上もの長い間 UNIX を支えてきた Bourne シェルも UNIX のサポート終了とともに消え去ろうとしています。みなさん、他のシェルへの移行はお済みでしょうか? 残り一年、まだ移行が済んでいないという人のために、移行のための簡単なガイドラインと各シェルの特徴をまとめました。 sh は昔は Bourne シェルのことでしたがそれも過去の話です。今どき「Bourne シェル」を解説している記事や sh のことを Bourne シェルと呼んでいる記事は情報が古い(大学関係に多い)、または古い情報を元にして書かれたか、シェルのことを正しく理解してない不正確な記事なので参考になりません。分かりやすい基準ですね。 関連記事 シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 残り1年というのはどういうこと? Bourne シェルは POSIX に

    Bourneシェルの終焉まで残り1年 ~ 新しいシェルへの移行は完了していますか? - Qiita
    masa8aurum
    masa8aurum 2023/12/31
    “sh は昔は Bourne シェルのことでしたがそれも過去の話です”
  • bash初期化ファイル読み込みの順番 まとめ - Qiita

    疑問 普段何気なく使っている .bashrc ですが、bashの場合下記のファイルもスタートアップの時に使えます。 .bash_login .bash_profile .bashrc .profile 一体何が違うのでしょうか? 忙しい人のために、先に まとめておきます。 bashは、 ログインシェルとして起動された場合、 /etc/profile をまず読み込む その後、以下のファイルを順番に探して、最初に見つけたファイルのみを起動スクリプトとして読み込む。 ~/.bash_profile ~/.bash_login ~/.profile .bashrcは、読み込まない でも、デフォルトでインストールされる.profileで、.bashrcも読み込むように設定されている ログインシェル以外で起動された場合は、 /etc/bash/bashrc をまず読み込む ~/.bashrcを読み込む

    bash初期化ファイル読み込みの順番 まとめ - Qiita
  • シェルの展開順序に気をつけよう - Qiita

    Shell Script Advent Calendar 2016の12月17日エントリーです(途中途切れてるので日数計算は不明)。 初級者向けの基礎知識として、シェルの展開順序について書きます。ここではbashを例に説明しますが、基は各種シェルに共通していると思います。 展開と実行の順序 端末やシェルスクリプトなどでシェルを使うときには、展開順序を意識していないと思わぬ失敗をすることがあります。展開(expansion)とは、ファイル名のパターン(ワイルドカード)やシェル変数などの処理です。 展開のメカニズムは普通のプログラミング言語のモデルと大きく異なる点の一つです。たとえば、多くのプログラミング言語の文法では変数は値の一種として扱われますが、シェルの文法では変数が展開されてから実際の処理が実行されます。このあたりの感覚は、C言語のプリプロセッサマクロなどに近いかもしれません。 ba

    シェルの展開順序に気をつけよう - Qiita
  • Bashのシェル展開 | フューチャー技術ブログ

    Photo by Fotis Fotopoulos on Unsplash はじめにこんにちは、TIGの岸卓也です。 シェルスクリプト連載 の7日目です。 シェルスクリプトで前提とするシェルは、大抵のコンピューターにインストールされていることが多いbashを選択することが多いと思います。当記事ではそのbashを対象に、意外と色々あるシェルの展開処理の概要をまとめました。シェルスクリプトに限らず普段のコマンド操作でも展開処理が便利なシーンは多々あると思いますので、皆さんの時間の節約に役立てば幸いです。 以降では、処理される順番に展開処理を紹介します。また、説明している動作と具体例はGNU bash version 5.1.4で確認しました。 なお、Windowsでは初期状態ではbashがありませんが、インストールする方法はいくつかあります。gitを使うためにインストールするGit for

    Bashのシェル展開 | フューチャー技術ブログ
  • シェルの処理順序 - はてブロ@ama_ch

    詳解 シェルスクリプト 作者: Arnold Robbins,Nelson H. F. Beebe,日向あおい出版社/メーカー: オライリージャパン発売日: 2006/01/16メディア: 大型購入: 6人 クリック: 193回この商品を含むブログ (37件) を見る 今読んでる詳解シェルスクリプトにシェルの処理順序が詳しく書いてあり、とっても参考になったのでメモしておきます。 p.176 7.8 処理の順序とevalコマンド より 標準入力やスクリプト中の各行からシェルへと読み込まれる1行分のデータを、パイプラインと呼ぶ。パイプラインには1つまたはそれ以上のコマンドが記述され、それぞれの間にはパイプ記号(|)やその他の記号(;, &, &&, ||)が記述される。シェルは読み込んだパイプラインをコマンド単位に分割し、それぞれについて以下の順に処理を行う。 スペース、タブ、改行、;、(、

    シェルの処理順序 - はてブロ@ama_ch
  • シェルスクリプトでlsをパイプでつなぐのはなぜ悪いのか ~ ShellCheck: SC2010, SC2011, SC2012 とファイル名改行問題 - Qiita

    シェルスクリプトでlsをパイプでつなぐのはなぜ悪いのか ~ ShellCheck: SC2010, SC2011, SC2012 とファイル名改行問題ShellScriptUNIXshellシェル芸POSIX はじめに シェルスクリプトで ls コマンドの出力結果(ファイル名一覧)をパイプで他のコマンドに渡して処理するのは推奨されません。ls コマンドを使ったコードを ShellCheck で検査するとおそらく問題があると警告が表示されるでしょう。ls を使うなという指摘自体には賛成なのですが SC2010、SC2011、SC2012 に書いてある理由については正しい説明がされていないと思っています。この記事ではなぜ ls の出力結果を他のコマンドにパイプで渡すのが悪いのか、ls を使わずに実現するにはどうしたら良いのかを解説したいと思います。一つ補足をしておくと、この問題は CLI コマ

    シェルスクリプトでlsをパイプでつなぐのはなぜ悪いのか ~ ShellCheck: SC2010, SC2011, SC2012 とファイル名改行問題 - Qiita
  • なぜシェルスクリプトで高度なデータ管理にSQLiteを使うべきなのか? ~ UNIX/POSIXコマンドの欠点をSQLで解決する

    なぜシェルスクリプトで高度なデータ管理にSQLiteを使うべきなのか? ~ UNIX/POSIXコマンドの欠点をSQLで解決するShellScriptUNIXSQLitePOSIXQiitadelika 「利用者は数十億人!? SQLiteはどこが凄いデータベース管理システムなのか調べてみた」の続きです。 はじめに 複雑な構造のデータを扱うのであればシェルスクリプトや Unix (POSIX) コマンドでデータ管理を行うのは避けるべきだと思います。解決不可能な問題が多いからです。しかしそれでも何かしらの理由でやろうと考える(やらなければいけない)のであれば SQLite を使うのをおすすめします。シェルスクリプトや Unix コマンドは行単位の単純なテキストデータをシーケンシャルにデータ処理するのが前提となっており、改行や空白が含まれるデータや複雑な構造のデータ扱うのは苦手です。またシェル

    なぜシェルスクリプトで高度なデータ管理にSQLiteを使うべきなのか? ~ UNIX/POSIXコマンドの欠点をSQLで解決する
  • Sed で文字列置換をするときはリダイレクトではなく -i オプションを使う - Qiita

    久々に sed を使ったらハマったので備忘録としてメモ。 やりたかったこと 以下のようなファイルがありました。

    Sed で文字列置換をするときはリダイレクトではなく -i オプションを使う - Qiita
    masa8aurum
    masa8aurum 2021/10/18
    ・UNIX シェルで `>` でリダイレクトを行うと、まずリダイレクト先のファイルを空で初期化する。 同じファイルに対してリダイレクトするのは危険。・sed でファイル内容を置換する場合は -i (--in-place) オプションを使う
  • シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita

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

    シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita
    masa8aurum
    masa8aurum 2021/08/27
    ネット上のシェルスクリプトの例はクォートがダメな例が多いので、この記事のようなちゃんとした解説を読むべき
  • Bash semicolon being equal to newline is not exactly true?

    masa8aurum
    masa8aurum 2020/03/16
    bash の if 文や for 文でセミコロンと改行は等価ではない(thenやdoの後にセミコロンを入れるとエラー)理由 →正確には「リストの中で等価」なだけ
  • Bash: .bashrcと.bash_profileの違いを今度こそ理解する|TechRacho by BPS株式会社

    こんにちは、hachi8833です。社内Slackで見かけたmorimorihogeさんの以下の書き込みで目から鱗が落ちました。 ~/.bashrcで何かを出力してしまうと、rsyncなどのsshパイプで問題が生じることがあるそうです。 参考: 知らないとrsyncでもハマるシェル初期化 - Qiita これをきっかけに、できるかぎり一次情報を元になるべく一般的になるようにまとめてみました。 シェルスクリプト(.bashrcや.bash_profileなども含む)はあまりに自由に書けてしまい、LinuxディストリビューションやmacOSによって作法がまちまちだったりするので、外してはいけないポイントがどこかを知りたかったのでした。 対象はbashとsh(Bourne Shell)に限定します。また、デスクトップGUIの設定ファイルについては最小限にとどめます。 bashのmanページ 元記

    Bash: .bashrcと.bash_profileの違いを今度こそ理解する|TechRacho by BPS株式会社
  • Bash scripting best practices - sap1ens blog

  • 優れた dotfiles を設計して、最速で環境構築する話 - Qiita

    Repost ➔ 優れた dotfiles を設計する | TELLME.TOKYO OS のクリーンインストールは面倒くさい. アプリケーションをいちいちダウンロードしてきて,普段の勝手と同じになるように設定する必要がある.CLI においても同じで,設定ファイルをいちいち書いたり,普段どんなプラグインを使っていたかを思い出してダウンロードするのは面倒だ. よくあるのは .vimrc などの設定ファイルを Dropbox や GitHub に置いておいて,環境を作り直したときにコピーする手法だ. dotfiles はその手法の延長線上にあって,より便利に高速化・自動化した方法だ. dotfiles とは UNIX 系の OS でいう設定ファイルのことで,ファイル名がドット . から始まることからそう呼ばれている. TL;DR HTTP 経由でインストールできる dotfiles をつくって

    優れた dotfiles を設計して、最速で環境構築する話 - Qiita
  • CentOSにてディレクトリを監視し、操作をログに記録する方法 - Qiita

    背景 CentOS 5.10 上の特定ディレクトリが何故か消えるという問題が発生していたため、犯人を特定する 手順 inotify-toolsで特定ディレクトリへの操作をログに出力し、いつ時点で消えたかを確認する psacctプロセスアカウンティングコマンドでいつ時点でどのユーザがしでかしたのかを確認する historyからユーザのどのコマンドで消えたのかを特定する 仕込み historyコマンドに時間が表示されるようにする /etc/profile を編集する $ sudo vi /etc/profile 以下を追記 各ユーザの~/.bash_profileが編集されている場合、上書きされてしまう。 → 最悪全ユーザのbashrcに仕込んでおく? ファイル再読み込み $ sudo source /etc/profile 時間が出力されることを確認 $ history プロセスアカウンティ

    CentOSにてディレクトリを監視し、操作をログに記録する方法 - Qiita
    masa8aurum
    masa8aurum 2018/06/23
    特定ディレクトリが消える事態が発生したとき、犯人を特定する方法。いちおうブクマ。
  • シェルスクリプトの罠を避ける三つの tips

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

    シェルスクリプトの罠を避ける三つの tips
  • Shell Style Guide

  • Are there naming conventions for variables in shell scripts?

  • シェルスクリプト最大の罠、while問題

    シェルスクリプト最大の罠:while問題 前回はシェルスクリプトプログラミングのコツの1つとして「アット・ア・グランス性」を紹介した。紹介の中でwhileが引き起こしやすい問題について触れたが、前回の説明だけではよく分からなかった方もいると思う。 今回はこの「while問題」に焦点を当て、シェルスクリプトプログラミングで最もはまりやすい問題を掘り下げて説明する。 whileとパイプの組み合わせで問題発生 次のシェルスクリプトを見てほしい。実行結果を予測してほしいのだが、おそらくほとんどの方が「標準出力にLinuxが出力される」と答えるだろう。

    シェルスクリプト最大の罠、while問題
    masa8aurum
    masa8aurum 2015/06/04
    サブシェルの話
  • 1