お知らせ

現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
投稿日:
OS::Linux::コマンドソフトウェア::Bash

シェルスクリプトが設置されているパスを取得する

  • cwd=$(cd $(dirname $0); pwd)
    • $0はシェルスクリプトのフルパス
    • dirnameでスラッシュから始まるファイル名を除去
    • cdで移動
    • pwdで表示

現在のパスを移動せずにシェルスクリプト内でパスを移動する

これはサブシェルを使うと出来る
サブシェルとは()で囲まれた部分で、この中では別のシェルが動いている
例えば次のスクリプトはfoo/に移動し中のファイルリストを表示するが、2行目では現在の位置にあるファイルリストを表示するため移動していない
コマンド展開記法$()もサブシェルが動いている

(cd foo/; ls -la)
ls -la

複数コマンドをワンライナーで実行する

;

  • 以下のように書くと連続で線形実行される。手前が異常終了しても続く
    • curl; echo 2;

&

コマンドの末尾に&をつけるとバックグラウンドで実行される

  • 以下の例では左がバックグラウンド、右がフォアグラウンドで実行される
    • echo 1 & echo 2

&&

AndAlso的な動きをする

  • 以下のように書くと連続で線形実行される。手前が異常終了すると続かない
    • curl && echo 2

|

コマンドの末尾に|をつけると標準出力が次にリダイレクトされる

  • 以下のように書くと連続で線形実行される。手前の標準出力が次にリダイレクトされる
    • echo 1 | xargs -I{} echo {}2

||

OrElse的な動きをする

  • 以下のように書くと連続で線形実行される。手前が異常終了した場合のみ次が動く
    • curl || echo 1
投稿日:
ソフトウェア::GPG

使い方の簡単な参考

確認環境

Windowsで確認しているが、 Linuxでも多分同じ

Env Ver
gpg (GnuPG) 2.2.27

基本の使い方

  • 鍵の一覧を確認する
    • gpg --list-keys
    • --with-keygripをつけるとKeyGrip(鍵の識別子?)も見れる
  • 鍵を編集する
    • gpg --edit-key <Name>
    • <Name>は鍵の名前か鍵IDを指定できる
    • --expertをつけると高度な編集が可能になる
    • 対話シェルが起動するのでhelpを叩いてやりたい操作をする
    • 副鍵に対する操作は事前にkey <ID>を指定する必要がある
      • 無指定でdelkeyとかするとエラーになる
  • 鍵をインポートする
    • gpg --import <key-file>
投稿日:
ソフトウェア::zsh

確認環境

Env Ver
zsh zsh 5.8 (x86_64-pc-msys)

サンプルコード

例として.zshrcに書くものとする(別に分割しても構わない)

  1. setopt PROMPT_SUBSTする
    1. この設定によりパラメータ展開、コマンド置換、および算術展開がプロンプトで実行される
  2. 展開したい関数をシングルクォートで囲み文字列結合する
    1. 注意点
      1. 変数に代入している場合評価されない
      2. 関数はシングルクォートで囲まないと評価されない
# baz は echo が入った関数
PROMPT "foobar"'$(baz)'
# 以下の 2 つは期待通り動作しない
PROMPT "foobar"$(baz)
PROMPT $(baz)

具体的にはref('SomeReference').once('value')の結果を取得する

確認環境

Env Ver
Chrome 91.0.4472.77
Firebase SDK 8.6.2

サンプルコード

top level awaitが使える

// apps[]から使いたいのを取る
const dbInstance = firebase.apps[0]
// DB参照を取る
const dbRef = firebase.database(dbInstance)
// 読み取る場合、書き込みは.set()とかする
(await dbRef.ref('/foo/bar').once('value')).val()