Действительно хорошее видео для наблюдения: http://peepcode.com/products/meet-emacs
Делает превосходное задание покрытия всех основ, но оно будет стоить некоторых денег для получения.
Я задал подобный вопрос на StackOverflow и скорее затем мне копирующий все по выезду:
https://stackoverflow.com/questions/2393787/any-good-emacs-intro-videos
Оболочки POSIX (например, удар, тире, ksh, …) принимают a ${var%suffix}
создайте, который может использоваться для удаления запаздывающей части из значения переменной. Например, если path="sub/file.txt"
, затем ${path%.txt}
расширяется до sub/file
.
Существует симметричная конструкция для удаления префикса: ${var#prefix}
. Префикс может быть шаблоном. Удвоение #
разделяет самый длинный префикс соответствия. Например, если path=sub/dir/file.txt
, затем ${path##*/}
расширяется до file.txt
(и ${path#*/}
расширяется до dir/file.txt
). То же идет для суффиксов и %
.
Так, в Вашем случае Вы могли записать, это (обратите внимание, что Вы не можете объединить разделение префикса и отсечение суффиксов в единственное расширение, по крайней мере, не только с конструкциями POSIX):
for f in sub/*.txt; do
base=${f%.txt}
base=${base##*/}
enscript -b "" -o "$base.ps" "$f"
ps2pdf "$base.ps" "$base.pdf"
done
С другой стороны, команда базового имени GNU принимает дополнительный второй аргумент, который является расширением файла для удаления. Например, если $f
file.txt
, затем $(basename $f .txt)
расширяется до file
.
Отметьте, однако, это basename
удаляет всю информацию о пути за исключением последнего компонента, поэтому если Вы хотите удалить просто расширение, необходимо отложить это (см. команду dirname).
В zsh можно применить различные преобразования к расширению параметра, включая модификаторы истории такой как r
разделять одно расширение и t
разделять часть каталога.
for x in sub/*.txt; do
enscript -b "" -o ${x:t:r}.ps $x
ps2pdf ${x:t:r}.ps ${x:t:r}.pdf
done
Можно применить модификаторы истории к шаблонам шарика также.
for x in sub/*.txt(:r:t); do
enscript -b "" -o $x.ps sub/$x.txt
ps2pdf $x.ps $x.pdf
done
sub/
. Как прокомментировано выше, basename=${prefix#sub/}
работы, в том же направлении как подход @Riccardo.
– Faheem Mitha
31.05.2011, 11:11
basename
имеет опечатку (/вместо.) и 2) это ссылки на то, что похоже на утилиты C. Я пропускаю что-то? Я должен был сказать, что мое общее предпочтение сценариев оболочки является мобильностью, таким образом,${path%.txt}
сделает меня. Я предполагаю GNUbasename
вещь, независимо от того, что это. не является портативным. – Faheem Mitha 30.05.2011, 23:29syntax error near unexpected token
$ prefix= {f %. txt}'. If I take out the semi-colon and add a
сделайте' это работает. – Faheem Mitha 30.05.2011, 23:42basename
URL. :-) – Faheem Mitha 31.05.2011, 00:00do
.Спасибо. – Faheem Mitha 31.05.2011, 00:12