Проблемы с указанием пути к TeXLive 2020 в Fedora 33

Вот полный скрипт (Я назвал его find-double-names.sh), который находит все имена файлов, которые встречаются более одного раза. Если вы делаете это для очистки, помните, что файлы с одинаковыми именами могут иметь разное содержимое.

. чтобы найти все двойные имена файлов в вашем домашнем каталоге, запустите его следующим образом:

find-double-names.sh $HOME

Вы можете передать больше каталогов для включения в поиск, например.:

find-double-names.sh $HOME /usr/local /var/tmp

Очевидно, что при наличии большого количества файлов выполнение этого сценария может занять некоторое время, а также потребуется некоторое место на диске в /tmp.

#!/bin/bash

# This is the name of this script itself.
#
script="${0##*/}"

# The  arguments passed to this script are the parent
# directories to be searched, e.g: /home/me /usr/local
# Check if any given. If not, error out.
#
if [ -z "$1" ] ; then
    echo "Usage: $script <directory> [<directory>][...]" >&2
    exit 1
fi

# Create a temporary directory. For accurate results we need
# to be sure it is empty. This is one way to do this: create
# an temp dir that is garanteed to not exist yet.
#
# If you want to keep the "outputdir" with the results, make sure
# output dir you use does not contain files you want to keep, because
# files will be removed from it by this script! Better yet, make
# sure it is empty before starting this script.
#
outputdir=$(mktemp --tmpdir -d "${script}.XXXXXXXXXX")   # ensures new unique directory
trap "rm -r $outputdir" INT HUP QUIT ABRT ALRM TERM EXIT # ensures it is deleted when script ends

# Search the directories given as arguments, and process
# the paths of alle files one by one in a loop.
#
find "$@" -type f | while read path ; do
    filename="${path##*/}"
    echo "$path" >>"${outputdir}/${filename}.txt"
done

# Finally, if you want to end up with only file names that
# occur more than once, delete all output files that contain
# only one line.
#
for outputfile in $outputdir/*.txt ; do
    linecount=$(wc -l "$outputfile" | sed 's/.*//')  # count lines in it
    if  [ "$linecount" = "1" ] ; then                 # if only one line
        rm "$outputfile"                              # remove the file
    fi
done

# Print the final result
#
for outputfile in $outputdir/*.txt ; do
    cat "$outputfile"
    echo               # empty line to separate groups of same file names
done
1
31.12.2020, 02:36
2 ответа

В течение многих лет я занимался своими личными установками TexLive с~/.bashrc(и друзьями ).

В конце моего ~/.bashrcу меня есть:

# User specific aliases and functions
if [ -f ${HOME}/.bashrc.${USER} ]; then
   . ${HOME}/.bashrc.${USER}
fi

и в моем ~/.bashrc.rickу меня есть (в дополнение к множеству других вещей):

export PATH=/home/rick/texlive/2020/bin/x86_64-linux:${PATH}
export MANPATH=/home/rick/texlive/2020/texmf-dist/doc/man:${MANPATH}
export INFOPATH=/home/rick/texlive/2020/texmf-dist/doc/info:${INFOPATH}

Каждый год я обновляю установку TexLive и экспортированные пути. Это сработало для меня очень хорошо.

1
18.03.2021, 22:39

Я чувствую, что есть несколько возможных исправлений для решения этой проблемы, но тот, который сработал для меня (и, следовательно, единственный, который я пробовал ), заключался в том, чтобы включить эту информацию PATH не в.profile (, как у меня ), а скорее в профиле.bash _. В противном случае существование профиля.bash _в основном заменит.profile, и ничего не изменится. (Я мог бы также указать профиль.bash _, чтобы использовать информацию из.profile.)

Кроме того, кажется, что я мог бы удалить.bash _, профиль (и, возможно, несколько других файлов.bash *), но я решил не идти по этому пути.

1
18.03.2021, 22:39

Теги

Похожие вопросы