부쿠 활동 중!
buku
강력한 북마크 관리자이자 개인용 텍스트 미니 웹입니다.
GUI를 선호하는 사람들을 위해 bukuserver
로컬 웹 호스트 서버에 탐색 가능한 프런트 엔드를 노출합니다. 구성 및 스크린샷은 bukuserver 페이지를 참조하세요.
제가 이 글을 쓰기 시작했을 때, 원활한 GUI 통합과 함께 개인적이고 이식 가능하며 병합 가능한 데이터베이스를 갖춘 유연한 명령줄 솔루션을 찾을 수 없었습니다. 그러므로 buku
.
buku
브라우저에서 북마크를 가져오거나 웹에서 URL의 제목, 태그 및 설명을 가져올 수 있습니다. 즐겨 사용하는 편집기를 사용하여 북마크를 추가, 구성 및 업데이트하세요. 정규식 및 정밀 스캔 모드(URL을 사용하여 편리함)를 포함한 다양한 검색 옵션을 사용하여 북마크를 즉시 검색하세요.
Wayback Machine에서 끊어진 링크를 찾을 수 있습니다. 임의의 북마크를 다시 방문할 수 있는 부활절 달걀이 있습니다.
추적, 숨겨진 기록, 오래된 기록, 사용 분석 또는 원점 복귀가 없습니다.
지금 바로 시작하려면 빠른 시작 섹션으로 이동하세요. buku
최고의 문서 중 하나가 있습니다. 매뉴얼 페이지에는 예제가 제공됩니다. 내부 세부 사항은 운영 참고 사항을 참조하십시오.
buku
쿠도 도서관이에요! 브라우저 플러그인을 포함하여 여러 관련 프로젝트가 있습니다.
특징 | 의존 |
---|---|
랭, SQLite | 파이썬 3.8+ |
HTTPS | 인증서, urllib3 |
암호화 | 암호화 |
HTML | beautifulsoup4, html5lib |
URL을 클립보드로 복사하려면 buku
Linux에서는 xsel
(또는 xclip
), OS X에서는 pbcopy
(기본 설치), Windows에서는 clip
(기본 설치), Termux에서는 termux-clipboard
(Android용 터미널 에뮬레이션), Wayland에서는 wl-copy
. X11이 없으면 GNU Screen 또는 tmux 복사-붙여넣기 버퍼가 인식됩니다.
PyPI의 모든 종속성과 함께 buku를 설치하려면 다음을 실행하세요.
# pip3 install buku
패키지 관리자에서 buku
설치할 수도 있습니다. 사용 가능한 버전이 오래된 경우 대체 설치 방법을 시도해 보십시오.
● PyPI( pip3 install buku
)
● Termux( pip3 install buku
)
Arch Linux, CentOS, Debian, Fedora, openSUSE Leap 및 Ubuntu용 자동 생성 패키지(cli 구성 요소만 포함)는 최신 안정 릴리스에서 사용할 수 있습니다.
참고: CentOS에는 저장소에 python3-beautifulsoup4 패키지가 없을 수 있습니다. pip3을 사용하여 설치합니다.
Git이 설치되어 있으면 이 저장소를 복제하세요. 그렇지 않으면 최신 안정 릴리스 또는 개발 버전을 다운로드하십시오( 위험함 ).
종속성을 설치합니다. 예를 들어 우분투에서는 다음과 같습니다.
$ apt-get install ca-certificates python3-urllib3 python3-cryptography python3-bs4
cli 구성 요소를 기본 위치( /usr/local
)에 설치합니다.
$ sudo make install
제거하려면 다음을 실행하세요.
$ sudo make uninstall
다른 위치에 설치하려는 경우 PREFIX
지원됩니다.
buku
독립형 유틸리티입니다. 포함된 디렉터리에서 다음을 실행합니다.
$ chmod +x buku
$ ./buku
Bash, Fish 및 Zsh에 대한 쉘 완성 스크립트는 auto-completion/의 각 하위 디렉터리에서 찾을 수 있습니다. 설치 지침은 쉘 설명서를 참조하세요.
usage: buku [OPTIONS] [KEYWORD [KEYWORD ...]]
Bookmark manager like a text-based mini-web.
POSITIONAL ARGUMENTS:
KEYWORD search keywords
GENERAL OPTIONS:
-a, --add URL [+|-] [tag, ...]
bookmark URL with comma-separated tags
(prepend tags with '+' or '-' to use fetched tags)
-u, --update [...] update fields of an existing bookmark
accepts indices and ranges
refresh title and desc if no edit options
if no arguments:
- update results when used with search
- otherwise refresh all titles and desc
-w, --write [editor|index]
edit and add a new bookmark in editor
else, edit bookmark at index in EDITOR
edit last bookmark, if index=-1
if no args, edit new bookmark in EDITOR
-d, --delete [...] remove bookmarks from DB
accepts indices or a single range
if no arguments:
- delete results when used with search
- otherwise delete all bookmarks
-h, --help show this information and exit
-v, --version show the program version and exit
EDIT OPTIONS:
--url keyword bookmark link
--tag [+|-] [...] comma-separated tags
clear bookmark tagset, if no arguments
'+' appends to, '-' removes from tagset
--title [...] bookmark title; if no arguments:
-a: do not set title, -u: clear title
-c, --comment [...] notes or description of the bookmark
clears description, if no arguments
--immutable N disable web-fetch during auto-refresh
N=0: mutable (default), N=1: immutable
--swap N M swap two records at specified indices
SEARCH OPTIONS:
-s, --sany [...] find records with ANY matching keyword
this is the default search option
-S, --sall [...] find records matching ALL the keywords
special keywords -
"blank": entries with empty title/tag
"immutable": entries with locked title
--deep match substrings ('pen' matches 'opens')
--markers search for keywords in specific fields
based on (optional) prefix markers:
'.' - title, '>' - description, ':' - URL,
'#' - tags (comma-separated, PARTIAL matches)
'#,' - tags (comma-separated, EXACT matches)
'*' - any field (same as no prefix)
-r, --sreg expr run a regex search
-t, --stag [tag [,|+] ...] [- tag, ...]
search bookmarks by tags
use ',' to find entries matching ANY tag
use '+' to find entries matching ALL tags
excludes entries with tags after ' - '
list all tags, if no search keywords
-x, --exclude [...] omit records matching specified keywords
--random [N] output random bookmarks out of the selection (default 1)
--order fields [...] comma-separated list of fields to order the output by
(prepend with '+'/'-' to choose sort direction)
ENCRYPTION OPTIONS:
-l, --lock [N] encrypt DB in N (default 8) # iterations
-k, --unlock [N] decrypt DB in N (default 8) # iterations
POWER TOYS:
--ai auto-import bookmarks from web browsers
Firefox, Chrome, Chromium, Vivaldi, Edge
-e, --export file export bookmarks to Firefox format HTML
export XBEL, if file ends with '.xbel'
export Markdown, if file ends with '.md'
format: [title](url) <!-- TAGS -->
export Orgfile, if file ends with '.org'
format: *[[url][title]] :tags:
export rss feed if file ends with '.rss'
export buku DB, if file ends with '.db'
combines with search results, if opted
-i, --import file import bookmarks from file
supports .html .xbel .json .md .org .rss .db
-p, --print [...] show record details by indices, ranges
print all bookmarks, if no arguments
-n shows the last n results (like tail)
-f, --format N limit fields in -p or JSON search output
N=1: URL; N=2: URL, tag; N=3: title;
N=4: URL, title, tag; N=5: title, tag;
N0 (10, 20, 30, 40, 50) omits DB index
-j, --json [file] JSON formatted output for -p and search.
prints to stdout if argument missing.
otherwise writes to given file
--colors COLORS set output colors in five-letter string
--nc disable color output
-n, --count N show N results per page (default 10)
--np do not show the subprompt, run and exit
-o, --open [...] browse bookmarks by indices and ranges
open a random bookmark, if no arguments
--oa browse all search results immediately
--replace old new replace old tag with new tag everywhere
delete old tag, if new tag not specified
--url-redirect when fetching an URL, use the resulting
URL from following *permanent* redirects
(when combined with --export, the old URL
is included as additional metadata)
--tag-redirect [tag] when fetching an URL that causes permanent
redirect, add a tag in specified pattern
(using 'http:{}' if not specified)
--tag-error [tag] when fetching an URL that causes an HTTP
error, add a tag in specified pattern
(using 'http:{}' if not specified)
--del-error [...] when fetching an URL causes any (given)
HTTP error, delete/do not add it
--export-on [...] export records affected by the above
options, including removed info
(requires --update and --export; specific
HTTP response filter can be provided)
--shorten index|URL fetch shortened url from tny.im service
--expand index|URL expand a tny.im shortened url
--cached index|URL browse a cached page from Wayback Machine
--offline add a bookmark without connecting to web
--suggest show similar tags when adding bookmarks
--tacit reduce verbosity, skip some confirmations
--nostdin do not wait for input (must be first arg)
--threads N max network connections in full refresh
default N=4, min N=1, max N=10
-V check latest upstream version available
-g, --debug show debug information and verbose logs
SYMBOLS:
> url
+ comment
# tags
PROMPT KEYS:
1-N browse search result indices and/or ranges
R [N] print out N random search results
(or random bookmarks if negative or N/A)
^ id1 id2 swap two records at specified indices
O [id|range [...]] open search results/indices in GUI browser
toggle try GUI browser if no arguments
a open all results in browser
s keyword [...] search for records with ANY keyword
S keyword [...] search for records with ALL keywords
d match substrings ('pen' matches 'opened')
m search with markers - search string is split
into keywords by prefix markers, which determine
what field the keywords is searched in:
'.', '>' or ':' - title, description or URL
'#'/'#,' - tags (comma-separated, partial/full match)
'*' - all fields (can be omitted in the 1st keyword)
note: tag marker is not affected by 'd' (deep search)
v fields change sorting order (default is '+index')
multiple comma/space separated fields can be specified
r expression run a regex search
t [tag, ...] search by tags; show taglist, if no args
g taglist id|range [...] [>>|>|<<] [record id|range ...]
append, set, remove (all or specific) tags
search by taglist id(s) if records are omitted
n show next page of search results
o id|range [...] browse bookmarks by indices and/or ranges
p id|range [...] print bookmarks by indices and/or ranges
w [editor|id] edit and add or update a bookmark
c id copy URL at search result index to clipboard
? show this help
q, ^D, double Enter exit buku
buku
사용자 정의 색상을 지원합니다. 자세한 내용을 보려면 색상을 사용자 정의하는 방법에 대한 위키 페이지를 방문하세요.
선호하는 편집기를 가리키도록 VISUAL
또는 EDITOR
내보냅니다. VISUAL
은 EDITOR
보다 우선합니다.
좀 더 편리하게 더욱 멋진 바로가기를 만들어보세요.
alias b='buku --suggest'
브라우저에서 북마크를 자동으로 가져옵니다. 데이터베이스가 잠기지 않도록 사전에 관련 브라우저를 종료하십시오.
b --ai
북마크를 수동으로 추가합니다(실습용).
b -w
DB 인덱스로 북마크를 나열하세요.
b -p
GUI 및 브라우저 통합(또는 선호하는 북마크 관리 서비스와 북마크 동기화)에 대해서는 시스템 통합에 대한 위키 페이지를 참조하세요.
fzf를 사용하여 퍼지 검색을 수행하고 Firefox에서 선택 항목을 여는 빠른(bash/zsh) 명령:
firefox $(buku -p -f 10 | fzf)
firefox $(buku -p -f 40 | fzf | cut -f1)
북마크 미리보기도 표시하는 POSIX 스크립트:
#! /usr/bin/env sh
url= $( buku -p -f4 | fzf -m --reverse --preview " buku -p {1} " --preview-window=wrap | cut -f2 )
if [ -n " $url " ] ; then
echo " $url " | xargs firefox
fi
편집기에서 북마크를 편집하고 추가합니다 .
$ buku -w
$ buku -w 'gedit -w'
$ buku -w 'macvim -f' -a https://ddg.gg search engine, privacy
첫 번째 명령은 환경 변수 EDITOR
에서 편집기를 선택합니다. 두 번째 명령은 차단 모드에서 gedit를 엽니다. 세 번째 명령은 -f 옵션과 템플릿에 채워진 URL 및 태그를 사용하여 macvim을 엽니다.
간단한 북마크 추가 :
$ buku --nostdin -a https://github.com/
2648. GitHub: Let’s build from here · GitHub
> https://github.com/
+ GitHub is where over 94 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs
and features, power your CI/CD and DevOps workflows, and secure code before you commit it.
$ buku --nostdin -a https://github.com/
[ERROR] URL [https://github.com/] already exists at index 2648
>
: URL, +
: 댓글, #
: 태그
제목, 설명 및 태그는 사이트에서 가져옵니다. Buku는 고유한 URL만 저장하며 해당 URL이 데이터베이스에 이미 있는 경우 오류가 발생합니다.
search engine
및 privacy
태그가 포함된 북마크를 추가하고 , Search engine with perks
댓글을 달고 , 웹에서 페이지 제목을 가져옵니다 .
$ buku -a https://ddg.gg search engine, privacy -c Search engine with perks
336. DuckDuckGo
> https://ddg.gg
+ Alternative search engine with perks
# privacy,search engine
여기서, >
: URL, +
: 주석, #
: 태그
search engine
및 privacy
태그와 변경 불가능한 사용자 정의 제목 DDG
포함된 북마크를 추가하세요 .
$ buku -a https://ddg.gg search engine, privacy --title 'DDG' --immutable 1
336. DDG (L)
> https://ddg.gg
# privacy,search engine
URL은 태그 앞에 와야 합니다.
제목 없이 북마크 추가 (업데이트에도 작동):
$ buku -a https://ddg.gg search engine, privacy --title
편집기에서 북마크를 편집하고 업데이트합니다 .
$ buku -w 15012014
수정을 위해 편집기에서 기존 북마크의 세부정보가 열립니다. 환경 변수 EDITOR
설정해야 합니다.
새 URL, 태그 및 설명으로 색인 15012014의 기존 북마크를 업데이트하고 웹에서 제목을 가져옵니다.
$ buku -u 15012014 --url http://ddg.gg/ --tag web search, utilities -c Private search engine
15012014에서 북마크에 대한 제목만 가져오고 업데이트합니다 .
$ buku -u 15012014
15012014의 북마크에 대한 설명만 업데이트합니다 .
$ buku -u 15012014 -c this is a new comment
--url, --title 및 --tag에도 적용됩니다.
태그가 지정된 tag 1
또는 tag 2
HTML, XBEL, Markdown, Orgfile 또는 새 데이터베이스로 내보내기 :
$ buku -e Bookmarks.html --stag 태그 1, 태그 2 $ buku -e Bookmarks.xbel --stag 태그 1, 태그 2 $ buku -e Bookmarks.md --stag 태그 1, 태그 2 $ buku -e 북마크 .org --stag 태그 1, 태그 2 $ buku -e Bookmarks.db --stag 태그 1, 태그 2 검색을 선택하지 않으면 모든 북마크를 내보냅니다.
HTML, XBEL, Markdown 또는 Orgfile에서 북마크를 가져옵니다 .
$ buku -i bookmarks.html
$ buku -i bookmarks.xbel
$ buku -i bookmarks.md
$ buku -i bookmarks.org
$ buku -i bookmarks.db
15012014의 북마크에 대한 댓글만 삭제 :
$ buku -u 15012014 -c
--title 및 --tag에도 적용됩니다. 북마크를 삭제하지 않으면 URL을 삭제할 수 없습니다.
웹의 페이지 제목으로 전체 DB를 업데이트 하거나 새로 고칩니다.
$ buku -u
$ buku -u --tacit (show only failures and exceptions)
이 작업은 가져온 페이지를 구문 분석하여 변경할 수 없는 책갈피의 제목 또는 설명 필드를 업데이트할 수 있습니다. 가져온 필드가 비어 있지 않은 경우에만 필드가 업데이트됩니다. 태그는 그대로 유지됩니다.
색인 15012014에서 북마크 삭제 :
$ buku -d 15012014
Index 15012020 moved to 15012014
마지막 인덱스는 삭제된 인덱스로 이동하여 DB를 컴팩트하게 유지합니다. 확인 없이 삭제하려면 --tacit
추가하세요.
모든 북마크 삭제 :
$ buku -d
북마크 범위 또는 목록 삭제 :
$ buku -d 100-200
$ buku -d 100 15 200
URL, 제목 또는 태그에서 kernel
및 debugging
키워드 에 대한 북마크를 검색하세요 .
$ buku kernel debugging
$ buku -s kernel debugging
URL, 제목 또는 태그에 kernel
및 debugging
이라는 모든 키워드가 포함된 북마크를 검색하세요 .
$ buku -S kernel debugging
general kernel concepts
태그가 지정된 북마크 검색 :
$ buku --stag general kernel concepts
kernel
, debugging
, general kernel concepts
태그 중 하나 와 일치하는 북마크를 검색하세요 .
$ buku --stag kernel, debugging, general kernel concepts
kernel
, debugging
, general kernel concepts
태그와 모두 일치하는 북마크를 검색하세요 .
$ buku --stag kernel + debugging + general kernel concepts
키워드 hello
또는 world
와 일치하는 북마크를 검색합니다 . 단, 키워드는 real
및 life
제외하고 태그 kernel
및 debugging
모두 일치하지만 태그 general kernel concepts
및 books
제외합니다 .
$ buku hello world --exclude real life --stag 'kernel + debugging - general kernel concepts, books'
필드별로 다른 토큰으로 북마크를 검색 하여 태그(오름차순), URL(내림차순)별로 정렬하여 인쇄합니다.
$ buku --order +tags,-url --markers --sall 'global substring' '.title substring' ':url substring' :https '> description substring' '#partial,tags:' '#,exact,tags' '*another global substring'
모든 고유 태그를 알파벳순으로 나열합니다.
$ buku --stag
검색을 실행하고 결과를 업데이트합니다 .
$ buku -s kernel debugging -u --tag + linux kernel
검색을 실행하고 결과를 삭제합니다 .
$ buku -s kernel debugging -d
키를 생성하기 위해 사용자 지정 반복 횟수 (15)로 DB를 암호화하거나 해독합니다 .
$ buku -l 15
$ buku -k 15
하나의 잠금 및 잠금 해제 인스턴스에 대해 동일한 반복 횟수를 지정해야 합니다. 생략할 경우 기본값은 8입니다.
인덱스 15012014 및 범위 20-30, 40-50의 북마크 세부 정보 표시 :
$ buku -p 20-30 15012014 40-50
최근 10개 북마크 의 세부정보 표시:
$ buku -p -10
데이터베이스의 실제 색인이 포함된 모든 북마크를 표시합니다 .
$ buku -p
$ buku -p | more
태그 '이전 태그'를 '새 태그'로 교체 :
$ buku --replace 'old tag' 'new tag'
DB에서 '이전 태그' 태그를 삭제합니다 .
$ buku --replace 'old tag'
인덱스 15012014에 있는 북마크의 기존 태그에 '태그 1', '태그 2' 태그를 추가(또는 삭제)합니다 .
$ buku -u 15012014 --tag + tag 1, tag 2
$ buku -u 15012014 --tag - tag 1, tag 2
브라우저에서 색인 15012014의 URL을 엽니다 .
$ buku -o 15012014
장부를 위해 제목이나 태그 없이 북마크를 나열합니다.
$ buku -S blank
제목을 변경할 수 없는 북마크 목록:
$ buku -S immutable
URL www.google.com 및 색인 20의 URL을 줄입니다 .
$ buku --shorten www.google.com
$ buku --shorten 20
프롬프트에서 태그 추가, 제거 (왼쪽에 태그 목록 색인, 오른쪽에 책갈피 색인):
// append tags at taglist indices 4 and 6-9 to existing tags in bookmarks at indices 5 and 2-3
buku (? for help) g 4 9-6 >> 5 3-2
// set tags at taglist indices 4 and 6-9 as tags in bookmarks at indices 5 and 2-3
buku (? for help) g 4 9-6 > 5 3-2
// remove all tags from bookmarks at indices 5 and 2-3
buku (? for help) g > 5 3-2
// remove tags at taglist indices 4 and 6-9 from tags in bookmarks at indices 5 and 2-3
buku (? for help) g 4 9-6 << 5 3-2
컬러 출력 으로 북마크 나열:
$ buku --colors oKlxm -p
모든 영구 리디렉션을 수행한 후 북마크를 추가합니다. 단, 서버가 오류로 응답하지 않는 경우(그리고 네트워크 오류가 없는 경우)에만 해당됩니다.
$ buku --add http://wikipedia.net --url-redirect --del-error
2. Wikipedia
> https://www.wikipedia.org/
+ Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.
서버가 영구 리디렉션으로 응답하는 경우 http redirect
태그가 포함된 북마크를 추가하거나 오류 응답 시 http 404
와 같은 태그를 추가합니다.
$ buku --add http://wikipedia.net/notfound --tag-redirect 'http redirect' --tag-error 'http {}'
[ERROR] [404] Not Found
3. Not Found
> http://wikipedia.net/notfound
# http 404,http redirect
서버가 영구 리디렉션으로 응답하면 URL을 업데이트하고, 서버가 HTTP 오류 400, 401, 402, 403, 404 또는 500으로 응답하면 북마크를 삭제하거나 http:{}
기타 HTTP 오류가 발생한 경우; 그런 다음 해당 변경 사항의 영향을 받는 항목을 HTML 파일로 내보내 삭제된 레코드와 리디렉션으로 대체된 항목에 대한 이전 URL을 표시합니다.
$ buku -S ://wikipedia.net -u --url-redirect --tag-error --del-error 400-404,500 --export-on --export backup.html
단일 무작위 북마크를 인쇄합니다.
$ buku --random --print
제목(역순) 및 URL별로 정렬된 무작위 북마크 3개를 인쇄합니다.
$ buku --random 3 --order ,-title,+url --print
검색 기준과 일치하는 임의 의 단일 북마크를 인쇄하고 Markdown 파일로 내보냅니다 (DB 순서).
$ buku --random -S kernel debugging --export random.md
레코드 #4와 #5의 위치를 바꿉니다.
$ buku --swap 4 5
추가 도움말 :
$ buku -h
$ man buku
예상을 사용하여 대화형 작업 흐름을 자동화할 수 있습니다. 문제 #368에는 자동 가져오기 자동화에 대한 실제 예제가 있습니다.
기본적으로 하나의 인스턴스만 유지하고 다른 인스턴스에서 즉시 반환하는 GUI 편집기에 문제가 발생할 수 있습니다. 새 문서가 열릴 때 적절한 편집기 옵션을 사용하여 발신자를 차단하십시오. gedit에 대해서는 이슈 #210을 참조하세요.
저작권 © 2015-2024 Arun Prakash Jana
기능이 없나요? 식별된 작업이 포함된 롤링 ToDo 목록이 있습니다. 기여를 환영합니다! 홍보지침을 따라주세요.
여기에서 설명서도 참조하세요.