プラグインされたUSBドライブを自動的に検出する必要があります。マウントされていないUSBドライブを、指定されたデバイス名デフォルトではWindowsマシンで発生します)、すべてのデバイスのマウントポイントのルートを取得します。デバイスは/ media/piのフォルダにマウントする必要があります(piは自分のユーザー名です)。正規表現を使用してgrep出力からフルパスを抽出する方法
をすべてマウンタデバイスのパスを取得するには:これは私がやっているものです
1)を実行しlsblk
、出力:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 14.4G 0 disk
└─sda1 8:1 1 14.4G 0 part /media/pi/D0B46928B4691270
sdb 8:16 1 14.3G 0 disk
└─sdb1 8:17 1 14.3G 0 part /media/pi/MI PENDRIVE
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 41.8M 0 part /boot
└─mmcblk0p2 179:2 0 14.8G 0 part/
2)私はフィルタリングすることができ、特に細工ラインと
私はlsblk | grep 'sd' | grep 'media'
を実行して出力します:
└─sda1 8:1 1 14.4G 0 part /media/pi/D0B46928B4691270
└─sdb1 8:17 1 14.3G 0 part /media/pi/MI PENDRIVE
をいくつかの不要な情報アウト
/media/pi/D0B46928B4691270
と/media/pi/MI PENDRIVE
を取得する必要があります。現在、私はこれをやっています:
しかし、スペースがないパスでのみ動作し、grepの出力はもちろん配列ではありません。正規表現でこれを行うにはどうすればよいでしょうか?
ありがとうございました。
まず最初に、echo "$ f"は何をしますか?私はあなたの端末でそれがlsblkと同じことをしているのを見ていますが、私はそれがどうして起こったのか分かりません。 2番目に、lsblk | grep -o '/media/.*$' <<< "$ f"となり、何も出力されませんでした。しかし、私はあなたが必要とする結果を得ることを見ています。それぞれのパスは別の行にあり、他のものとは隔離されています。あなたはそれをどのようにスクリプトに入れますか? ありがとう! – user3290570
彼はテキストを変数に入れ、grepコマンドでそれを使用しました。なぜ '<<<'を使うのかわからないのですか '<'がなぜ動いていないのですか – Mohamed
@ user3290570私のシステムでは、 'lsblk'は完全に異なる出力を生成しますので、lsblkの出力を変数' f'あなたのシステムに似た結果でテストを行うことができます。あなたの場合、 'lsblk | grep -o '/ media /.*$' 'を実行するか、結果を配列に入れるには' IFS = $ '\ n' drives =($(lsblk | grep -o '/ media /。* $ ')) ' –