Различия между обеими командами:
На UNIX файл имеет 3 метки времени (atime, ctime, mtime), которые обновляются при различных условиях.
Заключить статью Википедии в кавычки о статистике:
atime: время последнего доступа (ls - лютеций), mtime: время последнего изменения (ls-l), и ctime: время последнего изменения состояния (ls-lc).
Пример для изменения состояния изменяет полномочия файла.
Эта проблема была опубликована как ошибка более 10 лет назад . Я не уверен, как музыкальный плеер, который не может играть альбомы в неслучайном порядке с 2006 года, стал по умолчанию на debian, но само собой разумеется, что я удалил его. Это разочаровывает.
Я также ценю ответ fossfreedom.
-121--70925- Размещение другого решения, поскольку файл написан случайным образом, ломает мою идею tail
. Мысль rsync
может быть многообещающей здесь, поскольку rsync
может работать с использованием алгоритма дельта-передачи, экономя время передачи, только отправляя измененные части файла. При запуске rsync
для двух локальных файлов по умолчанию используется режим --whole-file
, который не является нужным.
Предложение
rsync -av --inplace --no-whole-file /your/local/file.dat /your/remote/file.dat
... или (если монтирование CIFS не согласовано с дельта-передачей) используйте чистый rsync
:
rsync -av --inplace --no-whole-file /your/local/file.dat remoteserver:/your/directory/file.dat
Поэтому вы бы запустили это несколько раз, пока ваш файл 200 ГБ наполнять. Каждый раз, когда вы запускаете его, он постепенно обновляет удаленный файл. Это должно работать даже при случайном обновлении исходного файла. Может, ты сможешь запустить это каждые 15 минут. Затем, когда ваш pid заканчивается, вы будете запускать его еще раз, и это будет просто быстрая инкрементная дельта.
-121--83288- Формулировка вашего вопроса неоднозначна, поэтому я не могу сказать, хотите ли вы прекратить использование zsh
или вы хотите прекратить использование oh-my-zsh
. Я прикрою обоих.
zsh
Просто запустите chsh
и выберите любую оболочку, которая использовалась ранее. Если вы не знаете, какую оболочку вы использовали раньше, это почти наверняка bash
. Эта команда изменяет «оболочку входа», связанную с вашим пользователем. По существу, она изменяет оболочку по умолчанию.
Чтобы изменения вступили в силу, необходимо открыть новое окно терминала. Если это не сработает, потребуется выйти из системы и снова войти в систему для повторной инициализации среды.
oh-my-zsh
~/.zshrc.pre-oh-my-zsh
. Наверное, так и есть. (Этот файл будет создан, когда сценарий установки oh-my-zsh
переместит предыдущий файл .zshrc
из пути. .zshrc
является файлом запуска zsh
, аналогично .bashrc
для bash
.) mv ~/.zshrc ~/.zshrc.oh-my-zsh
. Это выведет oh-my-zsh
-созданный .zshrc
из пути, чтобы мы могли восстановить оригинал, выполнив mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc
. ~/.zshrc
в текстовом редакторе. Найдите строку с текстом source $ ZSH/.oh-my-zsh
и либо прокомментируйте ее, либо удалите. Это приведет к отключению инициализации oh-my-zsh
. Чтобы изменения вступили в силу, необходимо перезапустить оболочку.
Вы можете указать zsh загружать конфигурационные файлы для каждого пользователя из другого каталога, установив переменную окружения ZDOTDIR
перед запуском zsh.
Если вы хотите запустить zsh без загрузки конфигурационных файлов, установите ZDOTDIR
в несуществующую директорию. Если вы хотите пропустить файлы системной конфигурации (кроме /etc/zshenv
), можно запустить zsh -f
. Если вы хотите пропустить файлы системной конфигурации, но запустить файлы для каждого пользователя, запустите zsh -d
.
Например, если вы хотите протестировать диск oh-my-zsh, не делая его установленным по умолчанию, не помещайте .zshrc
из oh-my-zsh в ваш домашний каталог. Вместо этого поместите его куда-нибудь еще, например, в ~/.oh-my-zsh
, а затем запустите ZDOTDIR=~/.oh-my-zsh zsh
, когда захотите использовать oh-my-zsh.
Терминальные приложения запускают оболочку, на которую указывает переменная окружения SHELL
. Если эта переменная не установлена, они запускают оболочку, указанную в пользовательской базе данных (/etc/passwd
). При запуске эмулятора терминала можно запросить другое приложение, например xterm -e fish
.
ZSH Config Switching
Если вы хотите протестировать различные фреймворки конфигурации zsh (oh-my-zsh, zprezto и т.д.) и переключаться между ними, лучше всего использовать символические ссылки для ~/. zsh
, ~/.zshrc
, ~/.zlogin
, ~/.zlogout
, ~/.zprofile
, и ~/.zshenv
. Вы можете создать скрипты оболочки для каждого фреймворка, чтобы создать эти симлинки для более быстрого переключения.
Положите свои конфигурации фреймворка в свои собственные папки. Для каждого фреймворка
~/.zsh
, тогда
~/.zsh
. Либо
~/.zsh
симлинк; rm ~/.zsh
, или ~/.zsh
; mv ~/.zsh ~/.zsh. backup
mv ~/.zsh ~/.oh-my-zsh
.Как только это будет сделано, создать скрипт оболочки для каждого фреймворка, чтобы создать необходимые симлинки. Вот пример для zprezto, так как я его уже использую.
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zprezto
#!/bin/bash
SYMLINKS=".zsh .zshrc .zshlogin .zshlogout .zshprofile .zpreztorc .zshenv .zshrc"
CONFIG_HOME="$HOME/.zprezto"
# check for unexpected error conditions
for sym in $SYMLINKS; do
# report an error and quit if $sym exists and is not a symlink
[[ -e "$HOME/$sym" -a ! -h "$HOME/$sym" ]] && { echo "error: '$HOME/$sym' is not a symlink!"; return 1; }
done
# now create the symlinks now that nothing should go wrong
for sym in $SYMLINKS; do
# remove old symlink if it exists
[[ -h "$HOME/$sym" ]] && rm -f "$HOME/$sym"
# create new symlink
ln -s "$CONFIG_HOME/$sym" "$HOME/$sym"
done
# uncomment next line to start a new zsh shell. CAUTION: each call is a zsh shell inside a zsh shell. Too many calls will put you in limbo :D
#/usr/bin/env zsh
EOF
$ chmod 700 ~/bin/use-zprezto
Этот скрипт довольно прост и полагается на то, что все мои симлинки организованы по одному шаблону. Вы можете скопировать и вставить remove и создать строки после цикла для имеющихся у вас симлинков, которые не следуют шаблону.
После этого используйте ~/bin/use-zprezto
-- или ~/bin/use-wevereverever
- для переключения между zsh-фреймворками.
Обратите внимание, что изменения вступают в силу только в новых оболочках zsh, а не в существующих.
Переключение между оболочками
Это немного опасно, но если вы так наклоняетесь, вы можете использовать симлинк для команды оболочки и установить симлинк в качестве оболочки по умолчанию. Затем вы можете использовать скриптовый метод use-*
выше, чтобы изменить вашу оболочку по умолчанию.
В качестве примера с zsh...
$ mkdir ~/bin
$ cat <<EOF > ~/bin/use-zsh
#!/bin/bash
# check for valid shell symlink
if [[ ! -h "$HOME/.shell" ]]; then
echo "error: $HOME/.shell is not a symlink!"
return 1
fi
# remove existing shell symlink if it exists
[[ -h "$HOME/.shell" ]] && rm -f "$HOME/.shell"
# create new shell symlink, but warn user if this fails!
if ! ln -s /usr/bin/zsh "$HOME/.shell"; then
echo "ERROR: failed to create $HOME/.shell symlink. Manually create the symlink or future logins will fail!."
return 2
fi
EOF
$ chmod 700 ~/bin/use-zsh
Причина, по которой это опасно, заключается в том, что вы не можете войти под пользователем, если оболочка, хранящаяся в /etc/passwd
, не является действительной программой. Поэтому вы можете заблокировать свою учетную запись, если не будете осторожны; т.е. ваша сим-ссылка ~/.shell
разорвана или не указывает на интерактивную программу. Вы можете попробовать это с учетной записью пользователя, но это НЕ РЕКОМЕНДУЕТСЯ для Вашей учетной записи root
.
Если вы все еще хотите продолжить, то
$ ~/bin/use-zsh # ensures ~/.shell exists for chsh
$ echo "$HOME/.shell | sudo tee -a /etc/shells # add symlink to system's list of valid shells
$ chsh -s ~/.shell # changes default shell in /etc/passwd for $USER
Чтобы вручную установить новую оболочку по умолчанию, выполните chsh -s /my/ новый/оболочка, например, chsh -s /bin/bash. Затем просто снова откройте свои оболочки.
Поскольку это немного скрыто в @Gilles, ответьте на быстрый способ загрузки zsh без какой-либо конфигурации, например..zshrc.zshenv и т. д.
zsh -f
Это полезно, когда вы хотите проверить, не препятствует ли что-либо в вашей конфигурации работе некоторых функций zsh.
в моем случае я хотел отключить поведение ohmyzsh -только при монтировании nfs. Приглашение ohmyzsh (со статусом git )вызывало ужасные задержки. Но я не хотел отключать все настройки zsh из-за запуска с -f
С помощью ответа Жиля я сделал следующее:
~/.zprofile
вzsh/.zshrc
zsh/.zshrc
ZDOTDIR=$HOME/zsh zsh
Теперь zsh загружается со всеми настройками и псевдонимами обычного.zprofile. Имейте в виду, что изменения в.zprofile не отражаются в zsh/.zshrc. При необходимости это должно быть решено с помощью include.