Я скопировал свой пароль в буфер обмена! Вы можете удалить это?

96

Следуя лучшим правилам безопасности , я сохраняю простой текстовый файл с моими паролями на жестком диске. Фактически, я просто скопировал и вставил один из них, чтобы получить доступ к моей учетной записи PPCG.

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

Вызов

Напишите программу или функцию, которая удаляет или перезаписывает любой текст, содержащийся в буфере обмена, используя язык программирования по вашему выбору.

Дополнительные детали:

  • Если в вашей системе есть несколько буферов обмена, вы можете написать программу для любого из них. Единственное требование состоит в том, что пользователь должен иметь возможность копировать и вставлять текст с использованием этого буфера обмена.

  • Если в вашем буфере обмена хранится история последних скопированных записей, предположите самую последнюю запись.

  • Если ваш ответ относится к операционной системе или буферу обмена, укажите его в заголовке вашего сообщения вместе с используемым языком.

  • Буфер обмена гарантированно содержит текст при запуске вашей программы. Вы можете удалить содержимое из буфера обмена или перезаписать его чем-то другим (необязательно текстом). Единственное требование состоит в том, что после запуска программы вставка из буфера обмена не приведет к получению исходного текста.

  • Если вы решите перезаписать некоторый фиксированный или случайно выбранный текст, вы можете предположить, что предыдущее содержимое буфера обмена отличается от этого текста, поэтому пароль эффективно удаляется. Другими словами, не обращайте внимания на возможность совпадения текста заполнителя с паролем.

  • Программа не должна иметь побочных эффектов, таких как перезапуск системы, закрытие программ, выключение компьютера или его зависание. После запуска вашей программы пользователь сможет продолжать пользоваться компьютером в обычном режиме, только с удаленным из буфера обмена паролем. Кроме того, стандартные лазейки запрещены.

Самый короткий код в байтах побеждает.

Луис Мендо
источник
Что если в буфере обмена имеется неопределенное количество записей?
LarsW
20
На более серьезной ноте: используйте что-то вроде keepass, чтобы сделать это для вас.
flawr
17
«Не обращайте внимания на возможность совпадения текста заполнителя с паролем». Решение: ``, 0 байтов. Перезаписывает пароль на себя.
Esolanging Fruit
2
@ Challenger5, но это только если вы решите перезаписать какой-нибудь фиксированный или случайно выбранный текст
Луис Мендо
11
Самое худшее в этом вопросе - это то, что я могу полностью относиться к вступительной истории, хотя знаю, что она сатирическая. ... так держать, а? Должен посмотреть на это ...
Nat

Ответы:

14

Excel, 1 нажатие клавиши

Ctrl-C

Работает потому, что в Excel всегда есть выбор. Возможно, работает и в других приложениях для работы с электронными таблицами. В отличие от других шутливых записей, ответы в формате Excel на PPCG довольно часты.

Адам
источник
2
Разве это не 2 нажатия клавиш? «Нажатие клавиши - это одно нажатие клавиши на клавиатуре. Каждое нажатие клавиши - это нажатие клавиши». computerhope.com/jargon/k/keystroke.htm
Мартейн
@ Martijn Возможно. Я только что скопировал отсюда .
Адам
Я не уверен, что это действительно справедливо - набирать очки. Кроме того, так как вы говорите, в отличие от других шутливых записей , я понимаю, что, как вы признаете, это не совсем правильный ответ. Так что я не приму это, даже если оно самое короткое. Если вы можете указать мне на какой-нибудь соответствующий мета-пост, устанавливающий обоснованность нажатий клавиш в качестве метода подсчета очков, я с радостью приму это представление
Луис Мендо,
@LuisMendo Ваш промежуточный анализ верен, но теперь, когда я действительно потратил время на исследование Meta ro: codegolf.meta.stackexchange.com/a/4817/43319 , похоже, указывает на то, что он приемлем, в отличие от «Windows», которая не является редактором.
Адам
@ Адам Мое понимание , что это , что мета-сообщение относится к гипотетической «Редактор гольф» вызов категории , не используя количество нажатий клавиш в качестве метода подсчета очков для «код гольфа» вызовы. Я пингнул дверную ручку и Денниса, чтобы узнать их мнение
Луис Мендо,
123

