多くの場合、これらのコマンドをbashで入力します。
mkdir something
cd something
私はほとんどこれをしません:
mkdir something
ls # something in the current directory, not ./something/
そして決してこれはありません:
mkdir something something2
新しく作成したディレクトリにmkdir
cd
を含めるにはどうすればよいですか?つまり、mkdir something
の場合、コマンドcd something
はすぐに実行されます。
例:
$ pwd
/home/me
$ mkdir something
$ pwd
/home/me/something
関数を作成することをお勧めします。
function mydir(){ mkdir -p "$1" && cd "$1"; }
それはあなたが望むことをします、あなたはそれをあなたのすべてのシェルで利用できるようにあなたの.bashrc
に追加することができます.
$1
は、関数に送信する最初の引数、ディレクトリの名前です。次のように使用できます。
$ mydir ~/my-new-directory
$ pwd
~/my-new-directory
注:mydir
をmkdir
で変更してオーバーライドできますが、mydir
やcmkdir
などのシステムに存在しないカスタム名をお勧めします。 type command
を使用して、コマンドが存在するかどうかを確認できます。
作成されたディレクトリの名前を再入力する必要はありません。 $_
変数を使用:
Bash 4.3マニュアルから:
_ At Shell startup, set to the absolute pathname used to invoke the Shell or Shell script being executed as passed in the environment or argument list. Sub‐ sequently, expands to the last argument to the pre‐ vious command, after expansion.
したがって、使用方法は次のようになります。
bash-4.3$ mkdir mydir
bash-4.3$ cd $_
1行だけを使用する場合は、コマンドを複合コマンド{
に結合します({
の前の先行スペースと各コマンドのセミコロンが必要です)。
bash-4.3$ pwd
/home/xieerqi
bash-4.3$ { mkdir mydir;cd $_;}
bash-4.3$ pwd
/home/xieerqi/mydir
リスト内のすべてのコマンドは現在のシェル環境で実行されるため、この{list;}
複合コマンド構造が選択されていることに注意することが重要です。
そして、すべてを何度も入力するのを避けたい場合は、エイリアスを作成できます。
bash-4.3$ alias mkcd='{ IFS= read -r d && mkdir "$d" && cd "$d"; } <<<'
bash-4.3$ pwd
/home/xieerqi
bash-4.3$ mkcd "mydir"
bash-4.3$ pwd
/home/xieerqi/mydir
ここでは、両方に"$d"
変数を使用しましたが、"$_"
と同じように使用することもできます。
bash-4.3$ alias mkcd='{ IFS= read -r d && mkdir "$d" && cd "$_"; } <<<'
私は通常mkdir something
をcd
でフォローしますAlt + . 前のコマンドの最後の引数、つまりディレクトリ名でコマンドを完了します。
小さいfunctionを作成して、~/.bashrc
ファイルに保存できます。ファイルを編集して、次の行を追加します。
md () {
mkdir "$1" && cd "$1"
}
走る
source ~/.bashrc
現在の端末[ウィンドウ]で変更を有効にするため。新しいターミナルを開くと、新しい関数がそこにあります。
コマンド間で&&
を使用すると、cd
コマンドが成功した場合にのみmkdir
コマンドが実行されます。
例:このような関数md
を使用して、テストディレクトリtestdir
を現在のディレクトリ(この場合はプロンプトから見たホームディレクトリ)に作成できます。
sudodus@xenial32 ~ $ md testdir
sudodus@xenial32 ~/testdir $
また、この目的のために小さいbash shellscriptを使用することの難しさについても説明します。
~/bin
ディレクトリにシェルスクリプトを保存できます。 ~/bin
を作成して再起動すると、PATHになります。
標準コマンドで使用されていない名前を使用します(たとえば、mdscript
)。
#!/bin/bash
mkdir "$1" && cd "$1"
スクリプトを実行可能にする
chmod ugo+x ~/bin/mdscript
これは、意図したとおりには機能しません。
mdscript testdir
なぜなら、現在のディレクトリはシェルスクリプトのサブプロセスでのみ変更され、シェルスクリプトの終了後はターミナル[ウィンドウ]で変更されないためです。
「ソース」のときに機能し、コマンドラインで実行します
source mdscript testdir
しかし、これは便利ではなく、元の質問に対する良い答えではありません。
pwd
コマンドをシェルスクリプトに追加すると、その動作を確認できます
#!/bin/bash
mkdir "$1" && cd "$1"
pwd
スクリプトmdscript
を実行します
sudodus@xenial32 ~ $ mdscript testdir
/home/sudodus/testdir
sudodus@xenial32 ~ $