/var/www/foo
私が入っていて、作成したいとしましょう/tmp/foo
。プログラムでそれを実行して、次のようなコマンドを実行する方法はありmkdir /tmp/[insert something here]
ますか?
質問する
181 次
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 に答える