PowerShell, 3 байта

scb

Это псевдоним по умолчанию для Set-Clipboard. Когда вызывается без ввода данных и аргументов, он удаляет текущее содержимое буфера обмена.

Бен Н
источник
23
Самый короткий ответ, который на самом деле очищает буфер обмена вместо установки новой строки или чего-то не совсем пустого.
Луна
1
Это очень мило.
beppe9000
72

Vim, 3 байта

"*Y

Устанавливает содержимое буфера обмена на новую строку.

По умолчанию vim открывает пустой буфер при запуске. Теперь программа Yкопирует (копирует) всю строку (включая новую строку) и сохраняет ее в буфере обмена, вставляя текст в регистр "*. *Может быть изменено на +для другого буфера обмена.

Kritixi Lithos
источник
6
Ааааа, я просто собирался опубликовать этот ответ! +1, правильный инструмент для работы. :)
DJMcMayhem
Если существует больше установок vim, чем powershell, это должен быть принятый ответ на основе «Универсальности»;)
JPCF
1
@JPCF, и на C # написано гораздо больше «реальных» приложений, чем на coffeescript и т. Д. Это не делает одно лучше другого, когда дело доходит до код-гольфа
Baldrickk
1
Я сомневаюсь, что существует больше установок vim, чем PowerShell, так как он установлен по умолчанию в Windows 8 и выше.
Роберт Фрейзер
56

Javascript (консоль Chrome DevTools), 6 байт

copy``

Обратите внимание, что это особенность консоли (которая также работает в консоли FF) и не является частью языкового стандарта.

SuperJedi224
источник
3
Да, я не знал, что JS имеет эту функцию. Работает в Firefox тоже. (Содержимое буфера обмена становится [\n ""\n])
ETHproductions
1
Можно подтвердить это и на Chrome. Буфер обмена меняется на:[\n ""\n ]
haykam
32
@ETHproductions На самом деле, эта функция на самом деле не существует в JS. Это консоль встроенная. (Который не лишает законной силы ответ. Но, возможно, его следует объяснить более подробно.)
Арно
Ну, разве он не существует Document.execCommand("copy")или это буфер обмена внутри браузера? Я использую это в некоторых скриптах обезьян, но лень это проверять
pinkfloydx33
1
Хорошо ... теперь это мой новый самый голосующий ответ
SuperJedi224
55

AppleScript, 20 байт

set the clipboard to

Устанавливает буфер обмена в ... ничего.


Я сэкономил много байтов, удалив код, чтобы отправить мне содержимое буфера обмена;)

лавр благородный
источник
32

Пакетная (Windows 7 и более поздняя версия), 7 байт

fc|clip

Примечание: он ответит сообщением об ошибке типа «FC: ...», но работает.

«clip» - это команда для копирования вывода другой программы в буфер обмена (доступно начиная с windows 7)

«fc» - это команда для сравнения двух или более файлов. в этом случае мы не вводим никакой файл. это будет ошибка, тогда "клип" установит буфер обмена в пустую строку.

при условии, что у вас есть файл «a» в вашем текущем каталоге (он может быть пустым), вы можете сделать это лучше:

clip<a

Изменить: см. Комментарий @Matthew Steeples для более короткой версии (но в PowerShell не пакет)

Divcy
источник
2
Вы можете использовать scвместо того, fcчтобы избежать сообщения об ошибке. Затем scтекст справки будет установлен в буфер обмена. Также +1 за рассказ clip.
Нил
2
Мой использовал cd. :-)
Hand-E-Food
Я предполагаю, что клип не получит вывод без команды? Так ты не мог просто бежать x|clip?
djsmiley2k - CoW
@ djsmiley2k Да, он получит только выходные данные действительной команды.
Divcy
4
Вы можете выбить другого персонажа из этого. hэто псевдоним (по умолчанию) для get-history, так что вы можете сделатьh|clip
Мэтью Стиплз
32

Bash на macOS, 8 байт

:|pbcopy

: можно заменить почти любым другим отдельным символом.

