Skip to content

Instantly share code, notes, and snippets.

@papiron
Last active December 8, 2016 02:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save papiron/78efbb18253d26c4af979c5e9cd34474 to your computer and use it in GitHub Desktop.
Save papiron/78efbb18253d26c4af979c5e9cd34474 to your computer and use it in GitHub Desktop.
BSDのbannerコマンドで出力させたバナーを横にしてスクロールさせるシェルスクリプト
#!/bin/sh
# 必要な追加ソフトウェア: GNU sed、BSD付属のbanner
# Macの場合: $ brew install gnu-sed
# FreeBSDの場合: $ sudo pkg install gsed
# Ubuntuの場合: $ sudo apt install bsdutils
[ $# -lt 1 ] && echo 'Usage: scrollbanner STRING [HEIGHT]' && exit
string="$1"
if [ -z $2 ]; then
height=30
else
height="$2"
fi
banner -w $height "$string " | ## Ubuntuの場合は banner -> printerbannerに修正
sed p |
awk '{printf "%-'$height's\n", $0}' |
tr '# ' '+-' |
sed 's/./& /g' |
rs -T |
tail -r |
tr -d ' ' |
xargs printf "%`tput cols`s\n" |
tr ' ' '-' |
sed 's/$/\\n/' |
tr -d '\n' |
gsed ':a;p;s/\([+-][+-]\)\([+-]*\)\\n/\2\1\\n/g;ba' | ## Ubuntuの場合は gsed -> sedに修正
sed 's/.*/"&"/' |
tr '+-' '# ' |
sed 's/.*/clear; echo -e &; sleep 0.1/' |
bash |
cut -c1-`tput cols`
@papiron
Copy link
Author

papiron commented Dec 6, 2016

Twitterでヒントをいただきました。tputコマンドとsttyコマンド。
https://twitter.com/Heliac1999/status/805955949554855940
https://twitter.com/h_uta/status/806129015710826497
後藤さんのtputに関する記事。
http://news.mynavi.jp/articles/2011/01/12/tput-of-ubuntu-and-freebsd/

@papiron
Copy link
Author

papiron commented Dec 6, 2016

gaucheで書いたそうです。
http://valvallow.blogspot.jp/2013/06/shellmarquee.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment