タグ

Bashに関するcyber_snufkinのブックマーク (21)

  • bash スクリプトの先頭によく書く記述のおさらい - Money Forward Developers Blog

    こんにちは。 マネーフォワードでアグリゲーション開発を担当しています中川です。 今回のブログは、私が bash スクリプトを書く際に心がけている事のおさらいをします。 知ってて当たり前のことかも知れませんが、意外と理解されていないアレです。 では、私が bash スクリプトを書く際によく使う記述を一つずつ紹介します。 2種類の shebang シェルスクリプトの一行目に必ず記述する #! で始まる行を shebang と言います。 bash スクリプトの shebang は、bash を絶対パスで指定する方法と、env を使って指定する方法の二種類あります。 bash を絶対パスを指定する方法 #!/bin/bash env を使ってを指定する方法 #!/usr/bin/env bash 前者は /bin/bash が使われます。 (/bin/bash が存在しなければスクリプトの起動時に

    bash スクリプトの先頭によく書く記述のおさらい - Money Forward Developers Blog
  • スーパーコンピュータシステムのファイル消失のお詫び | お知らせ | 京都大学情報環境機構

    京都大学学術情報メディアセンター センター長 岡部 寿男 2021年12月14日 17時32分 から 2021年12月16日 12時43分にかけて,スーパーコンピュータシステムのストレージをバックアップするプログラム(日ヒューレット・パッカード合同会社製)の不具合により,スーパーコンピュータシステムの大容量ストレージ(/LARGE0) の一部データを意図せず削除する事故が発生しました. 皆さまに大変なご迷惑をおかけすることになり,深くお詫び申し上げます. 今後,再びこのような事態の生じることのないよう再発防止に取り組む所存ですので,ご理解をいただきますよう,どうぞよろしくお願いいたします. ファイル消失の影響範囲 ・対象ファイルシステム: /LARGE0 ・ファイル削除期間:2021年12月14日 17時32分 ~ 2021年12月16日 12時43分 ・消失対象ファイル:2021年12

  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
  • systemdのenvfileを普通のコマンド実行時に流用する - たごもりすメモ

    普段はsystemd経由で実行しているコマンドをCLIから実行したい、環境変数もsystemd経由で起動するときと同様にセットしたいのでenvfile(EnvironmentFile)をそのまま使いたいんだけどなんか微妙にやりにくくないか、と思って何度か調べたことがあるんだけど、あんまりうまい方法が検索結果に出てこない。 んだけど、あれ、これ簡単じゃん。(追記: これはごく単純なケースでしか動かなかった、後段参照) $ env $(cat myenvfile | grep -v '^#') target-commandenvfileをシェルスクリプトとして実行して追加された変数をなんとかexportすれば……みたいに考えてたけどenvコマンドで一発だった。変なコメントとか入ってると厄介だけど、こんな感じでいいのでは。ということでメモ。 空白を含む値の処理 まあいいやとスルーしてたけど値が空

    systemdのenvfileを普通のコマンド実行時に流用する - たごもりすメモ
  • bashのヒアドキュメントを活用する - Qiita

    ヒアドキュメントはシェルスクリプトの中にちょっとした別のスクリプトを埋め込むときに便利です。 数行のスクリプトのためにわざわざファイルを作る必要がなくなり、見通しがよくなります。 # ちょっとしたスクリプトを動かすのに便利 # 例) oracleDBのテーブル一覧を出力する sqlplus -S user/pass@sid << EOS set pagesize 0 set feedback off select table_name from tabs order by table_name; EOS 要点 ヒアドキュメントを理解するうえで重要なのは、ヒアドキュメントは標準入力として扱われる、ということです。 文字列リテラルでないことに注意してください。 これを把握していれば、最初の例でcatにヒアドキュメントを渡していた理由がわかるかと思います。 catはファイルを省略した場合に標準入

    bashのヒアドキュメントを活用する - Qiita
  • 環境変数の設定を間違えてほとんどのコマンドが command not found になってしまったときの対処法 - Qiita

    はじめに 先日、サーバの設定をいじっていたときにやらかしてしまい冷汗を書いたので、いざというときに焦らずに対処できるようにするためにここにメモしておきます。 原因 自分の中で得られた結論を先に言ってしまうと、環境変数のexportは複数箇所に書くべきではないです。 .bash_profile等にexport PATH="パス"を追加することで環境変数が使えるようになります。たとえばlsコマンドは来なら/bin/lsや/usr/bin/lsとしなければ実行できませんが、/binや/usr/binを環境変数として登録しておけば単にlsと打つだけで実行できるようになります。 今回の問題の原因は、export PATH="/path/to/something:/path/to/anything:$PATH"となっている行の下にexport PATH="/path/to/badthing"を追加し

    環境変数の設定を間違えてほとんどのコマンドが command not found になってしまったときの対処法 - Qiita
  • Macのターミナル(bash)を最低限色付けする - Qiita

    デフォルトのままターミナルを使っているデザイナーとかは多いのかなと思った.zshやfishを入れるのが最高なんだけど,そこまで手をかけられないことは多い.そもそも使用頻度低いし.でもさすがにどぎつい黒はちょっとなぁみたいな. よくわからなくても記事通りに設定していけば出来上がるみたいな記事が見つけられなかったのでまとめてみる.既存のbashでも最低限いい感じに見やすくする設定を淡々と書き残していく. ターミナルを何度か触っている人なら10分もあれば設定できると思う. デフォルト 既存はこんな感じで悲しくなるほど見にくい(モチベーションも上がらない...) 1. bashrcを作る ターミナルを開いたら、

    Macのターミナル(bash)を最低限色付けする - Qiita
  • Bashの邪悪なコマンド9選 - Qiita

    rm -rf /やったことある人。 私はないです。 以下はAndreas Müller( Twitter / GitHub / LinkedIn / Medium )による記事、9 Evil Bash Commands Explainedの日語訳です。 9 Evil Bash Commands Explained 初めてターミナルを使って、そしてそれを理解したときのことを覚えています。 あらゆるファイルにアクセスし、全てのプログラムを実行し、黒い画面に何かを入力するだけでシステムの全てを完全に掌握できることに気がついた、あの感覚。 そしてもちろん、致命的ミスを犯して全てを失った、あのときの恐怖も。 私は当はシステム管理者ではありませんが、長年にわたってLinux/UNIXベースのシステムで作業してきたので、コマンドを実行しようとしてEnterキーを打つことを躊躇う状況に何度も遭遇しまし

    Bashの邪悪なコマンド9選 - Qiita
  • bash の危険な算術式 - どさにっき

    ■ bash の危険な算術式 _ 使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。 _ 以下のシェルスクリプトには脆弱性がある。わかるだろうか。 #!/bin/bash # "品目,単価,個数" の形式の CSV を読んで、"品目,合計金額" の形式で出力する csv="foo.csv" while IFS=, read item price num; do echo "$item,$((price*num))" done < "$csv" これ、細工された CSV ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • 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で忘れがちな機能とかいろいろの備忘録 - Qiita

    背景 シェルスクリプトを書くことが結構あるのでその備忘録代わりに記事を書いてみました。 特殊変数とは 特殊変数とは シェルによって自動的に値が設定される特殊な変数がいくつかあり、それら特殊な変数を参照することにより、様々な情報を取得することができる。 変数名 説明

    bashで忘れがちな機能とかいろいろの備忘録 - Qiita
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • npm scripts のコマンドライン引数は sh で展開される - hokaccha memo

    package.jsonに "scripts": { "lint": "eslint src/**/*.{js,jsx}" } と書いた場合、npm run lintやyarn run lintは、このコマンドをシェルを通して実行する。このときデフォルトではshが使われる。例えばmacOSだとshはbashなので、bashがsrc/**/*.{js,jsx}を展開することになる。しかしbashは**/*の展開に対応してないので思ったとおりにうごかない。 $ tree . └ src ├ a │   └ bar.js └── foo.js $ zsh -c 'echo src/**/*.js' src/a/bar.js src/foo.js $ bash -c 'echo src/**/*.js' src/a/bar.js この場合はeslintがglobを展開してくれるので、クオートしてそ

    npm scripts のコマンドライン引数は sh で展開される - hokaccha memo
  • プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話ShellScriptBash 普通のプログラミング言語での開発に慣れた人ほどシェルスクリプト、特にBashで戸惑う部分の一つに、i = 0のように空白を開ければエラーになるし、かといってif[$i!=0]のように詰めてもやっぱりエラーになる、という点が挙げられます。書きたい物を思うように書けなくて「なんだよこのクソ言語は!!!」とブチギレる人は少なくないのではないでしょうか。この記事では、そのイライラを解消するポイントをお伝えしようと思います。 以下、特に断り無く「シェルスクリプト」と書いている場合はすべて「Bashのスクリプト」という意味になります。zsh等他のシェルではまた事情が異なりますので、ご注意ください。 (※以前プログラマーの君! 騙されるな! シェルスクリプトはそう書いち

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita
  • 俺の愛用ワンライナー、Web企業のエンジニア16人に聞きました

    俺の愛用ワンライナー、Web企業のエンジニア16人に聞きました エンジニアの皆さんが愛用する自作のワンライナーってどんなもの?Web企業で働くエンジニアの方々に、秘蔵のワンライナーを聞きました。 ワンライナーとは、何か特定の処理を「たった1行のプログラム」だけで実現するものです。サービス運用に携わるエンジニアの皆さんも、愛用している独自のワンライナーを持っているのではないでしょうか。「独自のワンライナー」とは、エンジニア各人のナレッジやノウハウが詰まっているとも考えられます。 企画ではさまざまジャンルで活躍するエンジニア16人に、業務を支えてくれるワンライナーを紹介してもらいました。参考に使ってみるも良し。眺めて楽しむも良し。個性あふれる貴重な「オレオレ・ワンライナー」の数々をご覧ください! ※各カテゴリー内では所属企業名の50音順に掲載。回答者は敬称略とする。 リソース管理 プロセスを

    俺の愛用ワンライナー、Web企業のエンジニア16人に聞きました
  • bashスクリプトで実行されたコマンドを表示する - Qiita

    デバッグしやすくするために、set -xを先頭に書いておくことで実行されたコマンドを都度表示することができます。

    bashスクリプトで実行されたコマンドを表示する - Qiita
  • Windows/Linux/OS X、どんな環境でも動くBash Likeなスクリプトをを書ける「shelljs」はどうだろうか? - Qiita

    Windows/Linux/OS X、どんな環境でも動くBash Likeなスクリプトをを書ける「shelljs」はどうだろうか?JavaScriptshelljs 時として、マルチプラットフォームで動作するスクリプトを書きたいときがあります。しかし、システムが違うために、どうしてもスクリプトの共通化のできない箇所が存在します。「shelljs」はそんな悩みを少しだけ解決してくれるかもしれないライブラリです。 http://documentup.com/shelljs/shelljs https://github.com/shelljs/shelljs shelljs(概要) ShellJS is a portable (Windows/Linux/OS X) implementation of Unix shell commands on top of the Node.js API.

    Windows/Linux/OS X、どんな環境でも動くBash Likeなスクリプトをを書ける「shelljs」はどうだろうか? - Qiita
  • bashスクリプトをデバッグする方法 - Qiita

    #!/bin/bash exec 5> debug_output.txt BASH_XTRACEFD="5" PS4='$LINENO: ' set -x するとdebug_output.txtにログが出力される。 exec 5>はファイルディスクリプタ5番をdebug_output.txtにするという意味。 PS4はトレース出力の際に表示されるプロンプト。$LINENOにより行番号を表示している。 set -xは実行するコマンドをトレース出力させる。 元記事にはbashdblog4bash、Eclipse、Visual Studioo Codeを使う方法なども紹介されているが、これが一番手軽でほとんどの場合十分だと思う。 Register as a new user and use Qiita more conveniently You get articles that match

    bashスクリプトをデバッグする方法 - Qiita
  • いかに素早く目的のディレクトリにcdするか、そのためのTips - Qiita

    我々がシェルを操作している時間のうち、たぶん8割くらいはcdとlsを打っているんじゃないかとすら、私は思っています。 世の中には様々なシェルハックが溢れている昨今ですが、lsは置いといて、cdのコストを減らせれば、そこそこの効率化が図れるのではないでしょうか。そんなことを考えて色々な改善を考えてみたことをまとめた記事です。 私はBashユーザなのでBashの話ですが、Zshでも多少の改変で応用が効くのではないかと思います。 ここでの試行錯誤は2014年3月現在のものです。興味深い改造があれば都度書き足していきます。 cdのオプション まず man bash から cd の説明を観てみましょう。 cd [-L|-P] [dir] Change the current directory to dir. The variable HOME is the default dir. The var

    いかに素早く目的のディレクトリにcdするか、そのためのTips - Qiita
  • pecoの基礎の基礎 - Qiita

    「pecoってツールらしきものが流行っている」と思いつつ、導入とか難しそうと思って後回しにしていたんですが、気がついたら自分の手元のbash設定ファイルにpecoを使う関数が定義されていたので、改めて初歩からやってみました。 説明に使用しているシェルはお馴染みのbashです。 pecoとは GitHubのpecoのサイト とてもシンプルなツールで 「標準入力から受けた行データをインクリメンタルサーチして、選択した行を標準出力に返す」 コマンドです。 シンプルゆえに様々な組み合わせで効果を発揮します。あらゆる場面での選択肢を標準入力に渡して、選択された結果を標準出力から受け取って加工してコマンド実行をする、というのが基的な流れ。 説明じゃ伝わらないので実例を体験したほうが早いかも。 peco のインストール pecoで検索すると「pecoはGoでできている」とか出てきて「Goってなんぞや」

    pecoの基礎の基礎 - Qiita