овс
источник
6
:|pbcopyработает как в bash, так и в zsh.
Цифровая травма
@Nax это исправлено сейчас
кошка
29

C (в Windows) 65 62 байта

#include<windows.h>
main(){OpenClipboard(0);EmptyClipboard();}

Редактировать: 3 байта сохранены благодаря @Orion.

Нил
источник
24
Так как это C, вы не можете использовать 0вместо NULL?
Орион
23

AHK , 10 байт(Windows)

clipboard=

Очищает текстовое содержимое буфера обмена. Если clipboardAllиспользуется, это очищает все.

Из документов -

Буфер обмена - это встроенная переменная, которая отражает текущее содержимое буфера обмена Windows, если оно может быть выражено в виде текста. Напротив, ClipboardAll содержит все в буфере обмена, такие как изображения и форматирование.

Гурупад Мамадапур
источник
22

Java 8, 127 125 байт

Golfed:

()->java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new java.awt.datatransfer.StringSelection(""),null)

Ungolfed:

public class ICopiedMyPasswordToTheClipboardCanYouDeleteIt {

  public static void main(String[] args) {
    f(() -> java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
      new java.awt.datatransfer.StringSelection(""), null));
  }

  private static void f(Runnable x) {
    x.run();
  }
}

источник
2
Не могли бы вы использовать пустую строку вместо нуля? Сохраняет 2 байта
Poke
1
@ Да, это работает. Я сосредоточился на «удалении» содержимого буфера обмена, как на самом деле очистить их. Оказывается, перезапись тоже хорошо.
17

SmileBASIC 3, 10 байт

Наконец, задача, практически сделанная для SmileBASIC 3!

CLIPBOARD"

