タグ

shellに関するmas-higaのブックマーク (65)

  • 【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita

    はじめに もう文字列の置換で sed コマンド使うの禁止して良いんじゃないですかね? 言いすぎだとわかってあえて言っていますが。 悪い書き方(外部コマンドに頼る方法) # 変数 line に入ってる文字列を echo コマンドで出力して sed コマンドに渡し、 # sed の s コマンドで "from" を "to" に置換して出力したものを ret 変数で受け取る ret=$(echo "$line" | sed "s/from/to/")

    【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita
    mas-higa
    mas-higa 2023/09/04
    なんでこんなに怒っているんだろう。怒っている人の話を聞くのはつかれる。
  • シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita

    はじめに bash などのシェルには [ ... ] と [[ ... ]] の二種類の比較方法があります。一つはコマンド、もう一つはシェルの文法なのですが、具体的にはこの二つは一体何が違うのでしょうか? そもそもなぜ似ている機能が二つもあるのでしょうか? この記事は言語設計者の気持ちになって考えることで、その理由を解き明かそうという記事です。 なお、違いについての簡単な説明については「test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 」の記事がよくまとめられていますので紹介します。一通りの違いを素早く知りたい方はこちらを参照してください。 参考 シェルの歴史や種類については「シェルの歴史 総まとめ(種類と系統図)と POSIX の役割」に詳しくまとめています(系統図とか頑張って書いたので見

    シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

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

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    mas-higa
    mas-higa 2021/11/11
     prefix  redirect  CXX=clang++ make set -k      

    shell
     
  • Bash Scriptの作法 - Qiita

    はじめに チーム開発でシェルスクリプト(特にBash Script)を書く際に守るべきルールをまとめます。 シェルスクリプトのコードレビューをする際等にお役立てください。 スクリプト名 -区切りの小文字英数字(いわゆるkebab-case)をつける。拡張子は.sh. これは特に理由があるわけではないので_区切りでもよいし、チーム内にzshやfish等の他Shell愛好家がいる場合は拡張子は.bashでも良い。どちらにせよチーム内では統一しておかないと混乱の元となる。 改行コード LFを使用する。CRLFだと動作しないので書く際に間違うことはないが、Windows上のgitのautocrlf設定によってはご丁寧にCRLFでチェックアウトされてしまう。 避けるためにはgit config --global core.autocrlf inputとするか、.gitattributesをレポジトリ

    Bash Scriptの作法 - Qiita
    mas-higa
    mas-higa 2021/09/27
    ./doit.sh -h は、したいな。
  • macOS 10.15 Catalinaではbashに代わりzshがデフォルトシェルに。

    macOS 10.15 Catalinaではbashに代わりzshがデフォルトシェルになるそうです。詳細は以下から。 Appleは現地時間2019年06月03日、iTunesをMusicPodcasts、TVアプリに分け、iPadApple Pencil対応のセカンドディスプレイとして利用できるSidecar機能を搭載した「macOS 10.15 Catalina」を発表しましたが、このCatalinaではデフォルトシェルがbashからzsh(Z shell)へ変更されるそうです。 Starting with the macOS Catalina beta, your Mac uses zsh as the default login shell and interactive shell. You can make zsh the default in earlier version

    macOS 10.15 Catalinaではbashに代わりzshがデフォルトシェルに。
    mas-higa
    mas-higa 2019/06/05
    でも bash そのものはインストールされている?
  • Amazon.co.jp: 難読化シェル芸の世界 ~Bashとすてきな難読化~ (プレミアムブックス版): kanata: 本

    Amazon.co.jp: 難読化シェル芸の世界 ~Bashとすてきな難読化~ (プレミアムブックス版): kanata: 本
    mas-higa
    mas-higa 2019/04/05
    何も考えずに書けば、たいてい難読化されてる。
  • ネットワーク越しでパイプしたり、あらゆるデバイス間でデータ転送したい! - Qiita


     Mac, Windows, Linux, iPhoneAndroid SlackLineSkypeAirDrop 使 GUI AirDropAppleOS GUI使 使CUI    
    ネットワーク越しでパイプしたり、あらゆるデバイス間でデータ転送したい! - Qiita
    mas-higa
    mas-higa 2019/02/07
    それ ssh で…
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

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

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
    mas-higa
    mas-higa 2018/12/12
    “Bash の世界に必要な秩序をもたらす” 傲慢だなぁ / wildcard を展開するのは呼び出す側の仕事でしょ
  • プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita

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

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita
    mas-higa
    mas-higa 2018/07/17
    普段から shell を使ってワンライナー書くか、C言語で getopt(3) 使わずに argv 読むプログラム書けば自然と理解できる話なんだけどな
  • bash の設定ファイル読み込み仕様 - 彷徨えるフジワラ

    ログインシェルが bash に設定されている環境で、SSH 経由でログインなしのコマンド実行 (= 非対話的実行) を行うために、ユーザ独自の設定 (環境変数の変更/追加等) を設定ファイルに記述する際の注意点を、最初にまとめておきます。 SSH 経由でのコマンド実行に必要な追加設定は ~/.bashrc に記述する ~/.bashrc への記述追加の際には: [ -z "$PS1" ] && return のような、「非対話的実行時には、以降の設定評価を中断」する記述の有無を確認し 記述がある場合は、それよりも前の行で追加設定を記述する 「非対話的実行」の判定は、上記以外の方法でも可能です。必ずしも上記と同一の記述で対処しているとは限りませんから、注意してください(エントリ末尾でも、- パラメータを使った判定方法を例示しています)。 以下は、bash の設定ファイル読み込みの詳細に関す

    bash の設定ファイル読み込み仕様 - 彷徨えるフジワラ
    mas-higa
    mas-higa 2017/08/16
    対話的か否かは test -t 0 とかで判定してた
  • シェルスクリプトの罠を避ける三つの tips


    Unix  tips  ()  Shebang bash  Bash 使 Bashism Bashism  Bash  Bash  /bin/sh 使 Bashism  /bin/sh 
    シェルスクリプトの罠を避ける三つの tips
    mas-higa
    mas-higa 2017/07/26
    && true だと??
  • 標準入力を1行ずつ配列変数に入れるまとめ - Qiita

    bashで標準入力を1行ずつ配列変数に入れるのって、なんか色々気にすることが多くて面倒くさいから一つの関数にまとめてみた。 (こんな変態関数作るほうが余程めんどくさいって?うんその通りだと思うわ。でも知見を得たら頭整理の為にも一度書き残しておかないとすぐ忘れるし、もうそういう性なので仕方ない。) こんな関数を作って # 標準入力を指定の変数名に1行1値の配列として読み込む関数 read2arr() { [[ $1 =~ ^[a-zA-Z][a-zA-Z0-9_]*$ ]] || return 1 local IFS= eval "local $1_" eval "$1=()" eval "while read -r $1_ || [[ -n \$$1_ ]]; do $1+=(\"\$$1_\"); done" } $ # 関数を読み込んでおく $ . read2arr.sh $ # テス

    標準入力を1行ずつ配列変数に入れるまとめ - Qiita
  • シェルスクリプト Tips | UNIX & Linux コマンド・シェルスクリプト リファレンス

    シェルスクリプト Tips コーディング・スタイル ここに書かれている内容は、あくまで筆者の好みでありほぼ完全に主観ではあるが、経験的に行き着いたスタイルでもあるので推奨します。 スクリプトのヘッダを作成する 最近はあまり使用されることもないのかもしれないが @(#) の記述と、スクリプトの使用方法、および概要をファイルの前方にコメントとして記述しておくようにする。 ※ @(#) は what コマンドで参照する情報を記述するための記号です。詳細は「whatコマンドについて」を参照。 #!/bin/bash # # @(#) hoge.sh ver.1.0.0 2008.04.24 # # Usage: # hoge.sh param1 param2 # param1 - パラメータ1です. # param2 - パラメータ2です. # # Description: # hoge.shスク

    シェルスクリプト Tips | UNIX & Linux コマンド・シェルスクリプト リファレンス
    mas-higa
    mas-higa 2017/05/11
    "パイプ処理があるため、横に長くなりやすい" パイプの後で改行しても継続行になるんやで。
  • シェルスクリプトの set -e は罠いっぱい

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

    シェルスクリプトの set -e は罠いっぱい
    mas-higa
    mas-higa 2017/04/28
    -e 付けたことないな。grep も diff もスクリプトで使うときは結果見るもんちゃうの?
  • シェルスクリプトの書き方


    12TwitterPOSIX3 調 ?SunOS4, Solaris, HP-UX, IBM AIX, FreeBSD, OpenBSD, Linux
    mas-higa
    mas-higa 2017/01/13
    UPS 方面の考え方を参照せよ...でだいたい片付きそう。UPS も関数書くなとか言ってたので、そこは同意できないが。
  • プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita

    記事が切っ掛けとなってお声がけを頂き、記事の増補リファイン版となる記事をSoftwareDesign 2018年1月号のシェルスクリプト特集第2章として執筆しました。リファイン版には、この記事で触れていない文法面での分かりにくさについての解説が含まれています。その文法面での分かりにくさの解説の一部に相当する記事もありますので、ぜひそちらも併せてご覧下さい。 Shell Script Advent Calendarをご覧の皆様、図々しくも5日目に続く2度目のエントリーのPiroです。 前回は自作のBashスクリプト製Twitterクライアントをネタに実装を解説しましたが、今日は他の言語で多少のプログラミング経験はあるんだけど、どうにもシェルスクリプトは苦手だ……という人のための、シェルスクリプトによるプログラミングの勘所を解説してみようと思います。多分、プログラミング入門レベルの人や上級

    プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita
    mas-higa
    mas-higa 2016/12/27
    この行指向になじみすぎて Ruby の /$/ と /\Z/ の違いに戸惑ったりした
  • コマンドラインツールを書くなら知っておきたい Bash の 予約済み Exit Code - Qiita


    Exit Code 1, 2, 126165, 255 exit Exit Code 127 "command not found" exit1使Exit Code 1  Bash Exit Code /usr/include/sysexits.hC C++ 
    コマンドラインツールを書くなら知っておきたい Bash の 予約済み Exit Code - Qiita
    mas-higa
    mas-higa 2016/09/27
    「Bashの...」って、そんなん bash の都合なんて知らんがな。
  • 失恋編 第5回 例外処理を覚えて彼女からのメッセージを復号する


     RubyRuby beginrescue 使 1
    失恋編 第5回 例外処理を覚えて彼女からのメッセージを復号する
    mas-higa
    mas-higa 2016/01/06
    command || エラー処理 って書けよ
  • Bashのよくある間違い | Yakst


    2015822  Thanks for GreyCat! Bash 使使Bourne 1. for i in $(ls *.mp3) BASH: f
    Bashのよくある間違い | Yakst
  • spark: シェルスクリプトで棒グラフ表示

    B! 251 0 0 0 GitHubで面白そうなシェルスクリプトを探してる時に見つけた Spark by holman について。 数値を棒グラフ上に表示してくれるスクリプトです。 Spark 使用例 Spark Spark は数値群を引数に与えるか標準入力で与えてあげると その数値群を棒グラフに変換してくれるシェルスクリプトです。 インストールはGitHubのレポジトリ から直接sparkというスクリプトファイルを取ってきてPATHの通った所に入れるか、 MacであればHomebrewで $ brew install spark でsparkコマンドが使えるようになります。 使い方は非常にシンプルで $ spark 0 20 40 60 80 100 ▁▂▃▅▆█ こんな感じで数値を与えるとそれを棒グラフにしてくれます。 インプットに使える数字は少数も使えますが、 実際に使われる際には

    spark: シェルスクリプトで棒グラフ表示
    mas-higa
    mas-higa 2015/05/21
    解像度が低いのが逆にいい