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


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копирует (копирует) всю строку (включая новую строку) и сохраняет ее в буфере обмена, вставляя текст в регистр "*. *Может быть изменено на +для другого буфера обмена.


6
Ааааа, я просто собирался опубликовать этот ответ! +1, правильный инструмент для работы. :)
DJMcMayhem

Если существует больше установок vim, чем powershell, это должен быть принятый ответ на основе «Универсальности»;)
JPCF

1
@JPCF, и на C # написано гораздо больше «реальных» приложений, чем на coffeescript и т. Д. Это не делает одно лучше другого, когда дело доходит до код-гольфа
Baldrickk

1
Я сомневаюсь, что существует больше установок vim, чем PowerShell, так как он установлен по умолчанию в Windows 8 и выше.
Роберт Фрейзер

56

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

copy``

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


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 не пакет)


2
Вы можете использовать scвместо того, fcчтобы избежать сообщения об ошибке. Затем scтекст справки будет установлен в буфер обмена. Также +1 за рассказ clip.
Нил

2
Мой использовал cd. :-)
Hand-E-Food

Я предполагаю, что клип не получит вывод без команды? Так ты не мог просто бежать x|clip?
djsmiley2k - CoW

@ djsmiley2k Да, он получит только выходные данные действительной команды.
Divcy

4
Вы можете выбить другого персонажа из этого. hэто псевдоним (по умолчанию) для get-history, так что вы можете сделатьh|clip
Мэтью Стиплз


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является встроенным, который устанавливает текстовый буфер обмена среды для данной строки. Здесь мы даем ему пустую строку (закрытие "не требуется!)


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

17

Excel VBA, 9 8 байт

[A1].Cut

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

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

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


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

16

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

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

import os as o
o.system("echo|xclip")

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

R (Windows) 18

writeClipboard("")

Вы знаете эквивалент Linux?

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

8

Matlab, 19 13 байт

gcf;print -dm

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


Это 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

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


Как насчет 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()

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());
    }
}


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);


Проверено в 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;)


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.