Mam plik na pulpicie, nazwa pliku to ded.html. Aby skopiować plik, klikam plik i naciskam cmd + c.
Jak teraz zrobiłbym to samo przy użyciu terminalu?
Mam plik na pulpicie, nazwa pliku to ded.html. Aby skopiować plik, klikam plik i naciskam cmd + c.
Jak teraz zrobiłbym to samo przy użyciu terminalu?
Odpowiedzi:
Jeśli dobrze rozumiem pytanie, to, czego szukasz, to pbcopy
i pbpaste
.
Otwórz terminal i wykonaj:
$ cat ~/Desktop/ded.html | pbcopy
Teraz ten plik jest w schowku.
Aby umieścić go w innym miejscu, to znaczy wkleić, wykonaj:
$ pbpaste > ~/Documents/ded.html
Teraz powinieneś mieć kopię pliku ded.html siedzącego w ~ / Documents.
cat ~/.emulator_console_auth_token | auth <read_content>
?
Odpowiedź Lri zmierza we właściwym kierunku, ale ma kilka wad: nie ma potrzeby używania Findera ( the clipboard
jest częścią StandardAdditions OSAX), a podanie programu run
obsługi jest znacznie bardziej niezawodnym sposobem przekazywania argumentów z wiersza poleceń (od 10.4). Dokonanie obu tych zmian znacznie upraszcza „ucieczkę”, którą należy zrobić, aby wejść do programu w powłoce.
Oto moja wersja (zapakowana w funkcję powłoki - możesz ją umieścić (np.) Swoją, .bashrc
aby była dostępna w swoich powłokach):
file-to-clipboard() {
osascript \
-e 'on run args' \
-e 'set the clipboard to POSIX file (first item of args)' \
-e end \
"$@"
}
file-to-clipboard ~/Desktop/ded.html
Plik, który został umieszczony w schowku za pomocą tego skryptu, można następnie wkleić w Finderze, aby skopiować plik do innego folderu.
osascript może być również używany jako interpreter hash-bang (od 10.5). Umieść to w pliku (np. file-to-clipboard
)
#!/usr/bin/osascript
on run args
set the clipboard to POSIX file (first item of args)
end
Ustaw plik jako wykonywalny ( chmod +x /path/to/where/ever/you/put/file-to-clipboard
). Następnie uruchom go tak:
/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html
Jeśli jest przechowywany w katalogu w ścieżce, możesz pominąć ścieżkę do pliku „skryptowego”.
set the clipboard to {one,two}
(chociaż inny program AppleScript może pomyślnie wyodrębnić listę). W StandardAdditions schowka polecenia mogą być ograniczone do pojedynczych elementów.
Nie ma sposobu, aby osiągnąć to, co próbujesz zrobić za pomocą wiersza polecenia. Chociaż Apple oferuje narzędzia pbcopy
i pbpaste
pozwalające na podstawowe kopiowanie tekstu, nie możesz używać tych narzędzi do kopiowania pliku w takim znaczeniu, w jakim szukasz.
Bez wchodzenia w zbyt szczegółowe szczegóły techniczne, kiedy „kopiujesz” plik w Finderze za pomocą ⌘C, tak naprawdę nie kopiujesz samego pliku, tylko czyniąc odniesienie do pliku w schowku i oznaczając go jako odwołanie do pliku. Kiedy aplikacja otrzymuje to odniesienie podczas wklejania, ma obowiązek uporządkowania, znalezienia wklejonych elementów i ostatecznie pracy z plikiem, który uzna za odpowiedni. W istocie, gdy kopiujesz plik w Finderze, zapisuje on ścieżkę do pliku w określony sposób do określonego schowka, a po wklejeniu otrzymuje ścieżkę do pliku i wie, jak utworzyć nowy plik przy użyciu zawartości stary (skopiuj plik do schowka, usuń go, spróbuj wkleić go gdzie indziej i na przykład zobacz, co się stanie).
W tym sensie kopiowania i wklejania dostępne narzędzia nie wystarczą, aby zrobić to, czego potrzebujesz. Jak sugerował boehj, możesz spróbować skopiować zawartość starego pliku do nowego, ale będzie to działać dobrze tylko w przypadku plików tekstowych. Wszystkie otrzymane pliki binarne zostaną uszkodzone (spróbuj zrobić to z obrazem - zostanie uszkodzony).
Tradycyjny wiersz poleceń zawiedzie Cię w ten sposób, ale możesz rzucić okiem, jeśli chcesz to zrobić w AppleScript, a następnie wywołać to za pomocą wiersza polecenia osascript
.
pbcopy
i pbpaste
będę działać z plikiem .html, to tylko dlatego, że akurat jest to plik tekstowy.
pbcopy -help
, otrzymasz NSLog()
powtarzającą się linię, która nie jest warta produkcji 'pbcopy -help'
. Zrozumienie tego pomaga być programistą i dlatego czułem, że trzeba wejść.
Poniższa funkcja działa tylko z jednym plikiem, a nie z wieloma plikami. Wymaga GNU, readlink
który można zainstalować, uruchamiając brew install findutils
.
copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}
Edycja: usunąłem tell app "Finder"
blok.
Edycja 2: Przywrócono wersję, która obsługuje ścieżki względne.
Oto prosty skrypt Shell / Bash. Po prostu wklej go do swojego .bashrc
pliku (lub podobnego):
file-to-clipboard() {
if [ -z "$1" ]; then
echo "file path/name:"
read FILE
else
FILE="$1"
fi
pbcopy < "$FILE"
}
Przy wsparciu względnego pliku:
clip_img() {
osascript -e 'on run argv' \
-e 'set currentDir to do shell script "pwd"' \
-e 'set the clipboard to (read POSIX file (POSIX path of (currentDir as text & (first item of argv) )) as JPEG picture)' \
-e 'end run' "/$1"
# osascript -e 'clipboard info'
}
uruchom, clip_img path-to-file
aby skopiować obraz do schowka, i path-to-file
może być względny. Plik może być plikiem JPEG lub PNG.
Możesz użyć cat 'originfile'> 'destinationfile' w środowiskach unix;
skopiuj plik docelowy pliku źródłowego w systemie Windows.