Как добавить горячую клавишу -в строку чтения для zsh или bash, которая заполняет второй параметр для копирования, но с расширением.bak?

Вы полностью упускаете суть/философию того, как Linux использует оперативную память.

Оперативная память является потраченным впустую ресурсом, если она полностью свободна и ОС вынуждена обращаться к жесткому диску за файлами,поэтому в Linux он поддерживает буферы и кеш, которые агрессивно используют ОЗУ для повышения производительности.

Эта оперативная память может быть использована процессом в любое время (она фактически кэшируется ).

Reading from a disk is very slow compared to accessing (real) memory. In addition, it is common to read the same part of a disk several times during relatively short periods of time. For example, one might first read an e-mail message, then read the letter into an editor when replying to it, then make the mail program read it again when copying it to a folder. Or, consider how often the command ls might be run on a system with many users. By reading the information from disk only once and then keeping it in memory until no longer needed, one can speed up all but the first read. This is called disk buffering, and the memory used for the purpose is called the buffer cache.

Reference: http://www.tldp.org/LDP/sag/html/buffer-cache.html

Пример

$ free -hw
              total        used        free      shared     buffers       cache   available
Mem:           992M         76M        202M         12M         68M        645M        739M
Swap:          2.0G          0B        2.0G

В этом выводе моя виртуальная машина имеет ~992 МБ, из которых кажется, что у нее есть только 202 МБ свободного места. Но именно здесь многие путаются/вводятся в заблуждение.

Эта система Linux фактически имеет 739 МБ свободного (доступного столбца ).

Как это возможно?

Просто. Linux использует ОЗУ для повышения производительности за счет хранения файлов, библиотек и т. д. в ОЗУ (, буферах и кеше ), вместо того, чтобы каждый раз обращаться к медленному жесткому диску для извлечения этих файлов.

Буферы и кэш используются ядром Linux таким образом, и в любой момент, если диспетчер памяти (часть ядра )ощущает нагрузку, когда процессам требуется все больше и больше оперативной памяти, ядро ​​может буквально удалить любые данные, которые кэшируются здесь, чтобы немедленно получить больше оперативной памяти.

Ваш вопрос

Что касается вашего вопроса о скрипте clearcache.sh. Ответ прост. Это опечатка автора статьи. Так и должно быть:

$ echo "echo 3 > /proc/sys/vm/drop_caches" | sudo sh

Возможно, они неправильно скопировали/вставили мой ответ на вопросы и ответы U&L на этот вопрос.:Как очистить буферы и кеш в системе Linux?

Ссылки

1
26.08.2020, 20:21
1 ответ

В этом случае в bash или zsh вы можете ввести команду как

cp file.txt.1{,.bak}

Это расширение фигурной скобки .

Для случаев, когда раскрытие фигурных скобок неудобно, потому что вы хотите больше редактировать второй аргумент, в zsh есть команда copy-prev-word, привязанная к Ctrl + Alt +из коробки. Он вставляет копию слова, непосредственно предшествующего курсору. Обязательно введите пробел перед Ctrl + Alt +. Вы можете предпочесть связать copy-prev-shell-word, что обычно более полезно.

bindkey '^[^_' copy-prev-shell-word

В bash или zsh, чтобы повторить последнее слово в командной строке, начиная с конца строки, убедитесь, что строка заканчивается пробелом, и нажмите Alt + BCtrl + KCtrl + YCtrl + Y . Это дважды вырезает и вставляет последнее слово плюс завершающий пробел. В качестве альтернативы, если строка не заканчивается пробелом, нажмите Alt + BВлевоCtrl + KCtrl + YCtrl + Y . Это работает, только если последний аргумент не содержит пробелов; если это так, вам нужно вернуться немного дальше. Вы можете заменить Alt + B на Ctrl + Left , если это работает на вашей установке.

2
18.03.2021, 23:09

Теги

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