web-dev-qa-db-ja.com

ディレクトリを作成および変更する1つのコマンド

oneコマンドだけを検索しています— &&または| —ディレクトリを作成し、すぐに現在のディレクトリを新しく作成したディレクトリに変更します。 (これは誰かが彼の "linux-usage"の試験のために得た質問です、彼はそれをする新しいコマンドを作りました、しかしそれは彼にポイントを与えませんでした。)それが重要なら、これはdebianサーバー上にあります。

37
Autom3

私はあなたがこれを探していると信じています:

mkdir project1 && cd "$_"
53
Marian Zburlea

_$HOME/.bashrc_でその目的のためにbash functionを定義します。

_ function mkdcd () {
     mkdir "$1" && cd "$1"
 }
_

次に、インタラクティブシェルに_mkdcd foodir_と入力します

厳密な意味で、いくつかの_&&_(または少なくとも_;_)を含むShell関数なしでは、達成したいことは不可能です...その他つまり、演習の目的は、シェルで関数(またはエイリアス)が役立つ理由を理解させることでした。

PSスクリプトではなく関数である必要があります(スクリプトの場合、cdは、スクリプトを実行している[サブ]シェルにのみ影響し、インタラクティブな親シェルには影響しません)。呼び出しているインタラクティブな親シェルのディレクトリを変更する単一のコマンドまたは実行可能ファイル(シェル関数ではない)を作成することは不可能です(各プロセスには独自の現在のディレクトリがあり、自分のプロセスの現在のディレクトリしか変更できないため、呼び出し元のシェルプロセスではありません)。

PPS。 Posixシェルでは、functionkeywordを削除し、最初の行をmkdcd() {にする必要があります

29

oh-my-zshユーザーの場合:take 'directory_name'
参照: 公式oh-my-zsh github wiki

15
Avijit Gupta

以下を.bash_profile(または同等のもの)に入力すると、必要な機能を実行するmkcdコマンドが得られます。

# mkdir, cd into it
mkcd () {
    mkdir -p "$*"
    cd "$*"
}

この記事 はそれをより詳細に説明しています

10
colmjude

これは可能ではないと思いますが、自分でスクリプトを作成する必要のない、(私が知っている)それを行う最も簡単な方法は何だろうと思っているすべての人にとっては、次のとおりです。

mkdir /myNewDir/
cd !$

これにより、新しいディレクトリの名前を2回書き込む必要がなくなります。

!$は、最後のコマンド($)の最後の(!)引数を取得します。

!!!*!startOfACommandInHistoryなどの便利なショートカットがあります。詳細については、ネットで検索してください)

残念ながら、mkdir /myNewDir/ && cd !$は機能しません。mkdirコマンドの最後の引数ではなく、前のコマンドの最後の引数を取得します。

6
JeromeJ

多分私は質問を完全に理解していませんが、

>mkdir temp ; cd temp

一時ディレクトリを作成し、そのディレクトリに移動します。

2
Mike Lane

自分でディレクトリに名前を付けるかどうかは言いませんでした。

cd `mktemp -d`

一時ディレクトリを作成し、そこに移動します。

2
laktak
mkdir temp ; cd temp ; mv ../temp ../myname

次のようにエイリアスできます:

alias mkcd 'mkdir temp ; cd temp ; mv ../temp ../'
1
user10705203