centos 7スクリプトでPATHを変数として保存する

centos 7スクリプトでPATHを変数として保存する

ユーザーがfindコマンドを介してこの変数を使用するために特定のファイルパスを入力できるスクリプトを作成したいと思います。

これを試しましたが、構文が間違っているようです。

enter file path : $PATH
find $PATH -size +1M  -exec rm {}\;

find $userpath -size $size -exec rm {}\;使用する必要がある寸法などをユーザーに入力させるにはどうすればよいですか?

答え1

を使用する必要がありますread

echo Enter file path:
read userpath
find $userpath -size +1M  -exec rm {}\;

また、安全のために使用することをお勧めしますrm -i

答え2

うーん、あなたの質問を間違って読んだようです。したがって、入力を読み取るにはBash組み込みコマンドを使用できますread(出力を参照help read)。

別の名前を指定しない限り、出力が自動的に名前付き(シェル!)変数に入るカスタムreadプロンプトを使用できます。-pREPLY

read -p "enter file path : "
find "$REPLY" -size +1M  -exec rm {} +

注: 私\;+しなければならない呼び出し回数が減りますfindが、携帯性が低下する可能性があります。


この変数はPATH特別な意味を持ち、あらかじめ入力されています。これがどのような殻であるかは明らかではありませんが、基本的な規則は私が知っているすべての殻に同じです。環境PATH変数は、実行可能ファイル(バイナリ、スクリプト...)を含むフォルダを見つけるために使用されます。その後、フルパスまたは相対パスを指定せずにこれらのファイルを実行できます。

確認してくださいこの文書もっと学ぶ。引用:

$PATH/usr/bin/通常、などのバイナリファイルパスです/usr/X11R6/bin//usr/local/bin

コマンドが与えられると、シェルは実行可能ファイルパスにリストされたディレクトリから自動的にハッシュテーブル検索を実行します。パスは環境変数に格納され、$PATHコロンで区切られたディレクトリのリストです。通常、システムは$ PATH定義を/etc/profileおよび/またはに保存します~/.bashrc(付録Hを参照)。

bash$ echo $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/sbin

PATH=${PATH}:/opt/bin/opt/bin現在のパスにディレクトリを追加します。スクリプトでは、この方法でパスにディレクトリを一時的に追加すると便利です。これにより、スクリプトが終了すると元の状態が復元されます$PATH(スクリプトなどの子プロセスは親プロセス(シェル)の環境を変更できません)。

ノート安全対策として、./現在の「作業ディレクトリ」は通常省略されます。$PATH

以下を使用してecho "$PATH"表示現在の実行中のシェルのこの変数の内容。

答え3

次のものを使用する必要があります。

read -i "Enter path" PATH
find $PATH -size +1M -exec rm {}\;

ただし、PATH変数はバイナリ検索パスよりも優先されます。また、rm コマンドはあらかじめ自動的に削除でき、すべての内容を削除することはできません。

次のコードを使用することをお勧めします。

read -i "Enter path" DIR
/bin/find $DIR -size +1M -delete -print

このコマンドは作業環境/オペレーティングシステムを損傷する可能性があるため、リスクを軽減して使用してください。

関連情報