📄 xebcdic.sh
字号:
#!/bin/sh## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version 2.0# (the "License"); you may not use this file except in compliance with# the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.### xebcdic.sh fileName [--all-ascii-content] [--f=pattern ... ]## This shell script decompresses an archive containing an apache source tree# and then extracts the source files from the archive. The source files are# translated from ASCII to EBCDIC as they are extracted from the archive.# Once all the files have been extracted and translated, the binary files are# re-extracted to undo the ASCII to EBCDIC translation on those files. Once# this script is done, the extracted tree can be used on an EBCDIC based# system.## Input: fileName -- fileName has one of the following formats:# apache-version_timeStamp.tar.gz or# apache-version_timeStamp.tar.Z or# apache-version.tar.gz or# apache-version.tar.Z or# apache_version.tar.gz or# apache_version.tar.Z## --f=pattern -- specifies that all files which match the pattern# are to be re-extracted without ascii to ebcdic# translation being applied. pattern is a file name# specification that may contain path names and# the wildcard character. All paths are assumed to# be under the apache source tree top. Binary files# are always re-extracted without ascii to ebcdic# translation regardless of whether any pattern is# specified or not. Multiple patterns may be specified# by repeating this option.### --all-ascii-content -- specifies that all the text content shipped# with the apache tree should be stored in# ascii on the OS/390 system. This re-extracts# all the *.htm* files in the htdocs directory# of the apache tree without doing the ascii# to ebcdic translation. In addition to the# *.htm* files, file htdocs/manual/LICENSE and# file htdocs/manual/misc/HTTP_Features.tsv# are also stored in ascii. If this option# is specified, directives AddType and# DefaultType need to be used to correctly# serve the pages without trying to first# translate from ebcdic to ascii. See# apache-tree-top/src/README.EBCDIC.## Example Invocations:## ./xebcdic.sh apache_1.3.9.tar.gz: Runs gunzip, runs pax and# extracts everything translating it to ebcdic, and re-extracts# all gif files in the htdocs and icons directories without# applying ascii to ebcdic translation.## ./xebcdic.sh apache_1.3.9.tar.gz --f=*.htm* --f=htdocs/*.tsv:# Runs gunzip, runs pax and extracts everything translating it to# ebcdic, re-extracts all gif files without ascii to ebcdic# translation, and re-extracts all the *.htm* files in the apache# source tree and all *.tsv files in the htdocs directory of the# apache source tree without ascii to ebcdic translation.## ./xebcdic.sh apache_1.3.9.tar.gz --all-ascii-content: Runs gunzip,# runs pax and extracts everything translating it to ebcdic,# re-extracts all gif files without ascii to ebcdic translation,# and re-extracts all the *.htm* files in the htdocs directory# as well as htdocs/manual/LICENSE and# htdocs/manual/misc/HTTP_Features.tsv without ascii to ebcdic# translation.## Output: fileName.tar.gz is replaced with fileName.tar and the apache# source tree is extracted into a directory named apache-version or# apache_version. All files except binary files and any files# specified through the options are translated from ascii to# ebcdic.## Assumptions: The path to gunzip, uncompress and pax is defined and# from where this script is invoked.#echo "Input file name is: $1"# Verify fileNameif ! echo $1 | grep -q 'apache_.*\.tar\.gz' && \ ! echo $1 | grep -q 'apache_.*\.tar\.Z' && \ ! echo $1 | grep -q 'apache-.*_.*\.tar\.gz' && \ ! echo $1 | grep -q 'apache-.*_.*\.tar\.Z' && \ ! echo $1 | grep -q 'apache-.*\.tar\.gz' && \ ! echo $1 | grep -q 'apache-.*\.tar\.Z'then echo "Filename, $1, does not follow required format." echo "Filename should have one of the following formats:" echo "apache-version_timeStamp.tar.gz or" echo "apache-version_timeStamp.tar.Z or" echo "apache-version.tar.gz or" echo "apache-version.tar.Z or" echo "apache_version.tar.gz or" echo "apache_version.tar.Z" exit 1;fiif [ ! -f $1 ]; then echo "$1 is not a file" exit 1;fiif [ ! -a $1 ]; then echo "$1 file does not exist" exit 1;fi# Verify fileType option if specifiedfor option in $@do case "$option" in $1) ;; --all-ascii-content) ;; --f=*) ;; *) echo "Invalid option specified. Command syntax is:" echo "xebcdic.sh compressed-archive-file-name [--all-ascii-content]" echo " [--f=pattern ... ]" exit 1; ;; esacdone# Figure out whether to gunzip or uncompressif echo $1 | grep -q 'apache[-_].*\.tar\.gz'; then DECOMPRESS="gunzip"else DECOMPRESS="uncompress"fiecho "Decompression utility $DECOMPRESS will be used."# Set name of tar file after decompressingif [ "x$DECOMPRESS" = "xgunzip" ]; then TARFILE=`echo $1 | sed s/\.tar\.gz/\.tar/`else TARFILE=`echo $1 | sed s/\.tar\.Z/\.tar/`fiecho "Archive file name is: $TARFILE"# Set name of apache source tree directoryif echo $1 | grep -q 'apache-.*_.*\.tar*'; then APDIR=`echo $1 | sed s/_.*//`else APDIR=`echo $1 | sed s/\.tar.*//`fiecho "Apache source tree top is: $APDIR"# Decompress input fileecho "Starting decompression of $1"if [ "x$DECOMPRESS" = "xgunzip" ]; then if gunzip $1; then echo "Decompression of $1 completed successfully" else exit 1; fielse if uncompress $1; then echo "Decompression of $1 completed successfully" else exit 1; fifi# Extract source files and translate them all from ASCII to EBCDIC# Determine code page for localeecho "Starting extraction of source files from archive $TARFILE."echo "ASCII being translated to EBCDIC."echo "ASCII code page assumed to be ISO8859-1."echo "EBCDIC code page assumed to be IBM-1047."pax -ofrom=ISO8859-1,to=IBM-1047 -rvf $TARFILEecho "Extraction and translation of source files from archive completed."# Re-extract gif files without ASCII to EBCDIC translationecho "Re-extracting gif files without ASCII to EBCDIC translation"pax -rvf $TARFILE $(find $APDIR/htdocs -type f -name "*.gif*")pax -rvf $TARFILE $(find $APDIR/icons -type f -name "*.gif*")# Re-extract appropriate files as requested by userfor option in $@; do case "$option" in $1) ;; --all-ascii-content) echo "Re-extracting files in $APDIR/htdocs without ASCII to EBCDIC translation" pax -rvf $TARFILE $(find $APDIR/htdocs -type f -name "*.htm*") pax -rvf $TARFILE $(find $APDIR/htdocs -type f -name "*.tsv*") pax -rvf $TARFILE $(find $APDIR/htdocs -name "manual/LICENSE") ;; --f=*) PATTERN=`echo $option | sed s/--f=//` if [ "x$PATTERN" != "x" ]; then echo "Re-extracting files matching $PATTERN without ASCII to EBCDIC translation" pax -rvf $TARFILE $(find $APDIR -type f -name "$PATTERN") fi ;; *) ;; esacdone
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -