Pipa verso / dagli Appunti nello script Bash


946

È possibile eseguire il pipe negli / dagli Appunti in Bash?

Che si tratti di eseguire il piping da / verso un handle di dispositivo o di utilizzare un'applicazione ausiliaria, non riesco a trovare nulla.

Ad esempio, se /dev/clipfosse un dispositivo collegato agli Appunti potremmo fare:

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard

3
Sto usando :%y+in vim, che è vim-speak per "yank (copia) tutte le righe nel registro '+' (gli PRIMARYappunti X )". È possibile sostituire %con un intervallo se si desidera essere specifici. Ma ci sono tre avvertenze: 1. Ora devi salvare qualsiasi testo in un file prima di poterlo copiare. Ciò è in contrasto con il xclipcomando menzionato nelle risposte. 2. Se non sai già come vim, questo potrebbe essere noioso. 3. Puoi farlo solo se una determinata funzione è abilitata durante la compilazione di vim. Se installi GVim, dovrebbe essere abilitato di default in entrambe le istanze GUI e terminali di vim.
Braden Best

1
@BradenBest dovresti inserirlo come risposta. Sono in un ambiente NIX e non sono riuscito a installarlo xclip. La tua risposta ha funzionato come un fascino.
HankCa,

@HankCa Va bene, ho pubblicato una risposta . Ditemi cosa ne pensate.
Braden Best,

@BradenBest è una risposta molto completa. Mi piaceva solo :%y+quello ma ok, hai coperto tutte le basi! Buona
HankCa,

Un'altra opzione: usare un piccolo script perl: nessuna installazione richiesta. Vedi la mia risposta qui sotto .
VonC,

Risposte:


863

Ci sono molti appunti che potresti avere a che fare. Mi aspetto che tu sia probabilmente un utente Linux che vuole mettere cose negli Appunti primari di X Windows. Di solito, gli appunti con cui vuoi parlare hanno un'utilità che ti consente di parlarci.

Nel caso di X, c'è xclip(e altri). xclip -selection cinvierà i dati negli Appunti con cui funziona Ctrl + C, Ctrl + Vnella maggior parte delle applicazioni.

Se sei su Mac OS X, c'è pbcopy. per esempiocat example.txt | pbcopy

Se sei in modalità terminale Linux (no X), guarda gpmo fai uno schermo con degli appunti. Prova il screencomando readreg.

In Windows 10+ o cygwin, utilizzare /dev/clipboardo clip.



24
su Windows, /dev/clipboardfunziona anche con shell bash Msys / MinGW
Mihai Rotaru

71
Si noti che xclip -selection cinvierà i dati negli Appunti che funzionano con ^ C, ^ V nella maggior parte delle applicazioni
Klaas van Schelven

31
nelle versioni più recenti di Windows puoi semplicemente usare in clipquesto modo:dir | clip
maep

11
È triste che GNU / Linux non disponga di un dispositivo del genere /dev/clipboarde costringe a installare xclip o gpm, che di default manca almeno in Kubuntu (immagino anche nella maggior parte delle altre distro) .
Hi-Angel,

282

Assicurati di utilizzare alias xclip="xclip -selection c" altrimenti non puoi semplicemente utilizzare Ctrl+ vper incollarlo nuovamente in un posto diverso.

echo test | xclip    

Ctrl+v === test


1
Come si potrebbe fare per incollarlo senza quell'argomento comando?
Giona il

15
xclip -selection clipboard -o
Doug

32
da quando vado avanti e indietro tra osx e linux ho nei miei dotfile quanto segue. alias pbcopy="xclip -selection c" alias pbpaste="xclip -selection clipboard -o" Spero che aiuti.
Doug

15
@ApockofFork, xclipnon sta aggiungendo una nuova riga, lo echoè. Prova printf test | xclip -i -selection clipboard. (non printfaggiunge una riga a meno che tu non scriva 'test\n'.)
David X

7
Oppure usa echo -ninvece di printf.
Christian Pietsch,

182

Installare

# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

Se non si dispone di accesso alla apt-getpacman, nè dnf, le sorgenti sono disponibili su sourceforge .

Impostare

bash

In ~/.bash_aliases, aggiungi:

alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"

Non dimenticare di caricare la nuova configurazione utilizzando . ~/.bash_aliaseso riavviando il profilo.

Pesce

In ~/.config/fish/config.fish, aggiungi:

abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"

Non dimenticare di riavviare l'istanza di pesce riavviando il terminale per applicare le modifiche.

uso

Ora puoi usare setclipe getclip, ad esempio:

$ echo foo | setclip
$ getclip
foo

3
Per tutte le altre distro: puoi scaricare la fonte da sourceforge.net/projects/xclip
Scz

+1 La migliore soluzione! In Arch, sudo pacman -S xclip. Ma nota che .bashrcnon è il posto migliore. Raccomando all'utente finale di leggere i file bashrc, bash_aliases e .profile corretti e come ciascuno di essi gestisce. Suggerimento: inseriscilo invece in .bash_aliases.
eduncan911,

1
Grazie @ eduncan911! :) Aggiunta l'opzione di utilizzo del pacmangestore pacchetti e rimossa la .bashrcproposta. So che .bash_aliasesè più adattato, ma il risultato finale è lo stesso ( .bashrcrichiede semplicemente .bash_aliasesse esiste). Se le persone vogliono un sistema disordinato, lascia che ne abbia uno. :)
tleb

@EladTabak Felice, mi ha aiutato.
tleb

1
@jpaugh hai ragione. le mie .bashrcfonti .bash_aliasesalla fine. ;) Seguo questa vecchia convenzione, che rimane compatibile al 100% su Arch, Ubuntu / Debian, varianti di Raspberry, macOS / OSX e Windows Bash: stefaanlippens.net/my_bashrc_aliases_profile_and_other_stuff Con quella convenzione, utilizzo esattamente gli stessi dotfile su tutte le macchine Io tocco. È abbastanza carino: github.com/eduncan911/dotfiles
eduncan911

143

Su macOS usa i comandi pbcopye quelli integrati pbpaste.

Ad esempio, se corri

cat ~/.bashrc | pbcopy

il contenuto del ~/.bashrcfile sarà disponibile per incollare con il collegamento Cmd+ v.



25

xsel su Debian / Ubuntu / Mint

# append to clipboard:
cat 'the file with content' | xsel -ib

# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib

# show clipboard
xsel -b

# Get more info:
man xsel

Installare

sudo apt-get install xsel

In che cosa differisce echo "foo" | xclip -selection c?
Léo Léopold Hertz 준영

Ci sono alcune risposte su questa domanda Chiedi Ubuntu , ma principalmente xsele xclipsono equivalenti in tutti i modi tranne che xclippossono leggere / scrivere file per nome, ma xselrichiede il reindirizzamento della shell se si desidera accedere a un file.
Colin D Bennett,

xselfunziona bene dagli script, mentre xclip funziona solo dal prompt. Non so perché.
NVRM

16

Wow, non posso credere a quante risposte ci sono per questa domanda. Non posso dire di averli provati tutti, ma ho provato i primi 3 o 4 e nessuno di loro funziona per me. Ciò che ha funzionato per me è stata una risposta contenuta in uno dei commenti scritti da un utente chiamato doug. Da quando l'ho trovato così utile, ho deciso di riaffermare una risposta.

Installa l'utility xcopy e quando sei nel Terminale, inserisci:

copia

Thing_you_want_to_copy|xclip -selection c

Incolla

myvariable=$(xclip -selection clipboard -o)

Ho notato molte risposte consigliate pbpaste e pbcopy. Se ti piacciono quelle utility ma per qualche motivo non sono disponibili nel tuo repository, puoi sempre creare un alias per i comandi xcopy e chiamarli pbpaste e pbcopy.

alias pbcopy="xclip -selection c" 
alias pbpaste="xclip -selection clipboard -o" 

Quindi sembrerebbe così:

Thing_you_want_to_copy|pbcopy
myvariable=$(pbpaste)

Ottimo, la tua parte alias corrisponde abbastanza bene a MacOS.
MeadowMuffins,

15

Risposta 2018

Usa appunti-cli . Funziona con macOS, Windows, Linux, OpenBSD, FreeBSD e Android senza problemi reali.

Installalo con:

