タグ

bashに関するmasayoshinymのブックマーク (57)

  • シェルスクリプトで変数に改行文字を入れる方法の細かすぎる解説 - Qiita

    すべての POSIX シェルで使用可能なので私はこれを推奨します。シェルスクリプトの改行コードは Windows の CR+LF ではなく LF を使用している前提です。いくつかの環境ではシェルスクリプトの改行コードに CR+LF を使用していても動くようなのですが(未調査)、遅かれ早かれ問題になるはずです。また需要は少ないと思いますが、POSIX シェル以前の Bourne シェルでも使える(おそらく)唯一の方法です。Solaris 10 などの古い環境にも対応させるのであればこの方法しかありません。 メリットはコードの量が最も少なく最も速いということです。デメリットは 2 行になるため少し不格好でインデントをする場合に困るだけですが、インデントに関してはこのような定数はスクリプトの上部の関数の外で定義するので通常は問題にならないはずです。 LF=$'\n' bash、ksh、mksh、

    シェルスクリプトで変数に改行文字を入れる方法の細かすぎる解説 - Qiita
  • シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita

    TL; DR 変数をダブルクォートしない使い方は上級者向けの危険な機能です! $@ と $*(または配列の全要素)をダブルクォートしない使い方は知る必要すらありません! ShellCheck を導入すれば誰でも簡単に正しい書き方がわかります!! 2021-08-21 補足 この記事は dash や bash などの POSIX シェルの一般的な動作を解説しており zsh のデフォルトとは異なります。記事の中でも説明していますが zsh の場合はシェルのオプションを変更することで POSIX 準拠の動作に変更することができます。zsh に関しては後半の「zsh に関する注意点」も参照してください。 はじめに プログラミング言語は、言語によって記号の意味が異なることがよくあります。クォーテーションマークはその一つです。C 言語ではシングルクォートは文字リテラル(一文字)を意味し文字列はダブルク

    シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita
  • 【bash】Alt+数字を押すと(arg: 数字) と表示されるのは何? at softelメモ

    問題 bashで Alt+数字を押すと、以下のような状態になるのですが、これは何ですか? [root@dev ~]# (arg: 3) 答え Readline Arguments です。 readline に、数字を渡すと、繰り返し回数として機能したり、マイナスを渡すと逆向きに動作したりします。 例) Alt+3 → a で aaa と入力される。 Alt+100 → BackSpace で一気に100文字削除 Alt+-→ BackSpace でいつもと反対方向の行末削除 Ctrl+k でカーソル位置から行末へ削除 Alt+-→ Ctrl+k でカーソル位置から行頭へ削除

    【bash】Alt+数字を押すと(arg: 数字) と表示されるのは何? at softelメモ
  • チルダ(~)はどうしてホームディレクトリになるのか - Lambdaカクテル

    たまに忘れてコケたり,周りでも困っている人がいるようだったのでメモ. 追記(2020-09-06T11:25+09:00) この記事では仕組みのほうについて記述しており,由来については書いてなかったのですが,ブコメでホームディレクトリがチルダで表記されるようになった由来について幾人かの識者にご指摘いただきました. unix.stackexchange.com ちょうどHOMEキーと同じ場所にチルダキーがあったんですね.ありがとうございました. tl;dr ~/は$HOME/と同義である ~/が$HOME/に,ひいては実際の$HOME/の中身に展開されるのはシェル(e.g. bash, zsh, etc...)の拡張機能 シェルを使わなければその機能は使えないので,手で展開する必要がある シェルを使わない状況: プログラム中からパスをいじるような場合,DockerfileのCMDなど ~--

    チルダ(~)はどうしてホームディレクトリになるのか - Lambdaカクテル
  • One-liners | Basic | Cheat sheet | Linux Command Library

    $ wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

    One-liners | Basic | Cheat sheet | Linux Command Library
  • Windows TerminalとPowerShellでクールなターミナル環境をつくってみた

    // 👀 https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/global-settings { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "theme": "dark", "copyOnSelect": false, "copyFormatting": false, // ダブルクリックでパスを丸ごと選択したいため "wordDelimiters": " ", // 👀 https://docs.microsoft.com/ja-jp/windows/terminal/customize-settings/profi

    Windows TerminalとPowerShellでクールなターミナル環境をつくってみた
  • ShellでSeleniumを作る ~Shellnium~ - Qiita

    はじめに この記事はQiita夏祭り2020のイベントの1つ、パソナテックさんが開催している「〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマで投稿しています。 いやぁ良いお題ですよね。エンジニア心揺さぶられるし、景品も豪華だし、何よりちょっとワクワクしたので参加させていただきました。 今回は「ShellでSeleniumを作る ~Shellnium~」というお題でやっていきます。下記はShellniumで遊んでいるGIFです。 ブラウザの自動操作の模様をiTermの背景として鑑賞することができます。意味不明さがすごいですね。(透明度をいじってるとかではありません) いろんな言語でSeleniumは扱える Seleniumは皆さん御存知の通り、ブラウザの自動操作をするツールですね。 SeleniumはWebDriverを介してブラウザの自動操作を行っていくもので、php,

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

  • Not Found

  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

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

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • ターミナルでの入力の記録と再生、Webでの共有が可能なOSSツール – asciinema

    こんにちは、shoito(しょいと)です。 今回はCloud Native Computing Foundation(CNCF)のサンドボックスプロジェクト、TelepresenceというKubernetesアプリケーションの開発とテストをローカルで行うための支援ツールを紹介しようと思ってましたが、トップページに埋め込まれているasciinemaの方が気になったので紹介します。 Telepresenceは別の機会に。 asciinemaとは https://asciinema.org/ asciinemaはターミナルセッションの記録とWeb上での共有ができるOSSのツールです。 asciinema.orgにはギャラリーも設けられており、他のユーザーが共有しているターミナルの記録が見られます。 asciinemaを試してみた macOS Mojave(10.14.1)環境で試しました。 Ho

    ターミナルでの入力の記録と再生、Webでの共有が可能なOSSツール – asciinema
  • bash

    Linux においての「コマンド」とは、シェルによって実行ファイルが実行されていることを意味します。 たとえば ls コマンドをユーザが入力した際、その入力はシェルにとっての入力でしかありません。シェルはユーザから入力された ls という文字列を「ls という実行ファイルを実行する」と解釈し、カーネルに伝えます。 ls という実行ファイルを実行した結果がシェルによってユーザに伝えられ、あたかもユーザは ls という実行ファイルを直接実行したように感じることができます。 このように「実行したように」というのがユーザインタフェースとしてのシェルの役目です。 しかし、今回はスクリプト言語としての bash をメインに扱うので、この章は軽く流していただいて結構です。 ご存じのように bash はプログラミング言語(シェルスクリプト)のひとつとして動作します。 プログラミング言語として、最低限備わっ

  • bashスクリプティング研修の資料を公開します - エムスリーテックブログ

    こんにちは、エンジニアリングGの中村です。 以前にこのブログにてエムスリーでの社内研修について紹介しました。今回は、この中でのbashスクリプティング講座の資料を公開します。 www.m3tech.blog 弊社の中でもいろいろな用途でbashが使われていますが、bashは簡単に利用できるもののプログラミング言語としてはバグを生みやすい、辛い言語だと思います。 ここで紹介しているのはいわゆるコーディング規則というよりも、バグ防止と可読性向上のためのルールをTips集的にまとめたものです。 bashにおいてまだまだ注意するところはありそうですが、多少なりともわかりにくいスクリプトの削減になればと期待しています。 [追記: 2018-08-22] はてブにて以下のコメントをいただきました。 bashスクリプティング研修の資料を公開します - エムスリーテックブログ bashで50行以上になった

    bashスクリプティング研修の資料を公開します - エムスリーテックブログ
  • 雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog

    κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼

    雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog
  • .bashrc/.zshrcを再読込した際にPATHを余計に追加しないようにする方法

    B! 10 0 0 0 BashやZshで設定ファイルである.bashrcや.zshrcをちょっと変更して 再び読み込む場合、 PATHの値などは基付け加えていく様な設定になってるため、 読み込む度に同じPATHが付け加えられていってやたら長いPATHの値になったりしてしまいます。 そういったことを避けるために最初にちょっと付け加えておく設定について。 .bashrc/.zshrcでのPATHなどの設定 _reset_path PATHを追加する時のもチェックする .bashrc/.zshrcでのPATHなどの設定 .bashrc/.zshrc の中で export PATH=/home/USER/bin:$PATH みたいな設定をして自分用のPATHを追加する事があると思います。 この設定のまま.bashrc/.zshrcを再び読み込むと $ echo $PATH /home/USER

    .bashrc/.zshrcを再読込した際にPATHを余計に追加しないようにする方法
  • Bashアプリケーションをテストする | POSTD

    以前、bashスクリプトをテストする仕事に取り組んだことがあります。最初、Pythonユニットテストを使うことにしましたが、プロジェクトに外部技術を持ち込むのは気が進みませんでした。そこで、仕方なく、悪名高い bash で書かれたテスト用フレームワークを使いました。 既存ソリューションの概要 手に入るソリューションを探してGoogle検索しましたが、選択肢はほんの少ししかありませんでした。そのうちいくつかについて、詳しく見ていきましょう。 重要になるのは、どんな基準でしょうか? 依存関係: bass のテスト用フレームワークを選ぶときに、 python 、 lua などのシステムパッケージも一緒に引きずり込むのは嫌ですね。 インストールの難しさ:継続的な開発の実装とTravis CIでの継続的な統合も仕事の1つだったので、私にとってインストールにかかる時間と手間数が妥当だということは、重要

    Bashアプリケーションをテストする | POSTD
  • bashで実行するコマンドをbash_historyに記録させたくない場合 | 俺的備忘録 〜なんかいろいろ〜

    bashで、オプションにパスワードを指定したりした場合など、実行したコマンドをbash_historyに記録させたくない場合がある。 そういった場合、以下のコマンドを実行(起動時に設定するなら.bashrcなどに追記)してやることで、コマンド実行時に頭に空白がある場合はhistoryにコマンドが残らないよう設定ができる。 export HISTCONTROL=ignorespace # 空白から始まるコマンドをhistoryに記録しない export HISTCONTROL=ignoreboth # 空白のみ+空白から始まるコマンドをhistoryに記録しない 上のコマンド実行後は、historyに記録しないコマンドの先頭にはスペースを入力してやればよい。 □cmd [root@BS-PUB-CENT7-01 ~]# echo 1 1 [root@BS-PUB-CENT7-01 ~]# h

  • sendmail でコマンドからメールを送信する。 - それマグで!

    メール通知のテストに使う。 postfix や exim4 のメールサーバーの設定をしていて、テスト・メールを送信したいときに、手作業でsendmail コマンドを送るのは、ちょっと面倒なのと、どのメールが未到達で、どのメールが到達したか区別するのが大変なのでスクリプト書きました。 サンプルスクリプト。 サンプルスクリプトでは、連番を入れて、どのメールか識別できるようにしてて、日付と時刻をいれてそちらでも識別できるようにしておいた。 send_mail.sample.sh #!/usr/bin/env bash function counter() { if [[ ! -f /tmp/count ]] ; then touch /tmp/count echo 1 > /tmp/count fi num=$(tail -n 1 /tmp/count) echo $(( num+1 )) >

    sendmail でコマンドからメールを送信する。 - それマグで!
  • bashの配列のまとめ(定義・代入・参照と取得・ループ) - それマグで!

    bash も配列を扱える シェルスクリプトで配列を扱えるので 配列を扱ってみる。 今回は、サンプルのために、変数名を大文字にしています。もちろん小文字も使えます。 大文字は、おもに環境変数やスクリプト間やプロセス間で値を渡すときに使うことが多いようです。 配列の定義 配列の定義には基的に2つあります。 bash の配列の定義の例 declare ARR=() declare -a ARR # または arr=() #無精する場合 配列の定義を改行する場合は、文字列でクォートが手っ取り早い。 arr=("a b c ") 配列の削除 定義した配列は削除できます。 unset -v ARR unset -v ARR[@] # または unset -v ARR[*] # または 配列の初期値を指定した宣言 初期値を指定した宣言をすることで明確になります。 ARR=( a b c d e ) 区

    bashの配列のまとめ(定義・代入・参照と取得・ループ) - それマグで!
  • bashでmemcachedを実装しました! - Qiita

    TL;DR bashとsocatコマンドを利用してmemcachedを実装しました。 MakeNowJust/bashcached - GitHub 文 はじめに bashで実装したmemcachedです https://t.co/5UQk8x3wqw — さっき作った@3日目東R-13a (@make_now_just) 2016年10月28日 bashでmemcachedを実装したらHacker Newsでちょっと話題になったみたいなので記事にします。 とりあえずインストール方法 インストール方法です。 まずsocatが必要なので、

    bashでmemcachedを実装しました! - Qiita
    masayoshinym
    masayoshinym 2016/11/07
    ”んなもん、面白そうだったからに決まってます。”あこがれる。