我如何获得上一个命令的最后一个参数的`dirname`?

时间:2017-01-22 06:22:27

标签: bash

我经常发现自己处于以下情况:

mv picture /very/long/path/favicon.ico
cd !$

第二个命令失败(正如预期的那样),因为!$Not a directory。是否有一些bash历史替代魔法将我带到/very/long/path

4 个答案:

答案 0 :(得分:4)

!$:h完全符合要求:

mv picture /very/long/path/favicon.ico
cd !$:h

来源:man bash,查找字符串trailing filename

答案 1 :(得分:2)

您可以使用cd "${_%/*}" 代替,它会扩展到上次执行的命令的最后一个参数。然后是一个简单的参数展开,以去掉最后df之后的部分:

df = pd.DataFrame(dict(
        Business='Beauty & Spas;Burgers-Restaurants;Pizza;Mexican Restaurants;Modern European-Restaurants;Chineese'.split(';'),
        aniticipation=[0] * 6,
        enjoyment=[6., 1., 6., 33.,150., 19.5],
        sad=[1., 2., 1., 3., 13.5, 0.],
        disgust=[1, 1, 0, 3, 37, 3],
        anger=[1.5, 2., 4., 9., 19., 3.],
        surprise=[3, 0, 0, 2, 12, 1],
        fear=[0, 1, 1, 9, 22, 1],
        trust=[0] * 6
    ))

所以:

fig, axes = plt.subplots(2, 3, figsize=(10, 6))

for i, (idx, row) in enumerate(df.set_index('Business').iterrows()):
    ax = axes[i // 3, i % 3]
    row = row[row.gt(row.sum() * .01)]
    ax.pie(row, labels=row.index, startangle=30)
    ax.set_title(idx)

fig.subplots_adjust(wspace=.2)

答案 2 :(得分:0)

您可以使用此方法获取最后一个命令,问题是您想要用它做什么。 docs

答案 3 :(得分:0)

使用dirname命令

可以使用一种简单的方法
cd $(dirname !$);