にディレクトリがあります/var/www/html
。mv
fromを使用してこのディレクトリの名前を変更しました。実施例1到着実施例2。
名前を変更したら、新しい名前付きディレクトリにどのように入りますか?
この目標をどのように達成しますか?それは使用できますかfind
?mmin
0*60
私の目標は、2つの異なるタスクではなく、1つのタスクに名前を変更して入力することです。
理想的には、システムで何もカスタマイズする必要がない限り、行ソリューションを目指しています。
ベストアンサー1
これを.bashrcファイルまたは.bash_aliasesファイル(またはシェルでない場合はそれに対応するファイルbash
)に追加できます。
mvcd () {
mv -- "$1" "$2" &&
cd -P -- "$2"
}
その後、シェルを再起動すると、次の機能を使用できます。
mvcd foo bar
$2
既存のディレクトリではないとします。それ以外の場合はmv
移動します。 $1
入力するそれは関連している到着(これを防ぐには、-T
GNUオプションを参照してくださいmv
)。
--
オプションの終わりを表示します。mv "$1" "$2"
しますmv "$option_or_source" "$option_or_argument_to_first_option_or_destination"
。名前がで始まってもmv -- "$1" "$2"
保証され$1
、オプションとして扱われないため、常にとして扱われます。通常、コマンドに任意の引数が指定されている場合はそれを使用しようとします。$2
-
mv -- "$source" "$destination"
--
-P
(のため物理cd
..
ディレクトリナビゲーション)は、POSIXシェルに埋め込まれたパスコンポーネントの特別な処理の$2
デフォルトを防止しますmv
。これがなければ、別のディレクトリにCDを挿入して名前を変更できますcdmv foo ../bar
。cd
bar
mv
foo
これを設定した場合(またはシェルの起動時に環境にいる場合)、その呼び出しに対しても無効にする必要があり$CDPATH
ます。cd
mvcd () {
mv -- "$1" "$2" &&
CDPATH= cd -P -- "$2"
}
いくつかの追加のコーナーケースの問題がまだ存在します。 (-
一部のシェルでは-2
)+3
それ以降も特別扱いを受けます--
。foo
に名前を変更するには、代わりに-
を使用します。mvcd foo ./-
mvcd foo -