npm install -g clipboard-cli

Quindi puoi farlo

echo foo | clipboard

Se si desidera, è possibile alias cbinserendo la seguente nel vostro .bashrc, .bash_profileoppure .zshrc:

alias cb=clipboard


2
Sei sicuro che sia un npmpacchetto sicuro ?
Johnny,

3
@Stas, lo spero, è realizzato da Sindresorhus ( github.com/sindresorhus ), il collaboratore più prolifico del nodo. È responsabile della libreria di test Ava, della xo linter, di Yeoman e di innumerevoli altri progetti. È anche responsabile di innumerevoli piccole librerie come questa, che hanno messo collettivamente il suo codice su quasi tutti i siti Web che utilizzano JS su Internet. Questo non vuol dire che non potesse essere compromesso; solo che la quantità di occhi sui suoi repository e la sua reputazione lo rendono molto meno probabile rispetto alla maggior parte dei repository npm casuali.
Evan Conrad,

Freddo! Funziona su Ubuntu GNU / Linux dove xclip non funziona.
Kevin Buchs,

14

Sul sottosistema Windows per Linux è possibile copiare negli appunti con clip.exe.

cat file | clip.exe

Ricorda di usare il |comando pipe. E non un >comando, dal momento che non funzionerà.


11

Ecco uno script bash pronto per l'uso per leggere gli Appunti che funziona su più piattaforme. Modifica lo script qui se aggiungi funzionalità (ad es. Più piattaforme).

#!/bin/bash
# WF 2013-10-04
# multi platform clipboard read access
# supports
#   Mac OS X
#   git shell / Cygwin (Windows)
#   Linux (e.g. Ubuntu)

#
# display an error
#
error() {
  echo "error: $1" 1>&2
  exit 1
}

#
# getClipboard
#
function getClipboard() {
 os=`uname`
      case $os in 
        # git bash  (Windows)
        MINGW32_NT-6.1)
          cat /dev/clipboard;;
        # Mac OS X
        Darwin*)
          pbpaste;;  
        # Linux 
        Linux*)
          # works only for X clipboard - a check that X is running might be due
          xclip -o;;
        *)
          error "unsupported os $os";;
      esac
}

tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# comment out for debugging
rm $tmp

bruhh, questo funziona davvero perché non è questa la risposta?
255.tar.xz,

9

Su Windows (con Cygwin) provare cat /dev/clipboardo echo "foo" > /dev/clipboardcome indicato in questo articolo.


1
Come l'utente @maep menzionato in un commento separato, le versioni più recenti di Windows (posso solo confermare per Win10) possono semplicemente eseguire il pipe clip. Sto usando msysgit 1.9.5 e questo ha funzionato.
Shawn Erquhart,

echo "foo" > /dev/clipboardsembra distruggere completamente le newline (non una cosa \ r \ n \ n ma completamente sparita)
user1529413

9

Solo per Mac:

echo "Hello World" | pbcopy
pbpaste

Questi sono situati /usr/bin/pbcopye /usr/bin/pbpaste.


8

Ci sono diversi appunti in Linux; il server X ne ha uno, il gestore delle finestre potrebbe averne un altro, ecc. Non esiste un dispositivo standard.

Oh, sì, sulla CLI, anche il programma dello schermo ha i suoi appunti, così come altre applicazioni come Emacs e vi .

In X, puoi usare xclip .

Puoi controllare questa discussione per altre possibili risposte: http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html


2
Sembra che creare / dev / clip sia un buon progetto per qualcuno.
TED,

2
Sono perfettamente consapevole degli appunti multipli. In che modo questo rende la mia domanda ancora più difficile da rispondere?
Moinudin,

Avrebbe senso se gli appunti fossero standardizzati, probabilmente non farebbe male se si potesse usare / dev / clip1, / ​​dev / clip2 .. / dev / clip <n> per accedervi, l'unico problema è che sono specifici dell'utente e i dispositivi sono a livello di sistema. Ma se si crea un driver di dispositivo kernel che si maschera in base all'UID di accesso, dovrebbe funzionare come previsto.

5

Copia e incolla negli appunti in Windows (Cygwin):

Vedere:

$ clip.exe -?