CLIPBOARDявляется встроенным, который устанавливает текстовый буфер обмена среды для данной строки. Здесь мы даем ему пустую строку (закрытие "не требуется!)

snail_
источник
Спасибо за объяснение, так как это выглядит как два '!
MSANFORD
17

Excel VBA, 9 8 байт

[A1].Cut

Перезаписывает буфер обмена содержимым A1ячейки в активном листе (по умолчанию пустым, но может быть любой строкой / выражением по вашему выбору - просто убедитесь, что это не ваш пароль!).

Использует непосредственное окно.

Один байт спасен благодаря Слай

pajonk
источник
1
Приятно! Вы можете сохранить байты с[a1].Cut
Slai
16

Python 56 48 40 байт (работает только в Linux) .

8 байтов сохранено благодаря @wheatwizard.

import os as o
o.system("echo|xclip")
hubacub
источник
1
Добро пожаловать на сайт! Я заметил несколько гольфов, которые вы можете сделать. вместо того, чтобы импортировать systemиз osвас можно import os as oи позвонить o.systemвместо. Вам также не нужны пробелы вокруг вашей трубы в команде bash.
Пшеничный волшебник
35
Это на 6 байт короче без as oчасти ... ( import os \n os.system("echo |xclip")
Rɪᴋᴇʀ
4
Кроме того, можно заменить echo с :на":|xclip"
Rɪᴋᴇʀ
22
Или только одна строка в 37 байтов:__import__('os').system("echo|xclip")
Даниэль
4
Там же альтернатива xclipназывается xselна системах Linux, что позволит сэкономить вам еще один байт - и , как уже упоминалось, удалить « как O» часть импорта опять же , это только делает вещи больше: import os;os.system(":|xsel")(29 байт).
Byte Commander
14

Google Chrome Language, 2 нажатия клавиш

<c-S><c-C>

Основываясь на этом ответе Notepad ++.

Google Chrome поддерживает Javascript (который, в свою очередь, поддерживает RegExp), поэтому я заявляю, что это расширенный набор Javascript и его собственный язык.

Как это устроено:

Ctrl+Sвызовет диалог «Сохранить страницу» с предварительно выбранным текстом «Новая вкладка», Ctrl+Cскопирует его в буфер обмена, сместив предыдущий контент.

Примечание:

Вы можете получить доступ к функциональности Javascript в Chrome через javascript:URL-адреса и консоль инструментов разработчика (вызывается с помощью Ctrl + Shift + J)

дирижабль
источник
Ага, я хотел использовать Google Chrome, но я не понимал, что могу поспорить, что это суперсет JS ... хорошо сыграно.
Павел
8
Тогда я думаю, что нажатие кнопки Print Screen (1 нажатие клавиши) - это решение на языке Windows, которое является надмножеством Google Chrome Lang.
Мемет Олсен
@MemetOlsen Да, точно, не стесняйтесь отправлять это. У нас уже есть «Язык Блокнота ++» и «Язык Google Chrome», поэтому «Язык Windows» кажется следующим логическим шагом! :)
дирижабль
1
@ MemetOlsen - это не совсем расширенный вариант Google Chrome Lang, поскольку Chrome - это внешняя «библиотека», которую вы должны загрузить. Это является надмножеством IE Ланга, который является надмножеством JS.
Павел
Спасибо, ребята, я добавил свое предложение в качестве первого ответа на этом сайте SE.
Мемет Олсен
11

bash + xsel 8 7 байтов

xsel -c

объяснение

-b: Работает над выбором буфера обмена

-c: очищает выбор

Абель Том
источник
1
+1, но это не Coreutils
pacholik
@pacholik Да, вам нужно установить пакет, так как я управлял им на терминале, я упомянул его как coreutils.
Авель Том
1
В Debian xsel находится в пакете xsel, а не в составе coreutils.
Брайан Минтон
Поскольку нам разрешено использовать любой буфер обмена, который мы хотим, я думаю, вы можете отказаться от b.
Деннис
@ Цифровая травма Достаточно справедливо
Абель Том
10

Mathematica, 17 байт

CopyToClipboard@0

Устанавливает буфер обмена на номер 0.

Юнг Хван Мин
источник
10

R (Windows) 18

writeClipboard("")
Flounderer
источник
Вы знаете эквивалент Linux?
Я думаю, что-то подобное readLines(file("clipboard", "r")) может сработать. Попробуйте просмотреть справочные документы R в разделе «Функции для управления соединениями».
Камбала
8

Matlab, 19 13 байт

gcf;print -dm

Установите содержимое буфера обмена на пустую фигуру.

EBH
источник
Это 21 байт UTF-8
CAD97,
@LuisMendo Это дольше (23): axes;print -dmeta;closeно также работает ...
EBH
@EBH Это closeможет быть удалено. Под «побочными эффектами» я думал, что вещи исчезают, а не появляются. Также print(gcf,'-dm')работает
Луис Мендо
@ LuisMendo Ну, я не знал, что -dmэто похоже -dmeta, и думал, что программа должна работать «тихо», не открывая окно :)
EBH
2
@ LuisMendo действительно, это мой первый. Теперь предложение еще короче.
EBH
8

Баш, 11 10 8 7 байт

2 байта сохранены благодаря @seshoumara за использование lsвместоecho

Благодаря hexafraction, isaacg и Riker за предложение по 7 байт

w|xclip

Буфер обмена устанавливается на результат w. Это работает только на системах на основе X11. Например, в macOS к этому буферу обмена можно получить доступ с помощью приложения на основе X, такого как XQuartz.


Старый ответ только для macOS ( 11 9 байт):

ls|pbcopy

Это устанавливает содержимое буфера обмена на новую строку.

Kritixi Lithos
источник
Как насчет ls|xclip?
Сешумара
@seshoumara Спасибо! (и подумать, что я ls /usr/bin | grep "^.\{1,3\}$"должен искать более короткую команду: P)
Kritixi Lithos
3
Или w|xclipдля одного меньше. Выводит список зарегистрированных пользователей в буфер обмена.
ζ--
4
Или :|xclip. На самом деле очищает буфер обмена.
Исаак
1
Да, работает на моей машине. А так как представления могут ожидать пустой ввод, то же самое можно ожидать и с пустыми xclipканалами.
Деннис
7

Python + ткинтер, 43 байта

Python 3:

from tkinter import*;Tk().clipboard_clear()

Python 2:

