Вы на правильном пути! Пара комментариев об этом. Это - обычно лучшая практика для отъезда многострочных действий как это к функциям. Я, вероятно, записал бы это как это:
change_etc_hosts_file() {
set -e # stop running if we encounter an error
sudo \mv -f /etc/hosts /etc/hoststempname
sudo \mv -f /etc/hostssecondary /etc/hosts
sudo \mv -f /etc/hoststempname /etc/hostssecondary
set +e
}
alias changehosts=change_etc_hosts_file
Вы заметите, что я также использовал полные пути вместо того, чтобы изменить каталог. Это обычно - лучшая идея (для использования полных путей). Если Вы действительно хотите продолжать использовать родственников затем, обычно лучше сделать это в подоболочке, таким образом, Вы не имеете к обработке возвращающегося каталога к $PWD (который, если Вы прерываетесь, оставит Вами в странном состоянии). Чтобы сделать это как подоболочку, это было бы похоже на это:
change_etc_hosts_file() {
( # use subshell
cd /etc
set -e # stop running if we encounter an error
sudo \rm -f hoststempname # the \ escapes aliases which might cause prompting
sudo \cp -f hosts hoststempname
sudo \cp -f hostssecondary hosts
sudo \cp -f hoststempname hostssecondary
)
}
CD происходит в (), который является новым процессом, таким образом, он не будет влиять на Ваш текущий рабочий каталог.
Если Вы хотите API C, Вы собираетесь закончить с GNU nftw
, обход дерева файла GNU. Не дурачьте себя в использование простого ftw
, Вы получите неточные данные. Необходимо будет записать "на файл" функция, которая использует struct stat
это nftw
передачи в "на файл" функция. Вы можете иметь "на файл" функциональные помещенные размеры файла в блоках, или просто распечатать размер файла и затем поместить числа в блоки некоторый другой путь.