CLIP
Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.
Parameter List:
/?                  Displays this help message.
Examples:
DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.
CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Esistono anche getclip (può essere usato al posto di Shift+ Ins!) E putclip (echo oaeuoa | putclip.exe per metterlo in clip).


4

Questo è un semplice script Python che fa proprio quello che ti serve:

#!/usr/bin/python

import sys

# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'

if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
    with open(clipboard_file, 'r') as c:
        sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
    with open(clipboard_file, 'w') as c:
        c.write(sys.stdin.read())

Salvalo come eseguibile da qualche parte nel tuo percorso (l'ho salvato in /usr/local/bin/clip. Puoi inserire elementi da salvare negli Appunti ...

echo "Hello World" | clip

E puoi reindirizzare ciò che è negli appunti ad un altro programma ...

clip | cowsay
 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Eseguendolo da solo verrà semplicemente visualizzato ciò che è negli Appunti.


Funziona quando sei su un singolo computer, ma non ti consente di copiare cose tra computer.
Charles Plager,

sembra solo `echo str> tmpfile` e cat tmpfilenon operazione negli appunti. // uguale alle risposte di @horta.
yurenchen,

questo non sembra impostare la variabile negli Appunti, quindi non posso incollare il contenuto in un'altra applicazione - non è un vero e proprio Appunti!
Jena,

4

Ho trovato un buon riferimento: /unix/69111/

Nel mio caso vorrei incollare il contenuto negli appunti e anche vedere cosa è stato incollato lì, quindi ho usato anche il teecomando con un descrittore di file:

echo "just a test" | tee >(xclip -i -selection clipboard)

>()è una forma di sostituzione del processo. bash sostituisce ciascuno con il percorso di un descrittore di file che è collegato all'input standard del programma tra parentesi.

Il teecomando inoltra il tuo comando permettendoti di "convogliarne il contenuto" e vedere il risultato sullo standard output "stdout"

puoi anche creare alias per ottenere e scrivere negli appunti, permettendoti di usare "pbcopy" e "pbpaste" come se fossi su MAC. Nel mio caso, mentre uso zsh ho questo sul mio file alias:

(( $+commands[xclip] )) && {
    alias pbpaste='xclip -i -selection clipboard -o'
    alias pbcopy='xclip -selection clipboard'
}

il (( $+command[name] ))se il comando "nome" è installato sul sistema in prove zsh, quindi entrambi gli alias sono raggruppati con {}. il &&è un binario e, se poi b, quindi se avete xclip allora gli alias verrà impostata.

echo "another test" | tee >(pbcopy)

Per ottenere il contenuto degli Appunti basta digitare:

pbpaste | "any-command-you-need-here"

4
  xsel -b

Fa il lavoro per X Window ed è per lo più già installato. Uno sguardo nella pagina man di xsel vale la pena.


2

Alcuni programmi Windows che ho scritto anni fa. Ti permettono di scaricare, spingere, aggiungere e stampare gli appunti. Funziona così:

dumpclip | perl -pe "s/monkey/chimp/g;" | pushclip

Include il codice sorgente: cmd_clip.zip


2

Ci sono un paio di modi. Alcuni dei modi che sono stati menzionati includono (penso) tmux, screen, vim, emacs e shell. Non conosco emacs o screen, quindi esaminerò gli altri tre.

tmux

Pur non essendo una selezione X, tmux ha una modalità di copia accessibile tramite prefix-[( prefixè Ctrl+ Bper impostazione predefinita). Il buffer utilizzato per questa modalità è separato ed esclusivo di tmux, il che apre parecchie possibilità e lo rende più versatile delle selezioni X nelle giuste situazioni.

Per uscire da questa modalità, premi q; per navigare, usare la tua vimo la emacsrilegatura (default = vim), quindi hjklper il movimento, v/V/C-vper la selezione di caratteri / linea / blocco, ecc. Quando hai la tua selezione, premi Enterper copiare ed uscire dalla modalità.

Per incollare da questo buffer, utilizzare prefix-].

Conchiglia

Ogni installazione di X11sembra avere due programmi di default: xclipe xsel(un po 'come viene fornito anche con entrambi startxe xinit). La maggior parte delle altre risposte menziona xclip, e mi piace molto xselper la sua brevità, quindi parlerò xsel.

Da xsel (1x) :

Opzioni di input

-a, --appendi

aggiunge input standard alla selezione. Implica -i .

-f, --segui

accoda alla selezione man mano che aumenta l'input standard. Implica -i .

-i, --input

leggere l'input standard nella selezione.

Opzioni di output

-o, --output

scrivere la selezione sullo standard output.

Opzioni di azione

-c, --clear

cancella la selezione. Sostituisce tutte le opzioni di input.

-d, --delete

Richiedi l'eliminazione della selezione corrente. Ciò non solo cancella la selezione, ma richiede anche al programma in cui la selezione risiede che i contenuti selezionati vengano eliminati. Sostituisce tutte le opzioni di input.

Opzioni di selezione

-p, --primary

operare sulla selezione PRIMARY (impostazione predefinita).

-s, --secondary

operare sulla selezione SECONDARIA.

-b, --clipboard

operare sulla selezione CLIPBOARD.

E questo è tutto ciò che devi sapere. p(o niente) per PRIMARY, sper SECONDARY, bper CLIPBOARD, oper l'output.

Esempio: dire che voglio copiare l'output di fooun TTY e incollarlo in una pagina Web per una segnalazione di bug. Per fare ciò, sarebbe l'ideale copiare nella / dalla sessione TTY / X. Quindi la domanda diventa come posso accedere agli Appunti dal TTY?

Per questo esempio, supponiamo che la sessione X sia visualizzata :1.

$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1

Quindi posso Ctrl-Vfarlo nella forma come al solito.

Ora dì che qualcuno sul sito di supporto mi dà un comando da eseguire per risolvere il problema. È complicato e lungo.

$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99

L'ordinamento della pizza sembra un uso produttivo della riga di comando.

...andare avanti.

Vim

Se compilato con +clipboard(Questo è importante! Controlla il tuo vim --version), Vim dovrebbe avere accesso alla X PRIMARYe alle CLIPBOARDselezioni. Le due selezioni sono accessibili dai registri *e +, rispettivamente, e possono essere scritte e lette a piacimento come qualsiasi altro registro. Per esempio:

:%y+    ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p     ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example

Se la tua copia di vim non supporta direttamente l'accesso alle selezioni X, tuttavia, non è la fine del mondo. Puoi semplicemente usare la xseltecnica come descritto nell'ultima sezione.

:r ! xsel -bo ; read  (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b  ; write (w) to the stdin of    (!) `xsel -b`

Associa un paio di combinazioni di tasti e dovresti essere bravo.


Sicuramente ricordati sempre di usare DISPLAY=quando chiami un'applicazione X da un ambiente non-X. Le app X hanno bisogno della DISPLAYvariabile d'ambiente per capire con quale server (o c'è solo un server che gestisce più sessioni?) Con cui stanno parlando. Prova DISPLAY=:1 firefox(o qualunque sia il tuo ID di visualizzazione; il mio sembra essere :1) da un TTY, per esempio.
Braden Best,

Per me la scelta nel mio ambiente era :%y+in VIM.
HankCa,

2

Da questo thread, c'è un'opzione che non richiede l'installazione di alcun software gclip/ xclip/ di xselterze parti.

Uno script perl (dal momento che perl è sempre installato)

use Win32::Clipboard;
print Win32::Clipboard::GetText();

Come lo userei? Salvare lo script in PATH e inserirlo in esso? Sto cercando di scrivere il wrapper cli di dropbox per copiare i collegamenti di condivisione, quindi ho solo bisogno che gestisca il testo.
Jena,


2

pbcopy è integrato in OSX:

Copia del contenuto di .bash_profile:

cat ~/.bash_profile | pbcopy

1

In macOS, usa pbpaste.

Per esempio:

Aggiorna gli Appunti

pbpaste  | ruby -ne ' puts "\|" + $_.split( )[1..4].join("\|") ' | pbcopy

1

Se sei come me e corri su un server Linux senza i privilegi di root e non ci sono xclip o GPM, puoi risolvere questo problema semplicemente usando un file temporaneo. Per esempio:

$ echo "Hello, World!" > ~/clip
$ echo `cat ~/clip`
Hello, World!

Non vedo come la mancanza di privilegi di root possa influire in questo.
Braden Best

3
@BradenBest La mancanza di privilegi di root significa che non sono riuscito a installare le cose.
horta,

Ma cosa vorresti installare? X? Su un server? A meno che tu non stia ospitando uno strano servizio di inoltro X, non riesco a capire perché vorresti mai farlo.
Braden Best,

@BradenBest Non sono sicuro. Qualunque programma o servizio mi consenta di eseguire un copia incolla.
horta,

1
Bene, se stai usando uno dei X selections(che è necessariamente implicito da "appunti" e qualsiasi menzione di xclip / xsel), hai bisogno di una sessione X attiva (e quindi di un server X) in modo da poter accedere alla selezione nella primo posto. Per capire cosa intendo, prova a eseguire DISPLAY="" xselsul tuo computer locale. Uscirà in caso di errore, non riuscendo a trovare la sessione ""e non verrà effettuata alcuna interazione con alcuna selezione X. Questo è il motivo per cui inizialmente ho detto che non vedo come i privilegi di root incidano su questo: root o no root, non è probabile che troverai una selezione X utile in un ambiente server.
Braden Best,


1

su Wayland xcopy non sembra funzionare, usa invece wl-appunti . ad es. su fedora

sudo dnf install wl-clipboard

tree | wl-copy

wl-paste > file


0

Anche se> 1 anno dopo, condivido una soluzione leggermente diversa. Spero che questo sia utile per qualcuno.

Ieri mi sono trovato con la domanda: "Come condividere gli Appunti tra sessioni utente diverse?" . Quando si passa da una sessione all'altra con ctrlaltF7-ctrlaltF8 , in effetti, non è possibile incollare ciò che è stato copiato.

Ho trovato la seguente soluzione rapida e sporca , basata su una pipa denominata. È sicuramente abbastanza spoglio e crudo, ma l'ho trovato funzionale:

user1@host:~$ mkfifo /tmp/sharedClip

quindi nel terminale di invio

user1@host:~$ cat > /tmp/sharedClip

infine, nel terminale ricevente:

user2@host:~$ cat /tmp/sharedClip

Ora, scrivi o incolla qualsiasi cosa nel primo terminale e (dopo aver colpito return), apparirà immediatamente nel terminale di ricezione, da dove puoi copiare / incollare di nuovo ovunque tu voglia.

Naturalmente questo non solo prende strettamente il contenuto dagli appunti di user1 per renderlo disponibile negli appunti di user2, ma piuttosto richiede una coppia aggiuntiva di incolla e copia clic.


Non sembra troppo sorprendente. Due diversi server X = due diversi set di selezione. Tuttavia, è possibile impostare uno script che accetta input / output tramite xsel/xclip. Ad esempio, un'estremità ascolta per vedere se una delle selezioni è cambiata, e quindi lo instrada automaticamente (tramite il nome FIFO) sull'altro script, che sta ascoltando una o più pipe, che la inserisce nella propria selezione X. La copia del testo comporterebbe quindi automaticamente la visualizzazione dello stesso testo nella selezione dell'altra sessione X. E non dimenticare $DISPLAY.
Braden Best,

0

L'eliner rubino mi ha ispirato a provare con il pitone.

Diciamo che vogliamo un comando che indenta qualsiasi cosa sia negli appunti con 4 spazi. Perfetto per la condivisione di frammenti su StackOverflow.

$ pbpaste | python -c "import sys
 for line in sys.stdin:
   print(f'    {line}')" | pbcopy

non è un refuso. Python ha bisogno di nuove righe per eseguire un ciclo for. Vogliamo modificare le linee in un passaggio per evitare di creare un array aggiuntivo in memoria.

Se non ti dispiace costruire l'array extra prova:

$ pbpaste | python -c "import sys; print(''.join([f'    {l}' for l in sys.stdin]))" | pbcopy

ma onestamente awk è meglio di questo rispetto a Python. Ho definito questo alias nel mio ~/.bashrcfile

alias indent="pbpaste | awk '{print \"    \"\$0}' | pbcopy"

ora quando corro indenttutto ciò che è nei miei appunti è rientrato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.