タグ

解説とbashに関するiwwのブックマーク (11)

  • suとsudoの違い - Qiita

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

    suとsudoの違い - Qiita
  • 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の正規表現でスペース(空白)を判定する方法
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

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

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    iww
    iww 2021/11/10
    『シェルスクリプトの言語は他のプログラミング言語がまったく考慮していない使い方を考慮して設計されています。それは人間がシェル上で直接入力して実行するという使い方です。』
  • シェルスクリプトでset -eしているときに処理を中断せずエラーを扱う方法

    シェルスクリプトで set -e (errexit) しておくと、スクリプト中に実行したコマンドの終了ステータスが「非0」だった場合、つまりコマンドが失敗したときにそこでスクリプトを中断してくれるようになります。(終了ステータスとは「Exit code」「Return status」などと呼ばれるものです。) 都度エラー判定を書かなくてもよくなるので便利なオプションですが、個別にエラーハンドリングをしたくなった時にも意図せずスクリプトが中断されてしまい困ったことになります。 例えば、以下の例は false コマンドの実行で失敗扱いとなり、そこでスクリプトが中断されるため「finish」が出力されることはありません。 set -e # false コマンドは必ず終了ステータスに 1 (失敗) を返すコマンド # エラーが起きたとみなされスクリプトは中断される false # このコマンドは実

    シェルスクリプトでset -eしているときに処理を中断せずエラーを扱う方法
  • Windows Subsystem for Linux (WSL1) をインストールしてみよう! - Qiita

    はじめに 日時間の8月3日から提供が開始されたWindows 10のAnniversary Updateで、ついにBashがやってきました。 これでいろいろなストレスから解放されるはず。さっそくインストールして、使ってみましょう! 2017/11/02追記 Windows 10 Fall Creators Updateにおいてインストール作業が簡略化されました。 また、名称も「Bash on Ubuntu on Windows」から「Windows Subsystem for Linux」に変更されています。 旧バージョンをお使いの方にもわかるようにその都度注釈を入れていきます。 機能の有効化 まず、Windows側でLinux Subsystemを有効化する必要がありあす。 スタートボタンを右クリックして、アプリと機能をクリックします。 さらに、右上にあるプログラムと機能をクリックしま

    Windows Subsystem for Linux (WSL1) をインストールしてみよう! - Qiita
    iww
    iww 2017/05/02
    「更新とセキュリティ」に進む「設定」は「プログラム」ではなく「アプリ」の方にある。 bashのインストールが終わっても 開発者モードは 有効にしっぱなしにする必要がある。
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
  • bash:tip_colors_and_formatting - FLOZz' MISC

    Bash tips: Colors and formatting (ANSI/VT100 Control sequences) The ANSI/VT100 terminals and terminal emulators are not just able to display black and white text ; they can display colors and formatted texts thanks to escape sequences. Those sequences are composed of the Escape character (often represented by “^[” or “<Esc>”) followed by some other characters: “<Esc>[FormatCodem”. In Bash, the <Es

    bash:tip_colors_and_formatting - FLOZz' MISC
  • 変数が未定義かどうか判別する - わからん

    「覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54」を読んでいて、わからなくて調べたところのメモ。 以下は、レシピ2.3 で紹介されている変数が未定義かどうか判別するコードです。 #!/bin/sh undef="NO" if [ "${v-UNDEF}" = "UNDEF"]; then #(1) if [ "$v" = ""]; then #(2) undef="YES" fi fi (1) がわからなかったのですが、${v-UNDEF} のハイフン以降が、v が未定義だった場合のデフォルト値として、v に設定されるという構文でした。(2) はで解説されている通り、もともとの v の値が UNDEF ではないことの確認です。 man bash より。コロンの有無による違いは、「入門UNIXシェルプログラミング」p46 あたりを参照。 ${parameter:-word}

  • IPA ISEC セキュア・プログラミング講座:C/C++言語編 第10章 著名な脆弱性対策:コマンド注入攻撃対策

    第10章 著名な脆弱性対策 コマンド注入攻撃対策 C言語にはその内部でシェルを呼び出してコマンドを実行できる system()、popen() 等のライブラリ関数が備わっているが、これらを使う場合、コマンド注入攻撃への対策が必要である。 シェル シェルは、Unix, GNU/Linux で使われるコマンド解釈実行プログラムである。 シェルはユーザが指定したプログラムを単に起動するのみならず、ファイル入出力のリダイレクト、複数コマンドの組み合わせ実行、パイプ、変数、条件分岐、ループ等プログラミング機能をも含む強力なツールである。 Unix OSの歴史とともに、かつては様々な種類やバージョンのシェルが使われてきたが、最近は bash と呼ばれるシェルが使われることが多い。GNU/Linux においても同様である。 コマンド注入攻撃は、プログラムが外部からの入力を組み入れてシェルコマンド文字列を

  • 貧乏だってプロファイリングは出来る!! - poor man's profiler

    従来より、プロファイリングのためのソフトウェアと言えば高価なものが中心であった。もっと安く、お金を掛けずに、簡単に、早くプログラムのボトルネックを探し出す方法はないのか?!ということで編み出されたプロファイリングテクノロジーがある。その名も、「poor man's profiler」だ。 poor man's profilerの全容は、次のページで知ることが出来る。 Poor Man's Profiler http://poormansprofiler.org/ poor man's profilerは、現Facebook(元MySQL ABのサポートエンジニア)のDomas Mituzasによって開発されたプロファイリングテクノロジーである。以下が、その全ソースコードである。 #!/bin/bash nsamples=1 sleeptime=0 pid=$(pidof mysqld) f

    貧乏だってプロファイリングは出来る!! - poor man's profiler
  • bashにて複数端末間でコマンド履歴(history)を共有する方法 (iandeth.)

    Tera Term 等の端末を複数同時に立ち上げて作業したり、screenにて複数の仮想端末を同時並行で操作する際、コマンド実行履歴が端末間で共有できなくて困る事が多々あります。「さっきのfindコマンドをもう一度... 引数どう書くんだっけなぁ... あ、確かコマンド履歴にあったはずだなぁ... ちっ、それはあっちの端末の履歴だったか」みたいな。zshには端末間のコマンド履歴を常に同期できる'SHARE_HISTORY' なるオプション(*1)があって素敵なのですが、同じことを bash で実現する方法を調べたのでご紹介。 (*1) zshの同機能について詳しくはITmedia記事 "豪傑の三種の神器【後編】" を参照の事 不具合) 通常設定のbashで困る事 1. 複数端末間でコマンド履歴の共有ができない 同時に立ち上げている端末間で履歴の共有ができなくて不便に感じることがある。 2.

    iww
    iww 2009/03/19
    historyの番号が毎回書き換わるので !数字 が全く使えなくなるという欠点がある
  • 1