hi, i am trying to convert the following watch command to fish:
watch "(for i in *; do du -h \"\$i\"; done| tail -20 | cut -c -\$((\$COLUMNS-5)))" actually, the problem i really wanted to solve is to change the order in which the files are processed. bash expands * alphabetically, and because the filenames contain spaces, i can't use for i in `ls -tr`... however that works in fish: for i in (ls -tr); du -sh $i; end | tail -20 | cut -c -(math $COLUMNS - 5) but now i can't wrap that with watch, because watch executes its argument with sh. a workaround is a simple loop: while true; clear; for i in (ls -tr); du -sh $i; end | tail -20 | cut -c -(math $COLUMNS - 5); sleep 2; end unfortunately the clear; command causes an annoying flicker. ansi escape-sequences help: clear; while true; echo \e\[H; for i in (ls -tr); du -sh $i; end | tail -20 | cut -c -(math $COLUMNS - 5); sleep 2; end but only as long as each line fills the screen. i am going with this for now as it is good enough for my needs, but i am wondering if this can be improved... greetings, martin. -- eKita - the online platform for your entire academic life hackerspace beijing - http://qike.info -- chief engineer eKita.co pike programmer pike.lysator.liu.se caudium.net foresight developer realss.com foresightlinux.org unix sysadmin trainer developer societyserver.org Martin Bähr working in china http://societyserver.org/mbaehr/ ------------------------------------------------------------------------------ LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99! 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk _______________________________________________ Fish-users mailing list Fish-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fish-users