Ключевые слова:shell, example, (найти похожие документы)
Date: Thu, 31 Jan 2002 07:20:42 +0000 (UTC)
From: Max Ischenko <[email protected]>
Newsgroups: fido7.ru.linux
Subject: Скрипт на shell для работы с архивами из командной строки
VS> Hу, не совсем в shell, но при наличии afs можно прям из shell'а унутрь
VS> архива лазать (говорят :).
Без всяких avfs за час пишется вот такой простенький скриптик:
#!/bin/sh
[ $# -eq 0 ] && { echo "what file to view?"; exit 1; }
file=$1
type=${file##*.}
TMPDIR=${TMPDIR:-/var/tmp}
temp=$TMPDIR/viewar.$$
trap 'rm -fr $temp' 0 1 2 15
unexec () { find . -type f |xargs chmod 644; }
extract_rpm () { rpm2cpio "$1" | cpio -iumd --quiet; }
extract_zip () { unzip -Lq "$1"; unexec; }
extract_rar () { unrar x "$1"; unexec; }
extract_arj () { unarj x "$1"; unexec; }
extract_tar () { tar $1 "$2"; }
case $type in
rpm) extract=extract_rpm ;;
gz|tgz) extract="extract_tar xzf" ;;
bz2) extract="extract_tar xjf" ;;
tar) extract="extract_tar xf" ;;
taz) extract="extract_tar xZf" ;;
zip|ZIP) extract=extract_zip ;;
rar|RAR) extract=extract_rar ;;
arj|ARJ) extract=extract_arj ;;
*) echo "$file: unsupported archive type $type"; exit 1;;
esac
file=`realpath "$file"` # Get an absolute pathname
mkdir $temp
cd $temp
$extract "$file"
# If we have single directory and nothing else, let's cd there.
dirs=`ls -d * 2>/dev/null |wc -l`
[ $dirs -eq 1 ] && cd */
/bin/bash2
# Написание realpath left as an exercise to the reader. ;)
--
A language that doesn't affect the way you think about programming is
not worth knowing.