#!/usr/bin/env bash path="$1" lines="$2" [ ! -e "$path" ] && { echo "$path not found" ; exit 1; } [ -z "$lines" ] && lines=40 filetype=$(file -b "$path") if grep -q "text" <<< "$filetype"; then filetype="text" elif grep -q "archive" <<< "$filetpye"; then filetype="archive" elif grep -q "ISO" <<< "$filetype" ; then filetype="iso" elif grep -q "PDF" <<< "$filetype"; then filetype="pdf" elif grep -q "SQLite 3" <<< "$filetype"; then filetype="sqlite" fi case $filetype in "directory") fd . "$path" ;; "text") bat -p -r ":$lines" --color=always "$path" ;; "archive") echo "archive preview not currently supported" file -b "$path" ;; "iso") isoinfo -l -i "$path" | head -n "$lines" ;; "pdf") info=$(pdfinfo "$path") remaining_lines=$(echo "$lines - $(echo $info | wc -l) -1" | bc) echo "$info" echo "--------------" if [ "$remaining_lines" -gt 0 ]; then pdftotext -nodiag -nopgbrk "$path" - | head -n "$remaining_lines" fi ;; "sqlite") file -b "$path" sqlite3 -readonly "$path" ".schema" ;; *) file -b "$path" ;; esac