Người dùng Random832 đã viết:
[...] Tạo một tệp tar trống [...]
Tuyên bố miễn trừ trách nhiệm: Tôi chưa kiểm tra tập lệnh này.
Chúa phù hộ bạn! Bạn đã cho tôi ý tưởng. Tôi đã kiểm tra tập lệnh của bạn, nhưng nếu ai đó tạo một tệp tar trống, tar không coi đó là tệp "posix tar". Vì vậy, tôi đã viết một tập lệnh tạo ra một tập tin "posix tar" với một cái gì đó bên trong, và cuối cùng xóa nó. Tôi đặt tên cho nó là "gnu2posix", mọi người có thể sử dụng nó một cách tự do:
#!/bin/bash
set -o nounset
### // Convert a tar file, from the "gnu tar" format to the "posix tar" one (which in Windows, for example, allows seeing correctly all of the utf-8 characters of the names of the files)
NAME_PROGRAM=$(basename "$0")
alert() {
echo "$@" >&2 ;
}
alert_about_usage() {
echo "The usage of this program is: $NAME_PROGRAM FILE_TO_CONVERT RESULTING_FILE" >&2
}
if [[ $# != 2 ]]; then
alert "ERROR: the program \"$NAME_PROGRAM\" needs two arguments, but it has received: $#."
alert_about_usage
exit 1;
fi
file_to_convert="$1"
if [[ ! -f "$file_to_convert" ]]; then
error "ERROR: the program \"$NAME_PROGRAM\" can't access any file with this path: \"$file_to_convert\"."
alert_about_usage
exit 1;
fi
resulting_file="$2"
# // Create a file with something inside, in this case, the "." folder (without its contents). This way, a real "posix tar" is created
tar --format=posix -cf "$resulting_file" . --no-recursion
# // Add "$file_to_convert", finally getting a "posix tar" file
tar -Avf "$resulting_file" "$file_to_convert"
# // Just in case, delete the "." folder from the file
tar -f "$resulting_file" --delete "."
# // End of file