2018年7月29日日曜日

bashならできる変数内文字列置換

2018 Jul. 29.

${変数名/置換前文字列/置換後文字列}
  最初に一致した部分のみを置き換える。

${変数名/置換前文字列//置換後文字列}
  すべての一致部分を置き換える。

bash 文字列の末尾の削除

2018 Jul. 29.

bashでの文字列Strの末尾の削除
echo ${Str/%?/}

2018年7月28日土曜日

grub2の起動ディスクMGRへのインストール

2018 Jul. 28.

/と/bootが同じパーティションの場合

    #  grub-install  /dev/HDD

/と/bootが異なるパーティションの場合

    #  grub-install --root-directory=/  /dev/HDD

ubuntu系でのビデオカードと利用ドライバの調べ方

2018 Jul. 28.

ビデオカード

$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:0d.0 ==
modalias : pci:v000010DEd000003D0sv00001028sd0000020Ebc03sc00i00
vendor   : NVIDIA Corporation
model    : C61 [GeForce 6150SE nForce 430] (Inspiron 531)
driver   : nvidia-304 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

 ドライバ

$ lshw -c video 2>&1 | grep driver
       設定: driver=nouveau latency=0

NFSクライアント設定

2018 Jul. 28.

xubuntu18.04, xubuntu16.04


portmap をインストールし、再起動する
    # apt-get install portmap nfs-common
    # shutdown -r now

/etc/fstab へ書き込む
    HOST:/DIR  /CLIENT-DIR  nfs  rw,noatime,intr,hard  0  0

2018年7月21日土曜日

シェルスクリプト 文字列から先頭の1文字を削除した上で、直前が\もしくは"ではない"までを最短一致で削除する

2018 Jul. 21.

bash上で、文字列Lineから先頭の1文字を削除した上で、直前が\もしくは"ではない"までを最短一致で削除する

LeftLine=${Line:1:$(( ${#Line} - 1 ))}  # 先頭文字削除
DelStr=$(echo $LeftLine | grep -oP -e '^.*?[^\\"]"[^"]')  # 最短一致削除文字列取得
DelStr=${DelStr/%?/}  # 余分に取得した末尾文字を削除
DelStr=$(echo $DelStr | sed -e 's/\\/\\\\/g')  # \を\でエスケープし\\に
echo $LeftLine | sed -e s/${DelStr}//  # 削除実行

${parameter/pattern/string}
パターンの置換。 pattern が展開され、 パス名展開の場合と同じようなパターンを作ります。 parameter の展開が行われ、 その値のうち pattern に最長一致する部分が string に置換されます。 pattern が / で始まる場合には、pattern に マッチした部分は全て string に置換されます。 そうでない場合には、最初にマッチした部分だけが置換されます。 pattern が # で始まる場合には、パターンは parameter を展開した値の先頭にマッチしなければなりません。 pattern が % で始まる場合には、パターンは parameter を展開した値の末尾にマッチしなければなりません。 string が空の場合には pattern にマッチした部分は削除されます。 またこの場合には、pattern の後に続く / は省略可能です。 parameter が @ または * である場合、置換操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。 parameter が @ または * が添字になっている配列変数である場合、 置換操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。

シェルスクリプト 文字列から直前に\(バックスラッシュ)が無い"(二重引用符)までを削除する

2018 Jul. 21.

Srch=$(echo $Line | grep -oP '^.*?\\".*?[^\\]"' | sed -e 's/\\/\\\\/g')
echo $Line | sed -e s/${Srch}//

「直前に\(バックスラッシュ)が無い"(二重引用符)まで」の検索
  原形 ^.*?\".*?[^\]"
  grepに使う時 '^.*?\\".*?[^\\]"'
  sedに使う時 '^.*?\\".*?[^\\]"'

sedの検索文字列内での\(バックスラッシュ)
  '(シングルクォーテーション)で囲むと
    シェルではそのまま読み込まれて
    sedにおいて\(バックスラッシュ)が状況に応じてエスケープ文字に解釈される

  '(シングルクォーテーション)で囲まないと
    シェルで読み込まれる時に\が状況に応じてエスケープ文字に解釈され
    sedにおいても\が状況に応じてエスケープ文字に解釈される
    \をたくさん書く必要がある