from Tkinter import*;Tk().clipboard_clear()
Trelzevir
источник
tkinter включен в дистрибутив питона?
Cruncher
@Cruncher Это у меня в Python 3.
DLosc
@Cruncher Да, это часть stdlib, хотя я считаю, что debian упаковывает его в отдельный пакет ( python-tk) из «основного питона».
Бакуриу
Взгляните на комментарий Допаппа для еще более короткого пути.
jpaugh
@jpaugh Если вы имеете в виду изменение стиля импорта на __import__("tkinter")...., в данном случае это на 1 байт больше.
Трелзевир
7

C #, 30 байтов

Спасибо Nat , JMD и BgrWorker за их предложения!

System.Windows.Clipboard.Clear

C # без WPF, 36 байт

System.Windows.Forms.Clipboard.Clear

Встроенная функция, которая очищает буфер обмена.

Полная программа с тестовым набором:

using System;
using System.Windows.Forms;

class ClearClipboard
{
    static void Main()
    {
        Action f =
        ()=>System.Windows.Forms.Clipboard.Clear();

        // test case:
        Clipboard.SetText("SomePassword!");
        Console.WriteLine("In clipboard initially: " + Clipboard.GetText());
        f();
        Console.WriteLine("In clipboard now: " + Clipboard.GetText());
    }
}
adrianmp
источник
4
Также Clipboard.Clear()уже есть функция, поэтому лямбда может быть отброшена.
Nat
1
Я не буду беспокоиться о добавлении ответа для LINQPad, так как этот ответ просто запустится в нем. System.Windows.Clipboard.Clear();Но lprun может быть более легким способом выполнения этого ответа, чем VS или даже VS Code.
JMD
@Nat Если опустить .Forms, он не компилировался в Linux, и у меня нет машины с Windows на данный момент.
adrianmp
2
@adrianmp этот класс содержится только в PresentationCore.dll, ссылка, добавленная по умолчанию для проектов типа WPF. Я понятия не имею, включен ли этот dll в Mono / .NET Core
BgrWorker
6

Haskell, 34 байта

import System.Hclip
setClipboard""

Просто скучная библиотечная функция. Там также clearClipboardдля того же количества байтов.

Ними
источник
6

Блокнот ++, 3 нажатия клавиш

a<c-A><c-C>

Вставляет букву а, выделяет ее, копирует на клавиатуру.

Notepad ++ является допустимым языком, он поддерживает регулярные выражения и поэтому является расширенным набором регулярных выражений, и мы считаем регулярное выражение допустимым языком.

Павел
источник
consider regex to be a valid languageРекомендации ? По-видимому, RegExp не является полным по Тьюрингу.
Цеппелин
2
@zeppelin Это не обязательно должен быть Turing Complete, чтобы быть действительным языком.
Павел
It doesn't have to be Turing Complete to be a valid languageПо этой мере мы можем утверждать, что почти все является «языком». Т.е. XML или HTML тоже имеют синтаксис (и даже называют себя языками, в отличие от RegExp), тем не менее я не думаю, что они приемлемы. Можете ли вы привести пример чисто регулярного ответа, который был одобрен сообществом? Более того, я полагаю, что Notepad ++ на самом деле не «поддерживает регулярное выражение» в том смысле, что он может вызывать его программно, и открытие поля «Поиск и замена» пользовательского интерфейса для ввода RegExp там не является «программным кодом» по каким-либо показателям.
дирижабль
1
@zeppelin meta.codegolf.stackexchange.com/a/4817/60042 <- соответствующий мета-пост. Помните, что вы можете получить доступ к поиску и замене в N ++ с помощью <c-H>и использовать <tab>для навигации по пользовательскому интерфейсу и взаимодействия со всеми соответствующими полями. Также обратите внимание, что регулярное выражение может определять простоту и добавлять числа. (Оба в
Павел
метапост, о котором идет речь, относится к редакторам классов Vim и Emacs, которые чрезвычайно программируемы, а не к Notepad. И да, я видел, как люди используют RegExp для тестирования простоты на этом сайте, но это всего лишь забавный случай, а не реальное доказательство того, что RegExp является языком. Поэтому, пожалуйста, предоставьте ссылку на любой ответ «чистый-Regexp», чтобы подтвердить свою точку зрения.
дирижабль
6

Python 33 байта (работает только в Windows) .

4 байта сохранены из версии @hubacub.

3 байта для переключения на окна с использованием решения @Divcy

import os
os.system("fc|clip")

Я только что зарегистрировался в stackexchange, поэтому у меня нет репутации, чтобы просто комментировать подпись @hubacub. Нет необходимости тратить 5 байтов с «as o» в импорте, чтобы сэкономить 1 байт, чтобы уменьшить «os.system» до «o.system».

Мартин Мейер
источник
Добро пожаловать на сайт!
Луис Мендо
6

J (Windows), 12 байт

wd'clipcopy'

wdстандартная библиотека J для Windows. wd 'clipcopy password'положил бы текст passwordв буфер обмена. Указание ничего не стирает буфер обмена.

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

pass =. 'abc123'
wd 'clipcopy ' , pass
датчанин
источник
Это не функция или программа заполнения, а скорее фрагмент. Вы должны сделать это глаголом, чтобы он был действительным. Вы могли бы сделать что-то вроде'clipcopy 'wd@,]
Конор О'Брайен
Какое «это» вы имеете в виду? Оба фрагмента кода являются исполняемыми файлами .ijs.
датчанин
Я мог бы просто неправильно понял. Извини насчет этого, ха-ха. Во всяком случае, вы можете удалить пространство между wdи 'clipcopy'.
Конор О'Брайен,
Спасибо! Сбрил байт. Я так привык к пробелам, чтобы помочь мне читать J, что даже не думал об этом.
датчанин
5

