Content-Length: 344256 | pFad | https://b.hatena.ne.jp/n2s/shell/

[B! shell] n2sのブックマーク

タグ

shellに関するn2sのブックマーク (97)

  • 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.

  • sh の組み込みコマンド read は遅い

    2020.3.29 00:11 バッファサイズと shcat の来の意図に関して文末に追記 まとまった文章を書く機会が減ってしまって、これではいかんと久しぶりに更新。 大学院に入った 19 年前。担当していた大学院生から研究室の計算機環境の管理を引き継いだ。動機は単純で、Unix 系 OS の管理に興味があったからだった。研究室では過去の管理者が構築したメールサーバが引き継がれていて、詳しいひとはすでにいなくなっていた。Unix 系 OS はデスクトップ用途で使われておらず、学生はほぼ全員、当時現役だった管理者が Windows NT で構築したファイルサーバと数台の Windows クライアントマシンを使っていた。 Windows の環境に問題があるわけではなかったが、クライアントマシンは台数が少なく、取り合いになっていた。ネットワークも共有フォルダがあるだけで、認証やホームディレクト

    n2s
    n2s 2020/03/28
  • 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 ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • Batsh - Bash/Batchのスクリプトを生成するプログラミング言語 MOONGIFT

    システムの自動化を行う際によく使われるのがBashスクリプトになるでしょう。また、WindowsであればBatchファイルが使われます。macOSLinuxは同じBashスクリプトでも良さそうですが、Windows向けに別な言語で作るのは面倒です。 そこで使ってみたいのがBatshです。共通のスクリプトでBashスクリプトとBatchファイルを生成します。 Batshの使い方 デモ。文字列の定義や簡単な計算処理。右側に生成されているのはBashスクリプトです。 同じコードからBatchを生成します。 コマンドの実行。Bashスクリプト。 こちらはBatch。 ループ処理。 Batch。構文がかなり違います。 ファイルの一覧を操作する場合。 Batchだと全く異なる構文で出ているのが分かります。 BatshとBashは近い構文で出ていますが、Batchは全く違う場合もあるのが分かります。標

    Batsh - Bash/Batchのスクリプトを生成するプログラミング言語 MOONGIFT
  • sourceコマンドを誤って使ってしまいゾッとした話 - Qiita

    ってやってしまった。 ぎゃぁぁあああああああーーーーーーーー!!!!!!!! と叫んでも遅し、、、処理が走ってしまい止められなくなってしまいました。 処理の途中に 「公開鍵を上書きするかどうか?」とか出てきて、 n として回避した後、今は無くなっているレポジトリから git clone しようとしたところで、アカウント確認のために処理が止まり、そこで、 Ctrl + c で強制終了できました。 解説 source コマンドは、ファイルに書かれたコマンドを現在のシェルで実行するコマンドです よって、私がミスして実行してしまった処理の内容は、 .zsh_history にファイルに書かれたコマンドが1行ずつ実行する。という内容になります。 .zsh_history には私が過去に打ったコマンドがすべて記録されているため、つまり、それらのコマンドが順に実行されていくということになってしまいます。

    sourceコマンドを誤って使ってしまいゾッとした話 - Qiita
  • 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を無視してオリジナルのコマンドを使う方法
  • GNU grepであいまいな文字列(1文字違いor1文字ずれている文字列)の検索をさせる | 俺的備忘録 〜なんかいろいろ〜

    Typoしたものが大半なのだけど、指定した文字列とN文字違ったり、1文字ずれている(「あいうえお」→「いあうえお」みたいな)文字列をヒットさせたいということがごくごくたま~にあって、それをgrepでときどきやっている。 個人のマシンではfunctionを作ってあるのだけど、たま~にリモートマシンで使うとき(+ローカルのrcファイルを読み込ませてない時)なんかにはその場でコマンドを組み合わせたりしているので、備忘で残しておく。 1文字違う文字列をgrepする 指定した文字列から1文字違う文字列をgrepする場合、以下のようにする。 echo 検索対象文字列 | grep -f <(echo 検索文字列 | grep -o . | awk '{a=$0=a$0}END{for(i=1;i<=NR;i++){print gensub(/./,".",i)}}') blacknon@BS-PUB-

    n2s
    n2s 2019/01/08
  • シェルのhistoryをクラウドに保存する取り組み - hitode909の日記

    ある日zshの履歴が消えた悲しみからいくつか課題感を持っていた。 巨大な1ファイルにどんどん書いていくので、壊れたときの影響が大きい 追記方式なので、複数の端末で共有するためGitやDropboxなどに入れるとコンフリクトしやすい 履歴から取り出すときにどのディレクトリで実行したコマンドなのかわからない シェル履歴をファイルに書いて終わりという暮らしは数十年変わっていない。 履歴はクラウドサーバーに保存して、補完したいときにAPI経由で問い合わせるというアーキテクチャが良いと思ったので、作ってみた。 github.com コマンドの実行時 zshのフックを使って、コマンドの実行時に、実行したコマンドと$pwdをAPIにPOSTする Cloud Functionsが立っていて、送られたコマンドをCloud Datastoreに保存する Cloud FunctionsはGoogle製のAWS

    シェルのhistoryをクラウドに保存する取り組み - hitode909の日記
    n2s
    n2s 2018/11/16
    なんぞこれ、予想以上に大掛かりや…
  • プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita

    普通のプログラミング言語での開発に慣れた人ほどシェルスクリプト、特にBashで戸惑う部分の一つに、i = 0のように空白を開ければエラーになるし、かといってif[$i!=0]のように詰めてもやっぱりエラーになる、という点が挙げられます。書きたい物を思うように書けなくて「なんだよこのクソ言語は!!!」とブチギレる人は少なくないのではないでしょうか。この記事では、そのイライラを解消するポイントをお伝えしようと思います。 以下、特に断り無く「シェルスクリプト」と書いている場合はすべて「Bashのスクリプト」という意味になります。zsh等他のシェルではまた事情が異なりますので、ご注意ください。 (※以前プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話という記事を書いたのですが、この記事は、その増補リファイン版として執筆させて頂いたSoftwareDesign 2

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita
    n2s
    n2s 2018/07/16
  • シェルスクリプトのテストフレームワーク Bats を試してみた - kakakakakku blog

    シェルスクリプトのテストフレームワーク Bats を試してみた. github.com たまにコントリビュートをしている Amazon ECS (Elastic Container Service) のデプロイツール ecs-deploy のテストコードで Bats が使われているので,少し書いたことがあり,もっと詳しく調べてみようと思った. github.com Bats は現在もメンテナンスされている もともとの Bats は sstephenson/bats にあり,現在は bats-core/bats-core に移っている.以下の Issue などを読むと,コミュニティの動きがわかる. github.com github.com インストール Bats は様々なインストール方法がある.まず,用意されている install.sh を試してみた. $ git clone git@gi

    シェルスクリプトのテストフレームワーク Bats を試してみた - kakakakakku blog
    n2s
    n2s 2018/05/14
  • linux/ubuntuだと一括リネームが楽 - Qiita

    n2s
    n2s 2018/03/04
    renameコマンドの説明文「sed式の正規表現で置換する」に何かを察しざるを得ない
  • シェルスクリプトでの関数の書き方について

    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)

    シェルスクリプトでの関数の書き方について
  • fzf(fuzzy finder)の便利な使い方をREADME, Wikiを読んで学ぶ - もた日記

    fzf インストール アップデート 使い方:基 動作確認 絞り込み画面での操作 絞り込み画面の表示変更 絞り込み画面での検索パターン キーバインド オートコンプリート 環境変数 使い方:応用 fzf-tmux オートコンプリート(プロセス、ホスト名、環境変数) --ansi, --nth, --with-nthと性能 外部プログラム実行 プレビューウィンドウ 色変更 Wikiに書いてあった使用例 プレビューにツリー表示 --select-1, --exit-0 フルコマンドプレビュー fe, fkill Vim連携 fzf github.com fzf(fuzzy finder)はコマンドラインであいまい検索ができるツール(類似ツールとしてはpercol, peco, selecta, pick, pmenuなどがある)。ファイル名やコマンド履歴などをインタラクティブに絞り込んでいくこと

    fzf(fuzzy finder)の便利な使い方をREADME, Wikiを読んで学ぶ - もた日記
    n2s
    n2s 2017/11/03
  • 雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog

    κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼

    雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog
  • 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
  • シェルスクリプトにおける [ と [[ - 理系学生日記

    シェルスクリプトで条件分岐を書くとき、[ を使ったり [[ を使ったりすることになると思います。 POSIX の test にも記載がありあすが、[ は test と同じ機能を持つことになっており、同じ実装であることも多いです (ただし、[ として実行されるか、test として実行されるかに依って挙動が変わり得る)。 一方で、[[ は POSIX で定義はされていない、Bash 等の高機能シェルでの拡張になります。 [ と [[ は、当然ながら同じような機能を持っています。そりゃ、後者は前者の拡張ですからね。一方で、「拡張」であるが故に、[ と [[ で異なる挙動も存在します。 演算子 たとえば比較の演算としては以下のような挙動のちがいがあったりします。なお、[ への有無については、POSIX 定義という観点であって、シェル実装によっては普通に使えるものもあります。 機能 [ [[ 備考

    シェルスクリプトにおける [ と [[ - 理系学生日記
    n2s
    n2s 2017/07/24
  • BASHシェルスクリプトで「キー入力待ち」プロンプトを実装する | DevelopersIO

    BASHシェルスクリプト実行中に、 例えば下記のように表示させたい場面はよくあります。 実行しますか? (y or N): ここで人間が「y(あるいはYes)」と入力しないと先に進まない、問題があればNと入力して終了したり、CTRL+Cで強制終了させたり。 そんなプロンプト機能を実装してみます。 先にネタばらしをすると、全部readコマンドがやってくれます。 例1 : 「Hit enter key!」 単に実行を一時停止して、問題がなければエンター(リターン)キーを押すことで先に進むようなシェルスクリプトは、このようになります。 #!/bin/bash : (前段階の処理) read -p "Hit enter: " (続きの処理) : 単に「Hit enter: 」と表示して処理が一時停止します。エンター(リターン)キーを押せば先に進みます。 もし前段階の処理で何かしら問題が見つかれば、

    BASHシェルスクリプトで「キー入力待ち」プロンプトを実装する | DevelopersIO
    n2s
    n2s 2017/06/28
  • shellでTTL付きのキャッシュをしたい - Qiita

    こんな感じ sleep 3 ; echoの結果を最大5秒間キャッシュしている様子。 キャッシュの実装 実装はこのあたりに置いてある。 TTL付きのキャッシュを実装するにあたり、シェルで実現するならファイルに保存しておいて、作成日時はそのファイルのメタ情報を利用すれば楽。 また、やろうと思えば更新日時と作成日時がどちらも取れるので、細かいTTLの実装も可能。 stat -c %Yコマンドで指定したファイルの最終更新日時のepoch秒を取得できる。 それと現在時刻を比べて指定した時間より経過していたら...という処理を書くことでTTLを実装する。 statを使ってファイルの有効期限判定するには以下のようにする。 $ touch -d '1day ago' hoge.txt $ [ $(( $(date +%s) - $(stat -c %Y hoge.txt) )) -gt $((60 * 6

    shellでTTL付きのキャッシュをしたい - Qiita
  • シェルスクリプトの set -e は罠いっぱい

    ふみやす@元シェルまおう(自称でない) @satoh_fumiyasu Perl では最初に use strict; use warnings すべきなように、シェルでは set -u すべき。「例外処理って何? おいしいの?」って人は set -e もしておけ。 2012-06-25 18:25:20 ふみやす@元シェルまおう(自称でない) @satoh_fumiyasu シェルスクリプトをまともに書けない奴は、それでも書かなければならないときは、とりあえず変数展開するとき必ずダブルクォートで括れよ。$foo じゃなくて "$foo” な。あと最初に set -u; set -e でもしておきな。シェルスクリプトが駄目なんじゃなくて、書けないだけ。 2012-12-22 00:27:38

    シェルスクリプトの set -e は罠いっぱい








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://b.hatena.ne.jp/n2s/shell/

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy