タグ

bashに関するn2sのブックマーク (57)

  • bash の select は令和の時代も役に立つ, その一例 - ようへいの日々精進XP

    tl;dr man bash 例 若干の Kubernetes クラスタを選択したい Kubernetes Pod を選択したい 以上 tl;dr ホントにちょっとした運用ツールを bash で作っていて, 複数の選択肢をリストアップしてメニューとして選択出来るようにしたいなーと思っていたら, bash には select 文という超絶便利な構文が用意されていたので使ってみました. man bash https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html より引用させて頂きつつ, 重要だなと思ったところをかいつまんで. select name [ in word ] ; do list ; done in に続く単語のリストが展開され、要素のリストが生成されます。 展開された単語の集合が番号付きで標準エラー出力に出力されます。 「in

    bash の select は令和の時代も役に立つ, その一例 - ようへいの日々精進XP
    n2s
    n2s 2020/04/20
    zshにもある模様
  • BashとZshの “**” (globstar) の挙動の違い

    “**” (globstar) とは globの構文として使える、0個以上のディレクトリに再帰的にマッチするワイルドカードです。 例えば、a/**/zは a/z, a/b/z, a/b/c/z… にマッチします。 元々はzshで実装され、Zsh 2.2で**の形式として定着したようです1。 その後、Bash 4.0でもglobstarオプションを有効にすることで使えるようになりました2。 globの構文はPOSIX.2にも定義されていますが、そこには**は含まれていないため、処理系によって動作がまちまちになっています。 この記事では、bashとzshでの挙動の違いを紹介します。 BashとZshでの挙動の違い 次のようにディレクトリとファイルを用意し、bash、zshそれぞれでマッチするかどうかを確かめ、結果を表にまとめました。 環境はdocker ubuntu:focal、bash 5.

  • 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/Zshで関数やaliasを無視してオリジナルのコマンドを使う方法

    B! 13 0 4 0 lsなんかをalias ls='ls --color=auto' とカラー表示をするようにaliasを作っていたりすることがあると思いますが、 この場合lsと打つと必ずこの引数がついてきてしまいます。 また、ラッパー関数的なものを元のコマンドと同じ名前で作ろうとした時、 そのまま中で同じコマンドを使うと無限ループに陥ります。 そういった時に元のコマンドを使う方法について。 優先順位 優先順位を無視して指定のコマンドを実行する方法 バックスラッシュでエスケープ クォートする コマンドを変数に代入する command コマンドへのパスを書いて実行 $(which command) builtin alias X=X まとめ 優先順位 シェルのコマンドとして実行されるものとして、 alias 関数 Bash等シェルのbuiltinコマンド(echoなど) PATHが通った

    Bash/Zshで関数やaliasを無視してオリジナルのコマンドを使う方法
  • シェルスクリプトでの関数の書き方について

    B! 19 0 0 0 シェルスクリプトで関数を定義する時、functionと付けても付けなくても 定義出来たりしますが、 その辺のしっかりとした定義について。 function foo or foo () foo () any-command foo () any-compound-command function foo { …; } function foo () { …; } function foo () other-compound-command まとめ function foo or foo () Bashなどのシェルスクリプトで関数を定義するには function foo { ... } の様にfunctionを前に付けて定義するか foo () { ... } の様にfunctionを使わずに後ろに()を付けて定義するのが通常です。 今まで作ってるスクリプト(Bash)

    シェルスクリプトでの関数の書き方について
  • bashからzshに移行してみたときのメモ - Qiita

    普段はCygwinからLinux系のサーバに接続して作業しているので、以下の記事はCygwinを前提として書いてます。 ですが、「インストール」のところ以外はUbuntuとかの他のLinux系OSでも問題なく動くと思います。 bashからzshへ移行してみた Linuxディストリビューションで、幾つかあるシェルの中でも初期装備として採用されることの多いbash。 以前は特に不満なところはなかったのですが、最近似たような名前のディレクトリやファイルが増えてきてしまい、Tab補完の恩恵を十分に受けられなかったり、タイプミスが頻発したりしてました。 そこで、シェルの一種であるzshの記事を偶然目にし、それによるとbash以上にTab補完が強力ということなので試しに導入 zshの設定諸々 インストール

    bashからzshに移行してみたときのメモ - Qiita
    n2s
    n2s 2017/11/08
  • shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をする - Qiita

    shellの-cオプションについて、全てのshellで同じ挙動だと思っていたら、shellごとに結構違う挙動を持っていたことが原因でハマったのでメモ shellの-cオプションについて manコマンドで見てみるとこんな感じ。 For sh(dash) ubuntuの場合shはdashという軽量シェルにリンクしています Read commands from the command_string operand instead of from the standard input. Special 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands. For bash If the -c

    shellの-cオプションについてUbuntuのsh(dash)、bash、zshはそれぞれ違う挙動をする - Qiita
  • 何もしない組み込みコマンド ":" (コロン)の使い道

    Bash でシェルスクリプトを勉強していくと出会うのが : (コロン)という名前の組み込みコマンド。このコマンドは何もしないコマンドです。 こんなコマンドの存在は不思議だなと思う反面、C言語にも void という型があったり(関数のような形で存在するのは JavaScript とかですね)、LaTeX にも \relax があったり、何もしない命令というものは機械語の NOP からある普通のものです。 この Bash の : の使い道についてまとめてみました。 何か書かなければならないところに仮置きする 例えば「ここに制御構造を置くんだけど、この節に入るものは後で書くんだけどな〜」といった場合、制御構造の節の中に何も書かないと Bash は構文エラーとなります。

    何もしない組み込みコマンド ":" (コロン)の使い道
    n2s
    n2s 2016/12/23
  • bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換 - それマグで!

    bash のbrace 展開で文字列を置換する 文字の置換は、bashはとても楽ちんである。 NAME=www.example.com echo ${NAME//./_} # www_example.com echo ${NAME//./_} # www_example_com これをもう少し掘り下げる。 bash でファイル名から拡張子を取出す方法 ファイル名から拡張子を取出すのはカンタンでした。 path=/etc/apache2/httpd.conf extension=${path##*.} #=> conf 魔法の記述方法 ${varname##*.} を使うと 手軽に拡張子を取得できる。 拡張子を書き換える方法 拡張子を書き換えるには、変数の書き換えを使えば直ぐ出来る。 f_name=httpd.conf txt_name=${f_name/.*/.txt} #=> httpd

    bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換 - それマグで!
  • bashのワイルドカード展開は該当するファイルが無いと*が展開されずに残る - Qiita

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

    bashのワイルドカード展開は該当するファイルが無いと*が展開されずに残る - Qiita
    n2s
    n2s 2016/01/06
  • ZshでもBashでも動くfunctionを書くときのストレスを減らそう - Qiita

    この記事は zsh Advent Calendar 2015 3日目のために書かれました. Zsh には様々なオプションが存在します.オプションの中にはシェルが与えられたコマンド列をどう解釈するのかどうかに影響するものがあります.それらのオプション次第では,同じバージョンの Zsh であっても異なる挙動を示すことになってしまいます. さらに Zsh 以外のシェルで実行する場合は,当然のことながらオプション次第では互換性を失ってしまう構文が存在します. そこで今回は Zsh 以外のシェルとして Bash を取り上げつつ,オプションや書き方を調整することで,自分の設定が反映されていない Zsh でも Bash でも動くようなfunctionを変なところでハマらずに書けるようにしましょう. はじめに Zsh のオプションの設定にはsetoptやset -oなどが存在しますが,今回はsetoptで

    ZshでもBashでも動くfunctionを書くときのストレスを減らそう - Qiita
    n2s
    n2s 2015/12/04
  • Bashのよくある間違い | Yakst

    原文は2015年8月22日時点のものを利用しており、それ以降に追記、更新されている可能性があります。 翻訳は原作者の許可を得て公開されています。 Thanks for GreyCat! このページはBashプログラマーが陥りがちなよくあるエラーについてまとめました。以下の例は全てなんらかの欠陥があります。 クオートをいつも使い、どんな理由があっても単語分割を使わなければ、多くの落とし穴からあなた自身を守ることができます!単語分割はクオート表現をしない場合にはデフォルトでオンになっている、Bourneシェルから継承された壊れたレガシーな設計ミスです。落とし穴の大半はクオートされていない展開になんらか関連し、単語分割しその結果をグロブします。 1. for i in $(ls *.mp3) BASHプログラマーたちがループを書く際にもっとも犯しがちなよくあるミスは以下のような感じです。: f

    Bashのよくある間違い | Yakst
    n2s
    n2s 2015/09/28
  • Linuxでextglobを有効にして「指定したパターン以外のファイル」を指定する | 俺的備忘録 〜なんかいろいろ〜

    仕事などで日常的にLinuxを利用しているのであれば、ほぼ大半の人がglobを利用した事があるだろう。 globという名前にはあまり馴染みが無いかもしれないが、以下のようにワイルドカードや複数のファイル名を指定したりする機能は使ったことがあるはずだ。 例)「/work」フォルダ配下のファイルを「/work2」に移動する mv /work/* /work2/ 例)「/work」フォルダ配下の「aaa.txt」「bbb.txt」のみを削除する rm /work/{aaa.txt,bbb.txt} このような指定方法を可能にしているのがglobという機能になる。 そんなglobを拡張したのが、今回紹介するextglobだ。 このextglobを利用すると、globでは指定が難しかった事、例えば"特定のフォルダ以外を指定する"といった事が簡単に行える。 bashやzshで有効になっているかどうか確

  • zshが無いと死ぬ人がbashでなんとかする - ろば電子が詰まつてゐる

    ※この記事は、zsh Advent Calendar 2014 - Qiitaの19日目です。 zsh無しにbashで生きる zsh大好きな皆さんは、bashを心の中のどこかでバカにしているのではないでしょうか。しかし最近のbashは、いろいろとzshを意識している(?)雰囲気があり、zsh特有だと思っていた機能が実はbashでも使えたりします。 そのため、 zshを使えないと全身から血を吹き出して死ぬ ログインシェルとしてzshが起動されないと発狂して死ぬ 「最近はSolarisにだってzshが入っている」と一日100回は唱えないと死ぬ zsh神社が欲しい、参拝したい という人でも、bashがあれば多少の延命ができるかもしれません。稿では、zshが無いというサバイバル環境下において、bashでなんとかすることをテーマにいくつかサンプルを挙げてみます。 なおここでは、bashのプロンプト

    zshが無いと死ぬ人がbashでなんとかする - ろば電子が詰まつてゐる
    n2s
    n2s 2014/12/19
  • zshとbashでは変数の単語の分割ルールが違う - Qiita

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

    zshとbashでは変数の単語の分割ルールが違う - Qiita
  • bash の脆弱性 "Shell Shock" のめっちゃ細かい話 その2 (CVE-2014-7169) - もろず blog

    ※2014/10/3 0:00時点で Shell Shock への修正パッチは4つ公開されています 既に対応済みのシステムでもパッチの漏れがないか注意してください ※2014/10/7 14:00時点で Shell Shock への修正パッチは6個公開されています 既に対応済みのシステムでもパッチの漏れがないか注意してください 先日 ShellShock についての記事を書きましたが、 その後もいろいろと進展があり更にいくつかの脆弱性が検出されました ※前回の記事はコチラ bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog 現時点で ShellShock に関わる脆弱性はなんと6個も報告されています CVE-2014-6271 CVE-2014-6277 CVE-2014-6278 CVE-2014-7169 CVE-2

    bash の脆弱性 "Shell Shock" のめっちゃ細かい話 その2 (CVE-2014-7169) - もろず blog
  • bashの脆弱性 (ShellShock) まとめ - 気ままなブログ

    これまでに見つかり修正されているbashの脆弱性 (ShellShock) について、該当有無の判断方法と、修正バージョンをまとめました。 CVE-2014-6271 確認方法 $ env x='() { :;}; echo vulnerable' ./bash -c "echo this is a test" [NG pattern] vulnerable this is a test [OK pattern] ./bash: warning: x: ignoring function definition attempt ./bash: error importing function definition for `x' this is a test or No output. 修正パッチ bash43-025 bash42-048 bash41-012 bash40-039 bas

    bashの脆弱性 (ShellShock) まとめ - 気ままなブログ
  • 記者は「ShellShock」に触れてみた、そして震え上がった

    LinuxなどUNIXベースのOSで広く使われているシェル(コマンド実行環境)「GNU Bash」で2014年9月24日に見つかった非常に危険な脆弱性、いわゆる「ShellShock」の件で、IT業界が大騒ぎになっている(関連記事:「Bash」に重大な脆弱性、Heartbleed以上に危険との見方も)。 記者は先週末、取材でほとんど外に出ていたが、取材先を訪問するたびに必ずこの話題が出ていたほど。もちろん、ITproはじめIT系ニュースサイトもShellShock関連のニュースを盛んに取り上げている。既にこの脆弱性を悪用する攻撃も始まっており、ボットネットも出現している。この先どんな被害が出るのか、想像するのも困難な状況だ。 記者は、記者としてこの手のセキュリティ記事を書く立場だが、対策をとるべきインターネットサイトの運用者としての立場も持っている。自宅で固定IPアドレス(IPv4)を契約

    記者は「ShellShock」に触れてみた、そして震え上がった
  • ShellShockがCGIに及ぼす影響を少し過大評価していたかも - Qiita

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

    ShellShockがCGIに及ぼす影響を少し過大評価していたかも - Qiita
    n2s
    n2s 2014/09/30
    PerlやRubyでは「空白で区切っててメタ文字も含む一つの文字列」を渡したときだけシェルが実行される。パラメータを分割して渡しているorメタ文字を含まない場合は実行されない。
  • Linuxアプライアンス類もBash脆弱性対策を - .@sknn's tumblr.

    [NEW] 2014/09/30: アプライアンスの対応状況まとめを随時更新中 CVE-2014-6271及びCVE-2014-7169ねた(Bash脆弱性)。 世間では、外部公開サーバー(特にWebサーバー)への対処が着々と進められています。Webサーバーだけでなく、メールサーバーへの攻撃パターンも早期に見付かっています。外部公開サーバーに対する総合的な点検が近いうちに進んでいくものと思われます。 bash Shellshock through MAIL .forward / qmail-alias piping (ML program etc.) CVE-2014-6271 http://t.co/QPbSE8dppM http://t.co/AFuHudkCdh September 26, 2014しかし、一般的なサーバー類だけでなく主にファイアウォールの内部に設置されているアプライ

    Linuxアプライアンス類もBash脆弱性対策を - .@sknn's tumblr.