Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

zshに関するn2sのブックマーク (242)

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

  • 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を無視してオリジナルのコマンドを使う方法
  • シェルスクリプトでの関数の書き方について

    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)

    シェルスクリプトでの関数の書き方について
  • 【Zsh】aliasのaliasが書きたい - Qiita

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

    【Zsh】aliasのaliasが書きたい - Qiita
    n2s
    n2s 2017/12/03
  • zshの標準エラー出力の色を赤くする - プログラムモグモグ

    [追記]以下の方法は良くないようです。必ず、このエントリー最後の「stderredを使う」を参照してください[/追記] 最近stderrを赤くするように設定したら、コマンドの出力がかなり見やすくなりました。 設定はこんな感じに書いてます。 zmodload zsh/terminfo zsh/system color_stderr() { while sysread std_err_color; do syswrite -o 2 "${fg_bold[red]}${std_err_color}${terminfo[sgr0]}" done } exec 2> >(color_stderr) fg_bold[red] のところを fg[red] とかbg_bold[red] とかするとスタイルを変更できます。 古いzshでは動かないらしいので、古い環境も気にしたい場合は is-at-least

    zshの標準エラー出力の色を赤くする - プログラムモグモグ
    n2s
    n2s 2017/11/25
  • 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
  • zsh で非同期処理 - Qiita

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

    zsh で非同期処理 - Qiita
    n2s
    n2s 2017/11/08
  • zsh の起動を500%高速化した話 - Qiita

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

    zsh の起動を500%高速化した話 - Qiita
    n2s
    n2s 2017/10/29
  • 開発効率向上 tips vol.1 -ターミナル・シェル編- - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me 最近弊社でも大学生のエンジニアインターンが増えてきて,彼らの成長のために,開発にあたっての知見を効率的に共有する手段を色々と模索している.こういった知見は再利用性も高く,社内に閉じている必要もまったくないので,こうしてブログに書き溜めていくことにしてみようかと思う.第一弾として,端末エミュレータ上でのオペレーションの効率化について記す. ソフトウェアの開発をやっていると,なんだかんだで端末エミュレータというインタフェースの上で,シェルを使ってオペレーションを行うことが多い.開発に用いるマシンの OS はたいてい macOSLinux の何かしらのディストリビューション (Ubuntu が多いか?) だし,プロダクション環境での運用は Linux を前提することが多いだろう.また,Docker の普及により,Li

    開発効率向上 tips vol.1 -ターミナル・シェル編- - ryota-ka's blog
    n2s
    n2s 2017/10/12
  • 初心者向け:Zshの導入 - Qiita

    注意 macOS Catalina から、Mac は zsh をデフォルトのログインシェルおよびインタラクティブシェルとして使うようになりました。 https://support.apple.com/ja-jp/HT208050 なので macOS Catalina 以降をご使用の方は、zsh を導入する必要はありません。 概要 エンジニアとして働くと、ターミナルやiTerm2でシェルを毎日使います。 最初はMac標準のbashを使っていたのですが、zshが良いと聞き、乗り換えてみました。 使い始めてから、6ヶ月以上経過していますが、今のところ便利さで使い続けています。 zshの導入と、それに付随してoh-my-zshの導入を紹介します。 便利さ 見やすいプロンプト ・zsh + oh-my-zshを導入すれば、このような見やすいプロンプトがすぐに使えるようになります。 ・個人的に、ブラン

    初心者向け:Zshの導入 - Qiita
    n2s
    n2s 2017/09/11
  • zsh 5.2以降のオプション GLOB_STAR_SHORT(**.cで**/*.cと同じ展開をさせる) - Qiita

    autoload -Uz is-at-least is-at-least 5.2 && setopt glob_star_short # **.c で **/*.c と同じ展開をする GLOB_STAR_SHORT When this option is set and the default zsh-style globbing is in effect, the pattern `**/*' can be abbreviated to `**' and the pattern `***/*' can be abbreviated to ***. Hence `**.c' finds a file ending in .c in any subdirectory, and `***.c' does the same while also following symbolic links.

    zsh 5.2以降のオプション GLOB_STAR_SHORT(**.cで**/*.cと同じ展開をさせる) - Qiita
    n2s
    n2s 2017/09/11
  • 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
  • zshのパス設定の順序の問題 - Qiita

    というふうにpathという配列でスマートに設定できる。 ところで、上の設定は標準のパス設定よりも優先してanyenvのパスを通してある。 したがって、これを経由してインストールしたrbenvやruby、またはgemのパスを最優先したいという意図である。 これまでこのパスを通す設定を.zshrcに記述していた。 駆け出しの頃oh-my-zshをインストールしたらパスの設定を自動的に.zshrcに書き出してくれたから良かれと思っていた。 しかしインタラクティブシェルでしか.zshrcは読み込まれないため、そうでない場合は時折不便だった。 使用するコマンドに対してフルパスで指定するなどしていた(移植性は高い)が、冗長になるのが悩みだった。 そこでパスを通す設定を全ての場合に読み込まれる.zshenvに記述することにした。 問題 だが問題は起こった。 これまでと読み込まれるパスの順序が変わったのだ

    zshのパス設定の順序の問題 - Qiita
    n2s
    n2s 2017/07/21
  • zshrcを分割する時のベターなファイル名を知りたい。 - Qiita

    n2s
    n2s 2017/06/20
  • 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
  • 2年間使っていたbashからzshに移行した - Qiita

    今回、2年間使っていたbashからzshに乗り換えたので、備忘録的に記事にしようと思います。 背景 僕は、普段iOSの開発をメインにやっているので、Xcodeに駐在しつつ、GitKrakenでソースを管理しています。ほとんどターミナルには遊びに行きません。 かといって、まったくターミナルを使わないかと言われるとそうでもなく、Cocoa関係のパッケージマネージャーで使用しているCarthageを使うために、 ターミナルに$carthage updateを叩きに行きますし、依存ライブラリを列挙するCartfileはVimで書くことが多いです。 ただ最近、プロジェクトが増えてきたのに伴ってだんだんbashに不満を持つようになってきました。 コマンド補完だしてよ〜とか、cdを何回も使うの面倒臭いよ〜とか... 幸い、僕の通っている大学にはzshはいいぞおじさんがたくさんいるので、 これを機会にzs

    2年間使っていたbashからzshに移行した - Qiita
    n2s
    n2s 2017/03/25
  • zsh, Linux FHS ( MyMemo ) - Qiita

    n2s
    n2s 2017/02/01