[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

tipsとshellに関するa2ikmのブックマーク (78)

  • bashでdotenvファイルを環境変数に読み出す | おそらくはそれさえも平凡な日々

    .env みたいな環境変数設定ファイルを読み込んでから指定プログラムをexecするみたいなラッパーが欲しくなる事あると思います。 Goだとgithub.com/joho/godotenvとかあるけど、Goでやるほどでもないよねーという感じだったので、bashで書くなどした。 #!/bin/bash set -e if [[ "$#" = "0" ]]; then echo "usage: env-wrap.sh cmd [args...]" >&2 exit 1 fi # declare -x を引数無しで呼び出して、現状の環境変数をexportableな形式で書き出す orig_env="$(declare -x)" envfile=.env # allexportは`KEY=VALUE`をシェル変数じゃなくて、環境変数としてexportする危険なオプション set -o allexpo

    bashでdotenvファイルを環境変数に読み出す | おそらくはそれさえも平凡な日々
  • BASHで__FILE__や__DIR__みたいなもの | デバッグライフ

    シェルスクリプト(BASH限定ですが)、他の言語でもよく見られる__FILE__や__DIR__みたいなことをするにはどのようにすれば良いか、と考えてみた結果以下のようになった。小生のシェルスクリプトスキルが高くないので何ともだが上手く動いているようだ。もっと良いやり方があるかもしれない。クロスシェル対応できたらと思ったが、他のシェルスクリプトのスキルがほぼないので今後の課題とする。。 set -ue __FILE__() { resolve_link "${BASH_SOURCE[1]}" } __DIR__() { dirname "$(resolve_link "${BASH_SOURCE[1]}")" # 間違い 9/30 修正 } resolve_link() { local filepath="$1" local filename ( while [ "$filepath" !

    BASHで__FILE__や__DIR__みたいなもの | デバッグライフ
  • dateコマンドで前月を計算する時の注意(前月に基準日の日付がない場合) - カタカタブログ

    dateコマンドで日付計算するときに、「1ヶ月前」「1日後」といった構文は便利なのでよく使うのだが、今回この「1ヶ月前」指定をなんとなく使っていて、まずい動きをすることがあったのでメモ。 どういうときにまずいかというと、「日付を比較する基準日が前月のカレンダー上にない場合」の挙動である。例えば、3月31日の前月は、2月31日ということになるが、この日付はカレンダー上存在しないため、結果はなんと3月3日になってしまう。(2月28日 + 3日という計算ロジックなのだろう。。) 具体的に実行結果を見てみる。 まず、普通に実行すると、以下のように正しく1ヶ月前を取得することができる。 $ date +'%Y-%m-%d' 2015-07-30 $ date -d '1 month ago' +'%Y-%m-%d' 2015-06-30次に、3月31日の1ヶ月前を取得してみる。 $ date -d

    dateコマンドで前月を計算する時の注意(前月に基準日の日付がない場合) - カタカタブログ
  • grep, awk, sed でバッファしない方法 | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、TechscoreBlogのログ閲覧が日課になっている河野です。 ログをtailでリアルタイムに見ているときに、grep, awk, sedと組み合わせることがあります。ところが、特にオプションを指定しないと、各コマンドでバッファされてしまうので、ログの表示が遅延することがあります。単にアクセス状況を眺めているだけなら問題ありませんが、チューニングしてる時とか気になりますよね。 そんなわけで、今回はバッファさせない方法を紹介します。 grep : --line-buffered grepでのオプションです。正確にはバッファさせないのではなくて、1行毎に出力するというオプションです。 tail -f logfile | grep --line-buffered -vE '\.(css|js|ico|png|gif|jpe?g)'

  • sortコマンド、基本と応用とワナ - Qiita

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

    sortコマンド、基本と応用とワナ - Qiita
    a2ikm
    a2ikm 2017/08/28
    -kは同じフィールドを2回指定する必要がある。-k 3,3
  • 実行したコマンドの終了コードを表示する - Qiita

    のようにして確認したりする。 けれど、たまにecho $?を打つのを忘れて次のコマンドを打ってしまったり、 コマンド → echo $?を繰り返してhistoryが埋め尽くされてしまうことも。 なので、環境変数の PROMPT_COMMAND を使ってコマンドを打つたびに自動で戻り値を表示するようにしてみた。 bashのmanページに書いてある。 PROMPT_COMMAND 設定されていると、プライマリプロンプトを出す前に毎回、この値がコマンドとして実行されます。 /etc/bashrcか~/.bashrcに、以下のような記述を追加する。 追加する場所は、ファイルの最後のほうが良いっすね。 PROMPT_COMMANDにはコマンドが登録済みなので、それらより先にこの関数を呼ぶようにする(そうじゃないと意味ないので)。 ${PROMPT_COMMAND//__show_status;/}と

    実行したコマンドの終了コードを表示する - Qiita
  • エラー監視時(set -e)の汎用トラップコード(trap) - Qiita

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

    エラー監視時(set -e)の汎用トラップコード(trap) - Qiita
  • watch_vmstat.sh

  • pipeの途中でエラーが起きたタイミングでエラーを返す - There's an echo in my head

    パイプを繋げたときの返り値は最後のコマンドの返り値になる。 例えば stat = system "a | b |c" としたとき、途中でaやbがエラーになっても返り値statはfalseにならずcの返り値であるtrueになる。 cがエラーに成った時にはfalseになる。*1 これだとパイプの途中でエラーが起きた場合に捕捉できない。 そういうときはbashの-o pipefailオプションを使う。*2 これを指定するとパイプの途中でエラーが起こった時にはそのときの返り値が、なにも起きなければ最後のcの返り値が全体の返り値が返ってくるようになる。 さらに-eを付けておくことでエラーが起きたタイミングで終了するようになる。 stat = system %{bash -e -o pipefail -c "a | b | c"} 参考 Get exit status of process that'

    pipeの途中でエラーが起きたタイミングでエラーを返す - There's an echo in my head
  • module Shellwords (Ruby 3.3 リファレンスマニュアル)

    [edit] 要約 UNIX Bourne シェルの単語分割規則に従った文字列分割と文字列エスケープを行うモジュールです。 Shellwords モジュールは、空白区切りの単語分割を行う shellsplit、文字列をエスケープする shellescape、文字列エスケープを文字列リストに対して適用する shelljoin の3つのモジュール関数を提供します。 これらのメソッドの別名として、Shellwords.split, Shellwords.escape, Shellwords.join も使用可能です。ただし、これらの短縮形式のメソッドはクラスメソッドとしてのみ定義されるため、関数形式の呼び出しはできません。 目次 特異メソッド escape join split モジュール関数 shellescape shelljoin shellsplit shellwords 特異メソッド

    a2ikm
    a2ikm 2015/07/01
    ハッシュを環境変数っぽくしてくれるやつが欲しいな
  • bashのTips色々 - Qiita

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

    bashのTips色々 - Qiita
    a2ikm
    a2ikm 2015/06/30
    記号系は検索しにくいのでまとめて載ってるのはありがたい
  • Less interrupting in less

    a2ikm
    a2ikm 2015/04/09
    lessの行計算が擾わしい件、LESS="--line-numbers"を設定しておけばよい
  • 複数の連続スペースをまとめる: kuma雑記

    複数の連続したスペースを1つにまとめる tr -s " " ls -lでファイルサイズとファイル名だけをcutするときなんか便利 ls -l |tr -s " "|cut -f5,9 -d" " とか

    a2ikm
    a2ikm 2015/04/09
    echo "foo bar" | tr -s " " でいける。sedだとなんかうまくいかなかった
  • 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
    a2ikm
    a2ikm 2014/11/17
    `true > hoge`
  • chmodやchownのreferenceオプションを知った時は目から鱗だった話

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 元々ホスティング会社で働いていたので、その特性上ownerやpermissionを色々と弄る事が多く、数年前の社会人時代にchmodやchownをもっと楽に使えないかなぁと調べた時に目から鱗だったのがchmodやchownのreferenceオプションでした。 今回は単にreferenceオプション楽ですよね、という記事なのでご存知の方は退屈な記事だと思いますが、まわりに聞いてみた所意外と知られていなかったりしたので、ブログエントリにしておこうと思います。 referenceオプションを使うと、任意のファイルを指定することで、変更対象のownerやpermissionを指定したファイルと同じ設定にすることができます。 例えば、/bin/pin

    chmodやchownのreferenceオプションを知った時は目から鱗だった話
  • zshのキーバインドで余っているキーを探す - mollifier delta blog

    初めに zsh最強シェル入門を買ってから、zshのカスタマイズにはまっています。今日はコマンドライン編集のキーバインドをいい感じにしようとしていました。 で、色々やってたけど、キーがぜんぜん足りません。 何か使いやすいキーに割り当てようとしても、たいていのキーはデフォルトで使われています。そこで、「何にも割り当てがないし、押しやすいキー」(いい子)と「押しやすいくせにほとんど使っていないキー」(わるい子)を探すことにしました。 デフォルト設定を調べる 使いやすいキーバインドと言えば、「Ctrl+なんちゃら」。ということで、デフォルトのキーバインドのうちC-*という形式のやつを調べました。 % bindkey -d # デフォルト設定に戻す % bindkey -e # emacsモードを使う % bindkey # 今設定されているすべてのキーバインドを表示する "^@" set-mark

    zshのキーバインドで余っているキーを探す - mollifier delta blog
  • ワンライナーWebサーバを集めてみた - Qiita

    ワンライナーWebサーバを集めてみた クライアントサイドのJavaScriptをいじっていて,不意にローカルファイルでは実行できない領域に踏み込んでしまうことがあると思います.最近では,HTTPSが必須であったり,HTTP2を使ってみたくなることもあります.とりあえず私が踏み込んでしまったのはWebWorkersですが,他にもWebRTCや・・・(思い出し中)・・・(見つからなかった)・・・などが該当します. そんな時にいちいちApacheやnginxを立ち上げるのも面倒なので,ちょっと検索した結果を残しておきます. [2018/4/18追記] 最近ではHTTPSを使用する必要が高まっています.これを受け,HTTPSに対応する方法が増えてきたので,全て網羅できませんが,可能な限り追記・変更を行いました. PythonSimpleHTTPServer)編 Pythonでは(バージョン2.4

    ワンライナーWebサーバを集めてみた - Qiita
  • lsコマンドでファイルのタイムスタンプを統一し、秒も表示する方法 - OKWAVE

    お世話になります。 lsコマンドの使用方法で質問があります。 例えば日(2008年11月24日) ls -al コマンドでファイルのタイムスタンプを確認すると 最終更新日時が「2008年11月23日22時41分08秒」のように6ヶ月以内のファイルは 11月23 22:41 と表示されますが、 最終更新日時が「2007年01月06日18時05分04秒」のように6ヶ月以上昔のファイルは 1月 6 2007 と表示されます。 最終更新日時がいつであっても常に 2007/01/06 18:05:04 のように固定の YYYY/MM/DD HH:MM:SS 形式(秒も出力し、ゼロサプレスも行わない形式)で表示したいのですが その方法がわからずに困っています。 (ログファイルとかで秒が表示されるとうれしいです。) 御存知の方、よろしくお願いします。

    lsコマンドでファイルのタイムスタンプを統一し、秒も表示する方法 - OKWAVE
    a2ikm
    a2ikm 2013/12/28
    --time-style=+%c便利
  • xargs -P が激しく便利なのでメモ - おともだちティータイム

    xargs の -P オプションを使うとプロセスを複数起動して処理を並列に行なうことが出来る。 例 例えば、 1 万枚の JPEG 画像を全て 800x800 に収まるように効率良くリサイズしたい。 まず私はこのようなコマンドを考えた。 convert --geometry 800x800 *.jpg しかし zsh に怒られた。 zsh: argument list too long: convert 引数が全て展開されるためこのような事が起きる。 私は xargs を使って処理することを思い付いた。 ls | xargs -I{} convert --geometry 800x800 {} c_{} 処理は行なわれるが非常に遅い。 しかも CPU を全く使っていないことが分かり、私は処理を並列的に行なう事を考えた。 そこで xargs の -P オプションの出番である。 P の後に並列

    xargs -P が激しく便利なのでメモ - おともだちティータイム
  • findのexecが便利 - マツモブログ

    あるディレクトリ配下の全ての.svn達を消し去ろうとしてたんですが、わざわざスクリプト書くのも何だかなぁ。と思っていたらfindに-execというオプションが有るのをはずかしながら初めて知りました。 マニュアル -exec command ; command を実行する。コマンドの戻り値が 0 ならば真。 find のコマンドラインで指定されたこれ以降の引き数は、 `;' を含む引き数にいたるまで、すべてcommand の引き数とみなされる。 文字列 `{}' は現在処理しているファイル名に置き換えられる。 これは command 引き数のどこにあってもよく、単独で置かれていなくてもよい (単独で置かれていなければならないような find もある)。 これらの文字はシェルによって展開されないよう、 `\' によってエスケープするか引用符で囲む必要がある。 コマンドは find を実行したデ

    findのexecが便利 - マツモブログ