JavaScript 175 148 139 135 69 байт

Golfed:

<input value="c"onclick="this.select();document.execCommand('copy')">

скрипка

Ungolfed

Получил помощь от SitePoint

HTML:

<input style="display: none;" id="Empty" value="x">
<input id="clipclear" type="button" value="Clear The Clipboard">

JS:

function clearclip(){
empty=document.getElementById("Empty");
empty.style.display="block";
empty.select();
        document.execCommand('copy');
empty.style.display="none";
}      
document.getElementById("clipclear").addEventListener("click", clearclip, false);
TecBrat
источник
Проверено в FF и Chrome
TecBrat
1
Не публикуйте, пока не начнете играть в гольф. Сейчас вы можете удалить свой ответ, отредактировать его для игры в гольф, а затем удалить свой ответ.
NoOneIsHere
@ NoOneIsHere, хорошо, я пошел вперед и поиграл в гольф. Вот новая скрипка .
TecBrat
1
Вместо комментирования, пожалуйста, отредактируйте скрипку в своем ответе. Кроме того, отличная работа в гольф. Я дал тебе +1. (К вашему сведению, язык технически HTML + JavaScript.)
NoOneIsHere
5

Java 8 (JavaFX), 61 байт

()->javafx.scene.input.Clipboard.getSystemClipboard().clear()

API JavaFX для работы с буфером обмена немного более лаконичен, чем AWT;)

Xenotoad
источник
5

Tcl / Tk wish shell (REPL), 5 байтов

cli c

Оболочка желаний (REPL) допускает незавершенные команды, если нет двусмысленности, полная команда будет:

clipboard clear
дирижабль
источник
4

PHP + PHP GTK 2.0 , 24 байта

Это предполагает, что у вас уже загружено расширение PHP GTK.

<?GtkClipboard::clear();

Ссылка на документацию: http://gtk.php.net/manual/en/html/gtk/gtk.gtkclipboard.method.clear.html

Исмаэль Мигель
источник
Вам не нужен открывающий <?тег, так как вы можете запустить код без <?тега в командной строке с -rпереключателем. См. Дополнительную информацию здесь: meta.codegolf.stackexchange.com/questions/7098/…
Кодос Джонсон,
@KodosJohnson Я специально оставил там открывающий тег.
Исмаэль Мигель
@KodosJohnson Ему все равно придется добавить байты во флаги.
ckjbgames
@ckjbgames Нет, я бы не стал. Флаг бесплатный. Я не изменил код, потому что я намеренно оставил открывающие теги.
Исмаэль Мигель
@IsmaelMiguel Я видел, как люди добавляли флаги интерпретатора / компилятора к количеству байтов.
ckjbgames