BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

シェルスクリプトの文字列でファイルパスをラップする必要がある理由

ひどいについてのスレッドに出くわしました プログラミングの間違いとこれを見つけました:

https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commit/a047be85247755cdbe0acce6f1dafc8beb84f2ac

次の行が含まれています:

rm -rf /foo-bar-usr /lib/nvidia-current/xorg/xorg

注–foo-bar-を追加しました 文字列を実行しようとしても、警告されていることを実行しないようにします。クリップボードにそれがあると、緊張します!

実行するとどうなりますか? / usr /全体を消去します ディレクトリ–基本的にコンピュータをブリックします! すべて単一のスペースのため

/ usrの後のスペースのため 、 rm コマンドは、それを1つのタイプミスしたパスではなく、削除する2つの別個のディレクトリとして解釈します。

そのパスが引用符で囲まれて単一のパラメーターとして渡された場合、これは発生しませんでした。

ほとんどのコマンドラインの例では、スクリプトの意味がわかりにくくなったり、読みにくくなったりする可能性があるため、これは行われません。ただし、コマンドラインで直接ステートメントを実行するのではなくスクリプトを記述している場合、特に誤ってスペースをタップする可能性のあるユーザー入力を受け入れています(決して ユーザーを信頼する) 、予防策としてファイルパスをラップする価値があります。

データを失いたくないし、他人のデータを失いたくないのは間違いない。

そしていつものように–ファイルとシステムを定期的にバックアップしてください!このような間違いがいつすり抜けるかはわかりません。間違いではないかもしれません。


  1. シェルスクリプトでループするまで使用する方法

    bashでfor 、ながら 、およびまで 3つのループ構造です。各ループは構文的にも機能的にも異なりますが、その目的は、特定の式が評価されるときにコードのブロックを反復処理することです。 まで ループは、式がfalseと評価されるまで、コードのブロックを実行するために使用されます。これは、whileループの正反対です。 whileループは、式がtrueであり、までの間、コードブロックを実行します。 ループは逆になります。 until [ expression ]do code block ... ...done 構文を分解してみましょう。 ループを開始するには、キーワードの後に​​1つま

  2. iPhone の名前を変更する方法 (および変更すべき理由)

    新しい iPhone には、デフォルトで本名を含む名前が付いています。 Apple ID に仮名を使用しない限り、または iPhone の設定時に本名が iPhone の名前にも表示されます。 iPhone の名前を変更する方法は次のとおりです。 このチュートリアルでは、iPhone に接続されている Bluetooth アクセサリの名前を変更する方法についても説明します。ディスプレイが正しく動作しない場合でも、iPhone の名前を変更する方法を紹介します。 iPhone の名前を変更すべき理由 iPhone のデフォルト名には本名が含まれているため、AirDrop によってプライバシ