タグ

bashに関するiwwのブックマーク (275)

  • シェルスクリプト(Bash): \ で改行してる時の 1 行コメントアウト - Qiita

    somecommand --optionA=xxxx \ --optionB=yyyy \ --optionC=zzzz \ --optionD=wwww

    シェルスクリプト(Bash): \ で改行してる時の 1 行コメントアウト - Qiita
    iww
    iww 2024/02/23
  • Bashにおけるインクリメントの方法 - やってみる

    様々ある。 参考 https://rcmdnk.com/blog/2013/11/13/computer-bash 方法 ((count++)) let count++ count=\expr $count + 1`` ((count++)) OK count=0 while [ $count -lt 3 ]; do ((count++)) done count=$((++count))の部分は、以下のように置き換えることができる。 : $((count++)) count=$((++count)) count=$((count+1)) ((count++)) (事前に数値として初期化(count=0等)した場合のみ) 実行速度が速い。表記も短い。ただし、以下のようにわずかな表記の違いでバグる罠が多数ある。 NG 1 count=0 while [ $count -lt 3 ]; do c

    Bashにおけるインクリメントの方法 - やってみる
  • 【Bash】 スクリプト中のaliasコマンドが実行できない - takafumi blog

    環境   archlinux 4.14.4-1 非インタラクティブモードではaliasは展開されない。 非インタラクティブとは $ bash test.sh みたいに実行する事。 普通に実行すると以下のようになる $ cat ~/.bashrc alias ll='ls -la' $ bash test.sh test.sh: line 5: ll: command not found BASH_ENVで.bashrcを読み込ませてみる $ BASH_ENV=~/.bashrc bash test.sh alias ll='ls -la' test.sh: line 5: ll: command not found aliasは読み込まれるが、実行しようとすると展開されない。 対処法 man bashにちゃんと書いていた。 Aliases are not expanded when the

    【Bash】 スクリプト中のaliasコマンドが実行できない - takafumi blog
    iww
    iww 2023/12/22
    shopt -s expand_aliases
  • SC2181 · koalaman/shellcheck Wiki · GitHub

    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

    SC2181 · koalaman/shellcheck Wiki · GitHub
    iww
    iww 2023/08/31
    if文の式にコマンド入れたくないんだよ
  • シェルスクリプトのシバン(Shebang)にシェル以外のコマンドを記述したらどうなるのか? | ゲンゾウ用ポストイット

    ゲンゾウ用ポストイット シェル / Bash / Linux / Kubernetes / Docker / Git / クラウドのtipsを発信。 はじめにUNIX 上で動作するスクリプトは、1 行目に #! から始まる 1 行を記述します。 これによりスクリプトの実行系を認識させることができます。 シェルスクリプトの場合は #!/bin/sh 、 #!/usr/bin/bash 、 #!/usr/bin/env bash と記述します。 Ruby スクリプトの場合は #!/usr/bin/ruby 、 #!/usr/bin/env ruby と記述することが多いでしょう。 この 1 行目の記述のことを「 シバン 」とか「 Shebang 」と呼びますが、今ひとつこのあたりの仕組が理解できてなかったため、シバンでいろいろ遊んでみることにしました。 検証環境$ uname -moi x86

    シェルスクリプトのシバン(Shebang)にシェル以外のコマンドを記述したらどうなるのか? | ゲンゾウ用ポストイット
    iww
    iww 2023/08/24
    『このように整理できると、シェルスクリプトの中で ${0} という組み込み変数が 実行されたスクリプトファイルのパス を示している仕組みが理解できるようになります。』
  • バッチファイルからBashシェルスクリプトを実行する方法 - Engineer's Notebook

    Cygwin + Bashシェルスクリプトってほんとに便利! 最近は WSL が流行りですが、まだまだCygwinの出番も多いですよね。 そんな便利なBashシェルスクリプトですが、Batファイルと違ってエクスプローラーから直接実行できないのが難点です。 そんなときはBashシェルスクリプトを起動するBatファイルを作ってみましょう。 ここからの解説はCygwinを前提にしていますので、あらかじめCygwinをインストールしておいてください。 バッチファイルからBashシェルスクリプトを実行する方法 bash.exeにコマンド(シェルスクリプト)を渡すことでバッチファイルからBashシェルスクリプトを実行することができます。 @SETLOCAL @SET PATH="C:\cygwin64\bin";%PATH% @SET CHERE_INVOKING=yes @SET LANG=ja_J

    バッチファイルからBashシェルスクリプトを実行する方法 - Engineer's Notebook
  • シェルスクリプトで標準出力と標準エラー出力に別々の色をフィルタでつける - Qiita

    画面にログを出力する時、標準出力と標準エラー出力に別々の色がついていると見やすいですよね? 標準出力に出力する場合は out 関数、標準エラー出力で出力する場合は error 関数のよう別々の関数を使って色をつけて出力する方が簡単ですが、場合によっては後からフィルタで標準出力と標準エラー出力それぞれに色をつけたほうが楽な場合もあります。 この記事では題材として出力に色をつけていますが、一般化して言うと標準出力と標準エラー出力のそれぞれに対してパイプで異なるフィルタ(コマンド・シェル関数)を適用させたい場合の書き方です。 関連記事として「POSIX準拠シェルのためのpipefailとPIPESTATUSの実装(改良版)」も紹介しておきます。 0. 共通処理 最初に共通で使用する関数を定義しておきます。 #!/bin/sh set -eu ESC=$(printf '\033') colori

    シェルスクリプトで標準出力と標準エラー出力に別々の色をフィルタでつける - Qiita
    iww
    iww 2023/06/17
    標準エラー出力を赤くする
  • printenv、env、set、exportコマンドの違いに関して

    作成日:2020/01/29 CentOS / Redhat Enterprise Linux における変数関連のコマンドを紹介します。 (*)bash を想定しています。他のシェルでは動作が異なる可能性が高いので注意してください。 参考:シェル変数と環境変数の違い シェル変数:シェル内のみ有効 環境変数:子シェル、シェルから実行したプログラムにも引き継がれる変数。 (注意)分かりやすく簡単に記載しており、一部の環境や分野では記載内容が異なる可能性があります。あくまでも参考程度でお読みください。 比較表 比較は以下の表の通りとなります。

  • bash でコマンドの実行結果をファイルとして扱う - Diary

    プロセス置換(Process Substitution)を用います。使い方と一緒に、ぜひ名前も覚えましょう。 使い方 # 通常のファイル入力の場合 $ cat test.txt # コマンドの実行結果をファイルとして扱う場合 $ cat <(echo "hoge from echo command") hoge from echo command ファイル名を<(コマンド)で置き換えるだけです! <と(の間にスペースはいりません。 少し具体的なコマンドで見てみます diff コマンド diff <(echo 3.0+3 | bc) <(echo $((3.0+3)) ) 1c1 < 6.0 --- > 6. 片方をファイルにして、もう一方をプロセス置換にすることもできます $ cat file.txt file $ diff file.txt <(echo "content") 1c1 <

    bash でコマンドの実行結果をファイルとして扱う - Diary
    iww
    iww 2023/02/27
  • 【Linux】diffでコマンド実行結果を比較する

    この記事では次の実行例について紹介します。 コマンドの実行結果同士の比較 コマンドの実行結果とファイルの中身を比較 diffで改行が入ると差分がでてしまう問題の対策 コマンド実行結果同士の比較 結論としてはdiff <(コマンド1) <(コマンド2)のかたちで記述すれば良いです。 下記の例は同じディレクトリに対してls -lを実行しているので差分なしとなります。 $ diff <(ls -l) <(ls -l) こちらの例は、同じディレクトリに対してls -l とlsでコマンドの実行結果を比較しています。 -lオプション有り無しでは実行結果が違うので差分が出ています。 $ diff <(ls -l) <(ls) 1,2c1 < total 0 < -rw-r--r-- 1 root root 0 9月 13 21:41 hoge --- > hoge コマンド実行結果とファイル中身を比較

    iww
    iww 2023/02/27
  • .bash_profileと.bashrcなんて使い分けなくてよかったんや! - Qiita

    この記事の内容 .bash_profile と .bashrc の使い分けの説明はいろいろあるんですが、 どうにも腑に落ちなかったので、私なりに調べてみました。 で、自分的にはこれで必要十分な理解ができたと思ったので投稿。 とりあえずここまで理解すれば、後はその都度対処していけるかなー、と。 2018/03/20追記 :もともと合わせて1つの記事にする予定だった 「Linuxでシェル間の設定の引継ぎを蛇足感満載で確認した」という記事を投稿しました! こちらと合わせて読んでいただけると嬉しいです。 スーパー忙しい人のための結論 設定はすべて.bashrcに書く これでいいんやで。 動作確認の環境 Windows10のHyper-V上で動いているCentOS7で動作を確認 CentOS7はインストール直後の状態で試しているので設定ファイル等は書き換えていない OSインストールのグループ(最小限

    .bash_profileと.bashrcなんて使い分けなくてよかったんや! - Qiita
    iww
    iww 2022/12/29
    .profileと.bashrc はごっちゃにしてるとつまらない事故のもとになるので、面倒でもきちんと使い分けたほうがいいです。 という話
  • bashの組込みコマンド自作によるスクリプトの高速化 - 覚書

    はじめに bashには次の2つの理由によって、組み込みコマンド(builtin command)というものが存在します。 スクリプトの高速化のため。組み込みコマンドであれば通常のコマンドを実行する場合に比べてプロセスの生成コスト(fork()/exec())が削減できる bash自身の状態を変更させるため。例えばcdコマンドを/bin/cdとして用意してbashから当該コマンドを実行しても、当該コマンドのpwdが変更されるだけで、bashのそれは変更されないため、意味がない 今回は前者に焦点を合わせて、その効果と、組み込みコマンドの自作方法について述べます。 予備知識: 組込みコマンドによるスクリプト高速化の効果 組込みコマンドそのものの存在、及びその存在意義について既にご存知のかたは、この節を飛ばしてもらって構いません。 例えば皆さんがbashスクリプトからechoコマンドを実行した場合

    bashの組込みコマンド自作によるスクリプトの高速化 - 覚書
  • SC1072 · koalaman/shellcheck Wiki · GitHub

    iww
    iww 2022/10/18
    なんかバグらしい。日本語コメントがあると構文解析できなくなってアホになるらしい。 とりあえず、使い物にはならない
  • Can I use a variable in a Bash brace expansion?

    iww
    iww 2022/09/15
    {0..$HOGE} が展開されないやつ
  • suとsudoの違い - Qiita

    suとsudoはオプションの違いはあるものの、できることはほぼ重複している。 ただ、suは切替先ユーザー(root)のパスワードが要求されるのに対し、sudoは元のユーザーのパスワードが要求される。sudoは/etc/sudoersで権限を細かく設定できるので、どちらか片方だけ覚えるならsudoだけを覚えておくとよい。 オプションによって実行後のカレントディレクトリや環境変数が変わってきて、それでハマることがあるので違いをまとめておく。 (Amazon Linuxで確認。CentOSでもほぼ同じと思うが、他のディストリビューションでは違う可能性あり) コマンド .bash_profile .bashrc pwd HOME PATH

    suとsudoの違い - Qiita
  • Cシェル変数:rmstar: UNIX/Linuxの部屋

    そこで、シェル変数 rmstar をセットしておくと、rm の引数に * を指定したとき、当に消してもよいかどうか確認を求めてくる。

    iww
    iww 2022/05/20
    rm * とやったときに聞いてくる環境変数。 初めて知ったけど便利やんと思ったけど tcsh にしかないらしい。
  • PHP: shell_exec - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

    iww
    iww 2022/03/30
    『この関数は バッククォート演算子 と等価です。』
  • 【シェル芸人への道】Bashの変数展開と真摯に向き合う - Qiita

    はじめに 個人的なシェル(スクリプト)あるあるなんですが、変数操作に悩んでいるとBashの 変数展開 って思った以上に色んなことができてしまうことに気がつきます。 「なんかいい感じの書き方ないかなー」 「cut, tr, sed, awk, ...、まぁできるのは間違いないんだけど」 「うーん」ググリ― (10分後) 「えっ、変数展開...?(怪訝)」ポチポチ 「...」カタカタ 「いけるやん!!!」 ってことが結構あります。皆さんもこういった経験少なからずあるのではないでしょうか。 (そして今もまさにそういう記憶・期待があるから、変数展開について少し調べている...そんなところかと推察します) 毎回調べるのも感動があっていいと思うんですが、もはや衝動を押さえきれないので 全部調べたい と思います。 Bashのバージョンは 4.3.48(1) でしたが、そうそう変わるような内容でも

    【シェル芸人への道】Bashの変数展開と真摯に向き合う - Qiita
    iww
    iww 2022/03/22
  • シェルスクリプトで関数を利用する - Qiita

    このとき、関数の名前に続けて、引数を書くことができます。関数内では、通常のシェルスクリプトの引数を処理するのと同じように\$1、\$2、...という形でアクセスできます。 簡単な例 #!/bin/bash # 関数の定義 say_hello () { echo "Hello, world!" } # 関数の呼び出し say_hello

    シェルスクリプトで関数を利用する - Qiita
    iww
    iww 2022/03/22
  • SC2162 · koalaman/shellcheck Wiki · GitHub

    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.

    SC2162 · koalaman/shellcheck Wiki · GitHub
    iww
    iww 2022/02/10
    readコマンドを使うときは -r をつけてバックスラッシュによるエスケープを殺した方がいいよという話