ユーザーが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
プロンプトを使用できます。-p
REPLY
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
このコマンドは作業環境/オペレーティングシステムを損傷する可能性があるため、リスクを軽減して使用してください。