タグ

linuxとshellに関するkirakkingのブックマーク (26)

  • Amber The Programming Language

    Write your scripts in a modern type-safe and runtime-safe programming language that handles many bugs and mistakes during compilation process.

    Amber The Programming Language
    kirakking
    kirakking 2024/05/17
    「let result = $cat file.txt | grep "READY"$」でコマンド呼び出しの結果を格納できるのか。お手軽。failed ブロックで$?>0もキャッチできると。今後に期待。
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    kirakking
    kirakking 2021/11/10
    納得。シェルスクリプトの実行ファイルも単にコマンドを列挙したものだから、このセマンティクスに自然と従うまあ。
  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
  • 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 ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • 世の中のエンジニアのalias設定 - Qiita

    先日、同僚と「世の中のエンジニアはターミナルにどんなalias設定をしているんだろう?」という談義になったので、GitHub上の1000リポジトリのコードから調査してみました。 2019/04/10 コメントを元に微修正しました。コメントくださった方々、ありがとうございます。 2019/04/11 こんなのも書いてみました。 よく使われているvimrcの設定ランキング 2019/04/15 プラグイン版も書きました。よく使われているvimのプラグイン top20 aliasとは wikipediaより UNIXなどにおいてコマンドを別名で登録したもの。別名を登録するコマンド名。 長いコマンドやいつも利用するオプションを毎回入力するのは手間ですよね? ターミナルの設定ファイルにaliasを記述することで、別名として定義することが可能というわけです。 調査方法 GitHub APIを利用 do

    世の中のエンジニアのalias設定 - Qiita
  • fish 3.0がやってきた - Qiita

    とうとうこの時がやってきましたね。 fish 3.0がリリースされました!! すごい。いいぞ。 fish 2.0がリリースされたのが2013年とからしいので、実に5年ぶりのメジャーアップグレードとなります。 fishってなによ the friendly interactive shell です。 カスタマイズなしで高機能な補完が効くなど、とにかくユーザーに優しく便利なシェルです。 とりあえず試す 以下よりどうぞ。 GitHub: https://github.com/fish-shell/fish-shell Ubuntuであれば以下のコマンドでインストールできます。 sudo apt-add-repository ppa:fish-shell/release-3 sudo apt-get update sudo apt-get install fish 注目の変更点など waitコマンド

    fish 3.0がやってきた - Qiita
    kirakking
    kirakking 2018/12/31
    やった。
  • シェルとファイルデスクリプタのお話 - Qiita

    Shell Script Advent Calendar 2016が始まりました。1日目は私です。好きなシェルはBashです。 はじめに ファイルデスクリプタを知ることで、よりスマートにシェルを記述でき、シェル芸の幅も広がります。この記事はシェルとファイルデスクリプタの理解を深めることを目的としており、対象は次のような人です。 パイプ・リダイレクトをうまく使えない人 2>&1 の置き場所にいつも迷う人、そもそも2>&1が何って人? シェルの作業で中間ファイルを作成している人 ファイルデスクリプタとは ファイルデスクリプタ (FD) とは、プロセスが入出力するファイルやデバイスを扱うためのインターフェイスです。これはUNIX系OSのデバイスとファイルは透過的に扱えることと関係し、任意のファイルもデバイスも同じAPIで操作できます。 FDは扱うデバイス・ファイルごとに番号が振られ、プログラムは

    シェルとファイルデスクリプタのお話 - Qiita
  • 検索ではあんまり出ないbashの便利技 - Qiita

    bashでは記号類をたくさん使うので、この書き方は何?と思っても検索でなかなか出てこないことがあると思う。 そこで知っていると便利なコマンドを残しておく。 随時追記予定。 確認に使用したbashのバージョンは以下のとおり。

    検索ではあんまり出ないbashの便利技 - Qiita
    kirakking
    kirakking 2015/09/21
    最後の二つ知らなんだ > !$ == ^[. ; !:n == n番目の引数(マイナス可) ; !xxx == 最後のxxxで始まるコマンド
  • シェルスクリプト入門 書き方のまとめ | Memo on the Web

    シェルスクリプト入門として, 基的な書き方をまとめました. 長いですが, 1ページにまとめてみました. 良かったら目次も参考にしてご覧になって下さい. 目次 シェルスクリプトとは 作り方, 実行の仕方 コメント ユーザーからのキーボード入力を受け付ける 変数 通常の変数 特別な変数 演算子 数値計算演算子 比較演算子 コマンドを繋げる演算子 条件文に使える比較演算子 条件文 制御構文(分岐) if文 case文 制御構文(ループ) for文 while文 until文 select文 文字列処理 文字列置換 削除 複数行のテキストの出力(ヒアドキュメント) 関数 シェルスクリプトとは シェルスクリプトとは, シェルの動作をまとめて記述したスクリプトのことです. 決められた文法にしたがって処理を記述することによって, シェルでの処理をまとめて行ったり, 作業を自動化できたりします(例 複数

    kirakking
    kirakking 2014/08/26
    置換と複数行コメントを初めて知った。置換は Bash っぽい。
  • うっかりnohup無しで長時間かかるコマンドを実行したときに後から終了しないようにする - Glide Note

    いつまで経っても終わらないから帰れない… 途中で終了してしまうと困るので、ログアウトしても終了しないように。 作業の流れ Ctrl+Zでコマンドの中断 bgでバックグラウンドに回す jobsでジョブの確認 disownでログアウトしても実行されるようにする 実際のコマンドだと

  • Unixコマンド生活実践 &mdash; ありえるえりあ

    ディレクトリ操作 lsの使うオプション ...-l,-a,-F,-i # ディレクトリをすべて消す場合(先頭の\は後述) \rm -rf ディレクトリ名 # 全部コピー cp -ar srcdir destdir ...-aはGNU lsのオプション # cp -aがどこまで信用できるか不明、あるいはGNU lsがない時に、使うテクニック tar cf - srcdir | (cd /destdir; tar xf -) ファイル操作(リンク) ハードリンク vs. シンボリックリンク ln #ハードリンク ...異なるファイル名で同一のi-nodeを共有(ls -iで確認可能) ln -s #シンボリックリンク ...ポインタ 注意点 ハードリンクは対称(ln a bでもファイルaとbに主従関係はない) i-nodeはデバイス(dfで見えるディスクデバイス)で一意なので、デバイスを越えて

    kirakking
    kirakking 2014/03/10
    tacって全然知らなかった。まだまだ謎の領域があるもんだ。
  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
    kirakking
    kirakking 2014/02/12
    非常に初歩的だけどawk "{print $1}"でハマった。"で囲んだら変数が展開されてしまう。
  • UNIXの達人によるセックス:Geekなぺーじ

    パターン1 #!/bin/sh unzip; strip; touch; grep; finger; mount; fsck; more; yes; umount; sleep; パターン2 who | grep -i blondie | talk; cd~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep パターン3 gawk; talk; nice; date; wine; grep; touch; unzip; strip; touch; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; make mrproper

    kirakking
    kirakking 2014/01/16
    コメント欄のpasswdが一番直球だった。
  • 正規表現メモ

    \x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni

  • なるべく書かないawkの使い方 - ザリガニが見ていた...。

    awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基動作 awkの基動作は、とってもシンプルである。

    なるべく書かないawkの使い方 - ザリガニが見ていた...。
  • 【 tr 】 文字を一括変換する

    ファイル内の文字を一括変換する。たとえば,大文字を小文字に変換すると行ったことが行える。記述方法は「tr 変換対象の文字 変換文字 対象ファイル」のようにする。また,変換対象の文字と変換文字には表に示した文字クラスを利用できる。

    【 tr 】 文字を一括変換する
  • 第5回 zshの誇る花形機能“補完” | gihyo.jp

    今回はzshの誇る機能の花形とも言える補完機能について紹介しよう。zshの補完は強大で、例示した設定の意味を略さず書こうとするとそれだけでになってしまう(約150ページ分)ので、細かい意味は読者の推測にまかせて、少し変えて便利にカスタマイズする場合のヒントを交えながら解説を進めたい。 補完の有効化 初期化ファイル、あるいはコマンドラインで、以下を入力することでzshのすぐれた補完機能が有効化される。 autoload -U compinit && compinit 補完に関するキー割り当てはいくつもあるが、最低限うまく利用するために以下の2つのキーバインドをまず覚えておけばよいだろう。 Tab (C-i) - expand-or-complete 補完の実行。 ESC C-d (または行末のみ C-d) - list-choices (delete-char-or-list) マッチする

    第5回 zshの誇る花形機能“補完” | gihyo.jp
    kirakking
    kirakking 2013/12/02
    vi text'Tab'で、vi text.texとかtext.txtとかテキストファイルに自動で絞り込んでほしい。
  • timeout - 時間制限付きでコマンドを実行する

    timeout - 時間制限付きでコマンドを実行する こんなコマンドがあったのね。$ man timeout名前 timeout - 時間制限付きでコマンドを実行する書式 timeout [OPTION] DURATION COMMAND [ARG]... timeout [OPTION]説明 COMMAND を開始し、DURATION 経過後も実行中の場合は終了させます。 ... DURATION は浮動小数点数で指定し、追加で次の接尾辞を指定できます: 秒を表す 's' (デフォルト)、分を表す 'm'、時間を表す 'h'、日を表す 'd'。一定時間経過したら処理を自動で終わらせたい時に便利です。 【参考】 ・cron でうごかしているコマンドをタイムアウトさせる - tokuhirom's blog. ・Man page of TIMEOUT

    timeout - 時間制限付きでコマンドを実行する
    kirakking
    kirakking 2013/11/25
    timelimitとの違いはオプション。timeout 20 a.out <=> timelimit -t20 (-T0は冗長) 。
  • @brignano

    Experienced full stack developer with a demonstrated history of hard work in the industry. Function as the go-to technical leader for the software applications supported, requiring depth and breadth of knowledge in technologies, applications, integration, interfaces and business domain. Ensure operational excellence. Independently drive the triaging and service restoration of all high impact incid

    kirakking
    kirakking 2013/11/11
    SDXC UHS-Iでrsyncできないのはそんなことじゃないかと思っていたけど、やっぱりそうだったか。ただ僕の環境Ubuntu 13.10では-oをつけても通ることは通る。
  • ワードサラダを作ってみよう

    mecabっていう日語構文解析プログラムがあります。 今日は、それを使って「日語を自動解析して用語を抜き出し、コピペ文を自動生成するスクリプト」の作り方を学習します。 必要なもの・root権限で動かせるlinux/unixなマシン。 ターミナルで動作します。面倒くさいGUIなんか作りません。シェルスクリプト万歳! ・yumかapt mecabをインストールするのに必要になります。 レポジトリとかは知らんけど、yum install mecabとかapt-get install mecabとかしてmecabを入れてください。 1. mecabを使って日語から固有名詞っぽいものを抜き出す1行シェルスクリプト。超簡単です。コピペでも動く多分。 これをmecab_extract.shって名前で保存して実行属性を付けよう。 #! /bin/bash cat /dev/stdin |mecab|

    ワードサラダを作ってみよう
    kirakking
    kirakking 2013/10/24
    いたずらに使えそうだ。