cdでファイルの親ディレクトリに移動しますか?


9

私はいくつかの仕事をするために.shを書いていますが、今はファイル/path/to/file.endがあるディレクトリにcdする必要があるところにいます。ターミナルは許可していません

cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory

悲しいことに私が知っている回避策はないので、あなたが助けてくれるといいですね!


4
えっとcd /path/to?これは、ファイルがそのディレクトリにディレクトリを変更しますfile.endです。
アラーアリ

1
いいえ、ファイルは可変です。ファイルのパスを入力し(ターミナルにドロップし)、それが含まれているフォルダーに移動します
Azsgy

回答:


10

と入力しcd $( dirname /path/to/file.end)ます。それはあなたを連れて行きます/path/to

説明:

  • dirname(あなたがなるだろう、ファイル名、なしファイルの完全なパスを返しますbasename) -すなわちdirname /etc/apt/apt.conf.d/99update-notifierリターンを/etc/apt/apt.conf.d
  • $(anything)は括弧内のコマンドの結果に置き換えられます。したがってcd $( dirname /etc/apt/apt.conf.d/99update-notifier)、次のように実行されますcd /etc/apt/apt.conf.d

同じことの別の(しかし古く、落胆した)表記は

cd `dirname /path/to/file.end` 

8

cdファイルに入れることはできません。以下は、指定された完全修飾ファイルパスのパスに自動的に入る(コマンドライン)関数cdです。

function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }

これは正しいですか?:function fcd(){[-f $ 1] && {cd $(/ file.end $ 1); } || {cd $ 1; } pwd}応答は次のとおりです
。bash

2
@Atschの前pwdにセミコロンが必要です。1行で関数を定義する場合は、後にセミコロンが必要pwdです。
グレン・ジャックマン2013

@glennjackman関数は、dirの出力や変更なしに終了します:(
Azsgy

関数を実行してから入力しますecho $?-終了ステータスは何ですか?
グレン・ジャックマン2013

私は自分自身を疑うべきではありませんでした。代替案は、私がそれを見つけたとき、私にはよりよく見えました_O-
Rinzwind 2013

1

ファイル名に「/ ..」を追加すると、正しいディレクトリに移動しますcd /path/to/file.end/..。とにかくCygwinで動作します。


4
bashでは機能しません;)touch test && cd /home/test/test/..と言うbash: cd: /home/test/test/..: No such file or directory
Rinzwind
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.