タグ

bashに関するmichael-unltdのブックマーク (37)

  • bash, zshでyes/no判定をするワンライナー - Qiita

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

    bash, zshでyes/no判定をするワンライナー - Qiita
  • Linux - bashワンライナーループ - 覚えたら書く

    bashのワンライナーループは何だかんだでよく使うので、ここからコピペする目的のためメモです。 基的に以下で実行できる for i in {1..<end>} ; do <something command> ; done 10回コマンドを実行するなら以下 for i in {1..10} ; do <something command> ; done 例えば10個のディレクトリ(dir1~dir10)を作成するなら以下のような感じ for i in {1..10} ; do mkdir dir${i} ; done 例えば100個のファイル(file1.txt~file100.txt)を作成するなら以下のような感じ for i in {1..100} ; do echo ${i} > file${i}.txt ; done

    Linux - bashワンライナーループ - 覚えたら書く
    michael-unltd
    michael-unltd 2020/01/21
    "for i in {1..10} ; do <something command> ; done"
  • exec - シェルを実行したコマンドで置き換える

    execコマンドはbashの組み込みコマンドでシェルを実行するコマンドで置き換えるコマンドになります。例えば、シェルスクリプト等で、あるコマンドを実行する場合、プロセス上では、実行したいコマンドが終わるまでそのコマンドを実行するシェルスクリプトのプロセスが残ることになります。実行できるプロセス数には限界があり、execコマンドで実行すると無駄にプロセスが実行することを防げます。 また、execコマンドを引数にコマンドなしで利用するとシェルのリダイレクトの設定を変更することもできます。 プロセスを置き換える あるコマンドを実行させたいときに、シェルスクリプトを実行してコマンドを実行させる場合、プロセス上ではコマンドを実行させるために起動したシェルスクリプトのプロセスがそのコマンドが終了するまで残ります。例えば、sleepコマンドを起動させるシェルスクリプト実行させて、その後、すぐに実行を中断

    exec - シェルを実行したコマンドで置き換える
    michael-unltd
    michael-unltd 2019/12/24
    “変数$@はシェルスクリプトの変数がすべて展開される変数”
  • Windowsで使えるターミナルとシェルのまとめ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Windowsで使えるターミナルとシェルのまとめ Windows で使えるターミナルとシェルをまとめてみた。 Windows でも選択肢は意外と多い。 ターミナルとシェルの組み合わせで自分好みの環境を構築できるだろう。 ターミナルとは? ターミナル、ターミナルエミュレータ、端末エミュレータ、ターミナルソフト、コンソール等と呼ばれる。 黒い画面で、テキストがずらずらと表示されるアレである。 ただし、画面に表示されるコマンド文字列などはシェルの機能である。 外側の GUI 部分だけがターミナルと言われる。 ターミナルは画面の見た目や操作性な

    Windowsで使えるターミナルとシェルのまとめ - Qiita
    michael-unltd
    michael-unltd 2017/08/21
    “mintty”
  • bashのヒアドキュメントを使ったスクリプトの作成 - 作業ノート

    仕事で行った作業を社内のwikiなどにまとめるとき、その作業で実行したコマンドを含めてまとめている。 最近ではスクリプトの作成手順を示す際に、catコマンドを使って $ cat <<EOT > foo.sh #!/bin/bash set -eu ... EOT このように表記している。 これはbashのヒアドキュメントを利用したもので、これをコピペして実行するだけで必要なスクリプトが作成できるので、とても便利。 ただ、この記述ではドキュメント内にbashで解釈可能な変数があると、その変数が展開されてしまう。 例えば $ cat <<EOT > foo.sh #!/bin/bash set -eu PATH=$PATH:/path/to/bin EOT このようにして作成したスクリプトを確認すると $ cat foo.sh #!/bin/bash set -eu PATH=/usr/loc

    bashのヒアドキュメントを使ったスクリプトの作成 - 作業ノート
    michael-unltd
    michael-unltd 2017/03/13
    “回避する方法の一つは、ヒアドキュメントのワード(最初のEOT)をクォートで囲む。”
  • /bin/sh と /bin/bash の違い - 双六工場日誌

    みなさん、shebang書いてますか! Shebangというのは、スクリプトの最初の一行目に書く、「#!/bin/sh」とか「#!/usr/bin/perl」とかそういうあれです。詳しくはWikipediaさん(シバン (Unix))に聞いてくださいまし。 Twitter見てると、「そもそもこれにshebangなんて名前がついてるの知らなかったよ」という発言も見る不憫な子ではあるのですが、そこに何が書いてあるかで実は動作が違うよってのが今日の題です。それで、はまっていたのを最近見て、まああまりここで引っかかる人はいないと思いつつ、この点を書いた情報を見ないのでまとめてみました。*1 今日取り上げるのは、bashがデフォルト設定になっているLinuxでの「#!/bin/sh」と「#!/bin/bash」のお話。確認はCentOS5, 6で行なっています。 さて、上記の環境の場合、「/bin

    /bin/sh と /bin/bash の違い - 双六工場日誌
    michael-unltd
    michael-unltd 2016/07/21
    “この動作はbashのマニュアルにも記載されているPOSIX互換モードによるものです。”
  • 複数のファイル内の文字列をまとめて置換するLinuxコマンド - Qiita

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

    複数のファイル内の文字列をまとめて置換するLinuxコマンド - Qiita
    michael-unltd
    michael-unltd 2016/07/08
    “grep -l '置換対象の文字列' ./ | xargs sed -i.bak -e 's/置換対象の文字列/置換後の文字列/g'”
  • 本当に正しい .bashrc と .bash_profile の使ひ分け - Qiita

    適当にググると「とにかく何でも .bash_profile に書いとけばおk」みたいな嘘を書いたブログ記事がわんさか出てくるのでここに正解を書いておきます。 .bash_profile .bash_profile はログイン時にのみ実行されます。具体的な用途は: 環境変数を設定する (export する変数) 環境変数はプロセス間で勝手に受け継がれるのでログイン時のみ設定すれば十分です。 .bashrc .bashrc は対話モードの bash を起動する時に毎回実行されます。具体的な用途は: 環境変数でない変数を設定する (export しない変数) エイリアスを定義する シェル関数を定義する コマンドライン補完の設定をする これらは bash を起動する度に毎回設定する必要があるものです。 その他 .bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの?

    本当に正しい .bashrc と .bash_profile の使ひ分け - Qiita
    michael-unltd
    michael-unltd 2016/07/08
    “# .bash_profile の最後に test -r ~/.bashrc && . ~/.bashrc”
  • 技術/shell/".bash_profile"と".bashrc"の使い分け - Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

    作成日: 2009-05-09 02:53:07   /   last updated at: 2009-05-09 03:01:54 カテゴリ: シェルスクリプト [ Prev ] [ Next ] [ 技術 ] bash_profile, bashrcの基的な知識のメモ。bashの日語manページより抜粋&まとめ。 "~/.bash_profile"を読み込む場合 bashが対話的なログインシェルとして起動されるか、 --login オプション付きの非対話的シェルとして起動されると、/etc/profile からコマンドを読み込んで実行した後、以下の順番でファイルを探し、最初に見つかった読み込み可能なファイルからコマンドを実行する。 ~/.bash_profile ~/.bash_login ~/.profile "~/.bashrc"を読み込む場合 ログインシェルでない対話的シェ

  • bashとzshでviのキーバインドを使用する - builder by ZDNet Japan

    大半のシェルでは、コマンドラインの編集や修正にEmacs風のキーバインドが使用されるようにデフォルトで設定されている。しかし、viユーザーやvimユーザーであれば、Emacsよりもviのキーバインドの方が使いやすいはずだ。viのキーバインドを使用するよう設定するには、bashであれば~/.bashrcを、zshであれば~/.zshrcを編集し、以下の行を追加する。 bashの場合(~/.bashrcを編集): set -o vi zshの場合(~/.zshrcを編集): bindkey -v ~/.bashrcまたは~/.zshrcを保存した後、既存のシェルを終了し、新たなシェルを起動する。 デフォルトでは挿入モードになっているため、通常通りに入力すればよい。しかし、[Ctrl]+Aや[Ctrl]+Eといったコマンドは機能しなくなっている。そして、[ESC]を押下することで(vimと同様に

  • 裏と表のジョブを使い分ける - ザリガニが見ていた...。

    かつて... 今どきのターミナルはタブやウィンドウをいくつでも開けるから、 フォアグラウンドでコマンド実行中に何か別のことがしたくなったら、新たにタブを開いて、そこでコマンドを実行すれば十分用が足りる。 バックグラウンドでコマンドを実行できることも知っているけど、体系的に理解してないのでうっかりミスを繰り返した。 うっかりバックグラウンドで処理していることを忘れていた...。 処理中だと思っていたら停止していた...。 終了したと思っていたら停止していた...。 停止中のプロセスを再開するにはどうする? やっぱり終了したいんだけど、どうすればいいのか? そんなうっかりを繰り返すうちに、見えないバックグラウンドで実行して悩むくらいなら、常に状態が見えるフォアグラウンドにしておいた方が益し。 好きなだけタブを開いてしまえ、という方針になってしまった。 しかし... 何かの補佐で一時的にバックグ

    裏と表のジョブを使い分ける - ザリガニが見ていた...。
    michael-unltd
    michael-unltd 2016/04/13
    "プロセス=OSが管理する実行中のプログラムの単位 ジョブ=シェルが管理する実行中のプログラムの単位 プロセスは、OS環境の中で重複しない番号が割り振られる。どのシェルからも参照可能。 ジョブは、起動したシェル
  • ImportError: No module named six

    I'm trying to build OpenERP project, done with dependencies. It's giving this error now Traceback (most recent call last): File "openerp-client.py", line 105, in <module> File "modules\__init__.pyo", line 23, in <module> File "modules\gui\__init__.pyo", line 22, in <module> File "modules\gui\main.pyo", line 33, in <module> File "rpc.pyo", line 29, in <module> File "common\__init__.pyo", line 22, i

    ImportError: No module named six
    michael-unltd
    michael-unltd 2016/04/09
    brew update -> "ImportError: No module named six.moves"
  • ShellShockの衝撃 -- バグの舞台裏

    原文(投稿日:2014/09/29)へのリンク 現在悪名高い、例のbashのバグCVE-2014-6271 は、後に「ShellShock」として知られるようになった。このバグはコードのリモート実行を許可してしまうもので、直接的または間接的にbashスクリプトを実行しているサーバに対し、巧妙に作成されたデータをネットワーク越しに送信することで起こる。最初のバグは修正されたが、後続の、解析ルーチンに関するゼロデイの懸念は2つ目の脆弱性CVE-2014-7169をもたらした。こちらの脆弱性は公開されてから週末にかけて修正された。しかし、この脆弱性はなぜ起こったのだろうか。また、この手のバグはこれが最後となるのだろうか。FreeBSDやNetBSDは、関数を自動的にインポートする機能をデフォルトで無効にした。将来の脆弱性を防ぐためだ。 問題が発生する理由は、Bashシェルにとある機能( バグでは

    ShellShockの衝撃 -- バグの舞台裏
  • 終了ステータス - UNIX & Linux コマンド・シェルスクリプト リファレンス

    このサイトは近い将来、閉鎖予定です。 引っ越し先はこちら: https://scrapbox.io/shellscript-reference/ 20年以上にわたって運営を続けてきたサイトですが、十分な役割を果たし終えたと考え、このたび幕を閉じることといたしました。 ここでシェルスクリプトを習得された多くの方々の活躍を思うと、運営してきた歳月には、確かな価値があったと確信しております。 これまでご愛読いただき、誠にありがとうございました。 終了ステータス 終了ステータスとは? コマンド終了時には「終了ステータス (exit-status)」と呼ばれるコマンドの成否を表す数値が特殊変数 $? に自動で設定される。 各コマンドにより異なるが、一般的には、 コマンド成功時には「0」 失敗時には「1」(コマンドやエラーの種類によっては 0 以外) が設定される。 → 直前に実行したコマンドの成否

    終了ステータス - UNIX & Linux コマンド・シェルスクリプト リファレンス
    michael-unltd
    michael-unltd 2016/03/10
    “コマンドの成否を表す数値が特殊変数 $? に自動で設定される”
  • 検索ではあんまり出ない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
    michael-unltd
    michael-unltd 2016/03/02
    bashで文法チェック、ステップ実行。
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

    ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、**何もせずに終了ステータス0(つまり正常終了)**を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • http://unicus.jp/skmk/archives/338

  • シェルで変数のインクリメントに expr を使うと100倍遅い件

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

    シェルで変数のインクリメントに expr を使うと100倍遅い件
    michael-unltd
    michael-unltd 2015/11/11
    “Bash では expr の代わりに二重括弧を用いて算術式を評価することができます。評価した値を取り出したいときは二重括弧の前に$をつけて $((...)) とします。”
  • JSONをシェルスクリプトで処理するには?

    Google DriveにCURLでファイルをアップロードすることはできた。 琴線探査: Google DriveにCURLでアップロードするには? 最後の問題は、Google Drive APIやOAuthで返ってきたJSONをどうやってシェルスクリプトで処理するかだ。 そこで、「jsawk」を使わせてもらうことにした。 micha/jsawk · GitHub SpiderMonkeyのインストール jsawkは例の有名なコマンドラインのJavaScript実行環境「SpiderMonkey」が必要なので、まずこれからインストールする。 幸いにも、DAGにパッケージがあった。DAGリポジトリを使えるようにするにはこちら。 琴線探査: さくらのVPSをMond Rescueで丸ごとバックアップしてVMWare Fusionでリストアしてみた [root@xxx ~]# yum insta

  • Shellスクリプトのループで設定した変数が“外側”で参照できない?|ITプロフェッショナル部(システム開発のアイロベックス|東京都新宿区の業務システム開発会社)

    Shellスクリプトは未定義の変数に対してもエラーを出さない処理系なので、この動作がバグ化するとすごく気付きにくい。 実は Shellスクリプトの | (パイプ)処理から先のコマンド(群)はパイプ元とは別プロセスで起動していて、 上記の記述方法では変数を操作するループ内部と外側(初期化の部分と表示の部分)では 全く別の変数を参照していることになってしまうらしいのだ。 # ただ、必ずしもすべての /bin/sh がそういう実装というわけでもないらしく、昔はこうではなかったらしい。 # パフォーマンスを上げるために、別プロセスを起動して直接やり取りをするように途中から shの実態の処理が変わったんじゃなかろうか。 回避策は | (パイプ)ではなく、リダイレクトからファイルを読むようにするのだそうだ。

    michael-unltd
    michael-unltd 2015/11/11
    “回避策は | (パイプ)ではなく、リダイレクトからファイルを読むようにする”