2016-03-24 35 views
0

Sözdizimi vermek istiyorum, bir sürü dosya ve sayfanın çıktısını vurgulayın. Sorunlar, stdin'den okuyorsa dosya isminin daha az gösterilmemesidir., stdin'den daha az okundu, ancak dosya ismini göster

Stdin'den daha az okumanı nasıl alabilirim ve yine de dosya adını nasıl gösterebilirim? İşte

ben yapmaya çalışıyorum ne:

 
for f in *.py; do 
    pygmentize "$f" | less -mR 
done 
+0

'yankı-n $ f; "$ f" parçalılaştır | daha az -mR' – mpez0

+0

@ mpez0, yani {echo -n $ f; "$ f" parçacıklarını; } | eko çıkışını daha az besleyecek daha az -mR' –

+0

@glennjackman; OP sadece çıktı dosyasının gösterilmesini istediğini düşündüm. Her iki şekilde de, istediğine bağlı olarak çalışır. – mpez0

cevap

1

Sen orada dosyaları geçici bir dizin kullanabilir ve koyabilirsiniz, less "gerçek" dosyaları olarak bunları görmeye yapım. (Dizin yapmak mümkün mktemp sağlayan sistemlerde)

Örneğin

:

#!/bin/sh 
mydir=$(mktemp -d) 
trap "cd; rm -rf $mydir" EXIT INT QUIT 
for f in *.py; do 
    pygmentize "$f" >$mydir/"$f" 
    (cd $mydir && less -mR "$f") 
done 
+0

Bu bir çözüm ve güzel yazılmış. Bunu yapmak zorunda olmamayı umuyordum, ama oldukça kolay görünüyorsun. –

+0

Kolayca yazılmıştı - tek garip kısım, sisteminiz için 'trap' komutu için taşınabilir olan detaylardır (bunu 'dash' ile kontrol ettim). –

+0

Bir ayrıntılandırma işi tamamladım. Dosyaya bir yol varsa, önce yolu kapatmalıyız. –

İlgili konular