2017-11-10 161 views
0

说我有一个命令,convertImage,这需要一些输入JPEG,并在同一目录吐出了一个新的PNG:替换输出文件的扩展

convertImage --format png photo.jpg -o photo.png 

我想打一个别名“ convertToPng”这需要只有一个ARG,该文件:

convertToPng photo.jpg 

我目前的解决办法是这样的:

alias convertToPng "convertImage --format png \!:1 -o \!:1.png" 

如何这将把输出文件命名为“photo.jpg.png”,我希望它被命名为“photo.png”。有什么办法先解析文件名,然后将其传递给convertImage可执行文件?

回答

0

如果您输入始终JPG然后

convertToPng photo 
alias convertToPng "convertImage --format png \!:1.jpg -o \!:1.png" 

或给予延长作为第二个参数

convertToPng photo jpg 
alias convertToPng "convertImage --format png \!:1.\!:2 -o \!:1.png" 

或最后一个选项

convertToPng photo.jpg 
alias convertToPng "convertImage --format png \!:1 -o `echo $1 | cut -f1 -d'.'`.png" 

或如下写你的.bashrc功能

function convert() 
{ 
    convertImage --format png $1 -o `echo $1 | cut -f1 -d'.'`.png; 
} 

和执行上述function作为

convert photo.jpg 

我更喜欢function方式,因为它给了你很大的灵活性在aliases,你能做的不仅仅是一个语句等等。

0
echo photo.jpg | awk -F. '{print $1".png"}' 

这可以在一个命令行调用可以使用像这样:

$ convertImage --format png photo.jpg -o `echo photo.jpg | awk -F. '{print $1".png"}'`