0

/var/www/foo私が入っていて、作成したいとしましょう/tmp/foo。プログラムでそれを実行して、次のようなコマンドを実行する方法はありmkdir /tmp/[insert something here]ますか?

4

2 に答える 2

3
mkdir /tmp/`basename $(pwd)`

(前方ティックではなく、バックティックであることに注意してください。)

バッククォートがコマンド置換を行うため、これは機能します。基本的には、バックティック内のものを実行し、コマンド実行の標準アウトに置き換えます。この場合、basename現在の作業パスを持つコマンド。そして$(…)、バックティックとまったく同じことを行います。

コマンド「basenameファイル名からディレクトリとサフィックスを取り除く」。( http://unixhelp.ed.ac.uk/CGI/man-cgi?basenameを参照)

使用することもできます (バッククォートを使用したくない場合):

mkdir /tmp/$(basename $(pwd))

現在のディレクトリへのパスにスペースやその他の特殊文字が含まれている場合は、コマンド置換を二重引用符で囲む必要があることに注意してください。

mkdir "/tmp/$(basename "$(pwd)")"
于 2012-07-04T04:17:07.797 に答える
0

$PWD常に現在のディレクトリへのフル パスが含まれます。したがって、 ${PWD##*/}$PWD最後までの部分を除く/)は現在のディレクトリの名前です。

mkdir "/tmp/${PWD##*/}"

現在のディレクトリの名前に空白や文字が含まれていないことがわかっている場合は、二重引用符を省略できます*?\[

zsh には、パスの最後のコンポーネントを抽出する簡単な方法があります。

mkdir -- /tmp/$PWD:t
于 2012-07-04T20:57:13.863 に答える