タグ

bashに関するnntsuguのブックマーク (9)

  • Bash: わかるとほんのちょっとうれしくなること5選 - Qiita

    Bash の勉強を始めた頃、頭がごちゃごちゃになって調べたこと、わかるとほんのちょっとうれしくなったことを5個ピックアップしてみました。 - 目次 - alias sudo='sudo ' と alias sudo='sudo -E ' bash -c /dev/null grep -rl xargs で任意の位置に引数を展開する - 説明 - 1. alias sudo='sudo ' alias コマンドを使うと、長いコマンドを別名で登録できて、とても便利です。 でもそのまま sudo と組み合わせると、エラーになります。 例えば、la という登録名で、ls -a を実行させると、 sudo la でエラーになります。 bash のマニュアルには、以下のように書かれています。 alias [-p] [name[=value] ...] value の末尾に空白があると、エイリアスが展開

    Bash: わかるとほんのちょっとうれしくなること5選 - Qiita
  • bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換 - それマグで!

    bash のbrace 展開で文字列を置換する 文字の置換は、bashはとても楽ちんである。 NAME=www.example.com echo ${NAME//./_} # www_example.com echo ${NAME//./_} # www_example_com これをもう少し掘り下げる。 bash でファイル名から拡張子を取出す方法 ファイル名から拡張子を取出すのはカンタンでした。 path=/etc/apache2/httpd.conf extension=${path##*.} #=> conf 魔法の記述方法 ${varname##*.} を使うと 手軽に拡張子を取得できる。 拡張子を書き換える方法 拡張子を書き換えるには、変数の書き換えを使えば直ぐ出来る。 f_name=httpd.conf txt_name=${f_name/.*/.txt} #=> httpd

    bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換 - それマグで!
    nntsugu
    nntsugu 2022/07/14
    basename dirname
  • なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記

    会社の中でシェルスクリプトについての話をすることにしたので、このエントリはそのためのものです。 個人的な好みとかもいろいろ入ってしまっているので、そのあたりは取捨選択してください。 なぜ今シェルスクリプトを学ぶのか 公開されているSREをマルっとPDF化する SpotBugsのViolationレポートをMerge Requestのコメント投稿する ぼくの互換性についての考え方 何で書くか シェルスクリプトをうまく書くには ShellCheckを使う バッドパターンとその修正 line-by-lineの処理が多い lsを使う ls /directory | grep mystring ls | grep -v 'log$' lsの結果をループさせる 良いシェルスクリプトを書くためのTIPS set -euする 文字列は基的にクオートする 局所変数にはlocalを使う 定数は読み取り専用

    なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記
  • bashの組込みコマンド自作によるスクリプトの高速化

    はじめに bashには次の2つの理由によって、組み込みコマンド(builtin command)というものが存在します。 スクリプトの高速化のため。組み込みコマンドであれば通常のコマンドを実行する場合に比べてプロセスの生成コスト(fork()/exec())が削減できる bash自身の状態を変更させるため。例えばcdコマンドを/bin/cdとして用意してbashから当該コマンドを実行しても、当該コマンドのpwdが変更されるだけで、bashのそれは変更されないため、意味がない 今回は前者に焦点を合わせて、その効果と、組み込みコマンドの自作方法について述べます。 予備知識: 組込みコマンドによるスクリプト高速化の効果 組込みコマンドそのものの存在、及びその存在意義について既にご存知のかたは、この節を飛ばしてもらって構いません。 例えば皆さんがbashスクリプトからechoコマンドを実行した場合

    bashの組込みコマンド自作によるスクリプトの高速化
    nntsugu
    nntsugu 2020/09/28
    組み込みコマンド自作
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • BASHの脆弱性でCGIスクリプトにアレさせてみました

    環境変数に仕込まれたコードを実行してしまうBASHの脆弱性が CGIスクリプトに影響を与えるか試してみたら結果は悲惨な感じに Tweet 2014年9月25日 嶋田大貴 この記事は2014年のものです 朝から Bash specially-crafted environment variables code injection attack なるもので騒ぎになっていたので、さっそく手元の Apacheで試してみました。 /hoge.cgiというURIで実行されるように、一行のメッセージを出力するだけの CGIスクリプトを設置します。いっけん、なんの入力もクライアント側から受け付けていないため危険のありようもなく見えます。 #!/bin/sh echo "Content-type: text/plain" echo echo "Hi! I'm an ordinary CGI script w

    BASHの脆弱性でCGIスクリプトにアレさせてみました
  • 【試さないで】危険シェル芸【違法(脱法)シェル芸を勧められたり、 身近な人が持っていたりしませんか?】

    脱法シェル芸でマシンがトリップする案件が増加したため、名称を危険シェル芸に変更したら、変更後に危険シェル芸を試してさらにトぶ人間が増加。 それで・・・あのー宣伝で申し訳ないんですが・・・「シェルスクリプト高速開発手法入門」も・・・お願いします・・・ http://www.amazon.co.jp/dp/B00LBPGFJS

    【試さないで】危険シェル芸【違法(脱法)シェル芸を勧められたり、 身近な人が持っていたりしませんか?】
  • Bashで二重起動防止 - Qiita

    いちいちlockファイル置いたりしてexitしたらゴミが残ったり、シビアなタイミングだとファイル作る前に2つ目が起動しちゃったりするのはナンセンス。 お手軽かつ比較的正確にやるなら、pgrepで既に同じシェルが起動していないか調べれば良い。

    Bashで二重起動防止 - Qiita
    nntsugu
    nntsugu 2014/08/07
    すばらC
  • for文

    for文の構文を以下に示す. for 変数 in 値(複数可) do 文(複数可) done for文では変数名に値を代入しdoとdoneに囲まれた文を実行する.doneまで来ると,次の値を変数に代入してまたdoとdoneに囲まれた文を実行する.以下に例を示す. for x in a b c d e f g do echo $x seq以下はecho $aを5回繰り返す. for a in 1 2 3 4 5 do echo $a done 今が5回だが,繰り返し回数がもっと多くなると泣きたくなる.そういうときにはseqコマンドを使用する. for a in $(seq 1 5) do echo $a done 上の例では$(seq 1 5)が展開されてシェルには1 2 3 4 5が渡される.したがって,シェルが受け取るのは二つ上の例と同じである.

    nntsugu
    nntsugu 2011/12/14
    読みやすい
  • 1