- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Powershellt nem használok. Bashban és zsh-ban 1000 volt mindig is a historym, ez az alapbeállítás a legtöbb disztróban és nem volt rá okom, hogy megváltoztassam ,eddig mindig bőven elég volt. Meglepő, hogy mennyire egyenlően oszlanak meg a szavazók a 100, 1k, 10k, 100+k között. Csökkenteni szerintem nincs sok értelme 1000-ről, sokat enni nem kér. Ilyen indokkal 1000 fölé is emelhető, de ~10k fölött szerintem azért nincs értelme, mert már nem áttekinthető, olyan messzire ki keres vissza, akár csak Ctrl+R kombóval?
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
+nagyonsok, az egyik legjobb shell-el kapcsolatos dolog. 10m a histsize, pillanatok alatt megtalálok benne bármit, azóta nem jegyzetelek ilyesmit, amióta fzf-et használok ctrl+R -re.
- A hozzászóláshoz be kell jelentkezni
Hát pedig régi üzemeltetői mondás, hogy a bash history nem worklog. :) Tipikus, hogy ott van, csak a fene se tudja, hogy a 13 találatból melyik volt a jó :)
- A hozzászóláshoz be kell jelentkezni
Nem tudom, hogy a laptopom amin dolgozom mennyire számít üzemeltetett eszköznek olyan értelemben ahogy az üzemeltetői mondás tartja, de ennek ellenére még valahogy sose volt abból gondom, hogy melyik megoldás az ami nem jó :) Cserébe ott van, gyors és fájdalommentes :)
- A hozzászóláshoz be kell jelentkezni
Akkor nem vagyunk egyformák. Én is szeretem, ott van, örülünk vincent, de azért néha tud fejfájást okozni, hogy pontosan hogy is volt ez jó...
- A hozzászóláshoz be kell jelentkezni
Ha van hozza valami kis context akkor mindjart egyszerubb. :)
- A hozzászóláshoz be kell jelentkezni
Az fzf-et én is ismerem, számos scriptem használja, meg Vifm-be és vim-be is bekötöttem, szóval intenzíven használom az fzf-et a shellbe és inputrc-be bedrótozott vi mód mellett. De azt nem tudtam, hogy Ctrl+R-re is beköthető, ezt leírnád hogyan lehet?
Jelenleg zsh-t használok, de nem jön be, a tabos kiegészítése nem mindig ismer fel dolgokat, pedig az autocompletion-ben minden lehetséges opció be van kapcsolva, és a szükséges csomagok is mind fent vannak hozzá. Meg a zsh behányja parancsnak átadott url-re, hogy nem található, csak úgy jó, ha az url-t idézőjelek közé zárom. Ezek miatt az idegesítő dolgok miatt lehet visszaállok bash-re.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
- A hozzászóláshoz be kell jelentkezni
En meg csak history es fajl keresesre hasznalom, szinten zsh. Installnal beallitott maganak mindent, ha azt kihagytad, akkor szerintem le lehet ujra futtatni:
https://unix.stackexchange.com/questions/534942/auto-trigger-history-se…
Nalam igy nez ki az .fzf.zsh, es a key-bindingsbol a relevans resz:
# Setup fzf
# ---------
if [[ ! "$PATH" == */usr/local/opt/fzf/bin* ]]; then
export PATH="${PATH:+${PATH}:}/usr/local/opt/fzf/bin"
fi
# Auto-completion
# ---------------
[[ $- == *i* ]] && source "/usr/local/opt/fzf/shell/completion.zsh" 2> /dev/null
# Key bindings
# ------------
source "/usr/local/opt/fzf/shell/key-bindings.zsh"
key-bindings:
# CTRL-R - Paste the selected command from history into the command line
fzf-history-widget() {
local selected num
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null
selected=( $(fc -rl 1 | perl -ne 'print if !$seen{($_ =~ s/^\s*[0-9]+\s+//r)}++' |
FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS -n2..,.. --tiebreak=index --bind=ctrl-r:toggle-sort $FZF_CTRL_R_OPTS --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) )
local ret=$?
if [ -n "$selected" ]; then
num=$selected[1]
if [ -n "$num" ]; then
zle vi-fetch-history -n $num
fi
fi
zle reset-prompt
return $ret
}
zle -N fzf-history-widget
bindkey '^R' fzf-history-widget
} always {
eval $__fzf_key_bindings_options
'unset' '__fzf_key_bindings_options'
}
- A hozzászóláshoz be kell jelentkezni
Mármint pontosan mi állított micsodát, honnan telepítve? Nálam ez a kódrészlet nem működik, hiányolja a __fzfcmd változót.
Egyelőre így oldottam meg magamnak, közvetlenül a ~/.zshrc fájlból meghívva:
fzf-history-widget() {
num=$(fc -lr 0 | fzf | awk '{ print $1}')
if [ -n "$num" ]
then
zle vi-fetch-history -n $num
fi
return 0
}
zle -N fzf-history-widget
bindkey '^R' fzf-history-widget
Így működik. A kiválasztás után nem a history-ban lévő parancsot futtatja, hanem csak beteszi a parancsszerkesztőbe, mert lehet nem akarom változatlan formában futtatni.
Szerk.: á, megvan. Az fzf állítja be telepítéskor, de csak akkor, ha a git repójából telepíted. Ha a disztró csomagkezelőjével teszi fel valaki az fzf-et, ahogy én, akkor nem kínál fel ilyen opciót. Mindegy, nem telepítem, mert már megoldottam magamnak más úton.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
- A hozzászóláshoz be kell jelentkezni
Visszaváltottam zsh-ról Bash-ra. Idegesített, hogy idézőjelezni kell a parancsokban az URL-eket, meg nem működött az LS_COLORS se! Plusz a Bash soványabb, mint a zsh és normálisan használja a readline-t, utóbbi nagy segítség sok terminálos programnál, főleg interpretereknél, pl. bc, calc, python, stb., amiket terminálos számológépként és matekprogramként használok. Ezekbe sokkal gyorsabb számítást, komplett műveletsort beverni gépírva, billentyűzetről, mint a GUI-s számológépekben szerencsétlenkedni.
Ha valakit érdekel, a fenti fzf-es Ctrl-R historykeresés Bash alatt így néz ki a ~/.bashrc fájlban:
bash-history-widget() {
output=$(fc -lr 1 $HISTSIZE | fzf | awk -F '\t' '{ print $2}')
if [ -n "$output" ]; then
READLINE_LINE=${output/# /}
READLINE_POINT=0x7fffffff
fi
}
bind -m vi-command -x '"\C-r": bash-history-widget'
bind -m vi-insert -x '"\C-r": bash-history-widget'
Lényegében ugyanúgy működik, az fc parancs kilistázza az egész history-t, sorszámokkal és parancsokkal, sajnos a sorszámokat mindenképp beleteszi. Az fzf ebből a listából választ, majd az awk levágja a sorszámot. Ha a kimenet nem üres, azaz a user választott valamit, akkor readline-nak átadjuk az fzf kimenetét, persze az elejére valami miatt betesz egy szóközt, ezt a /# / résszel lecseréljük a nagy semmire. A readline point-os rész meg arra való, hogy a kurzort odapozicionáljuk a history-ból előhívott parancs legvégére, a -1 értéknek felel meg, csak ilyen haxadecimális, túlcsordulásos érték. Ami eltérés van a zsh-s megoldáshoz képest, hogy Bash alatt nem a zle, hanem readline intézi ugyanezeket, változók módosítását igényli, meg van benne ez a beszúrok az elejére egy üres szóközt című furcsaság, amit vissza kell csinálni. Ezt leszámítva jól működik, ugyanolyan jól, mint zsh alatt. Egyébként amit zsh-ban be lehet lőni, parancsszínezés, kiegészítés, stb., azokat Bashban és readline-ban, ~/.inputrc-ben is be lehet ugyanúgy állítani, kb. 99%-os egyezésre, viselkedésűre. Ha valaki nem használ vi-módot, akkor emacs-standard paraméterrel kell beállítani a bind-et.
Elvileg ezt az fzf-es keresést az fzf beteszi telepítéskor kicsit más formában, de csak akkor, ha valaki az fzf git tárolójából telepíti. Ha a disztró tárolójából teszi fel az ember, akkor a .bashrc, meg a .zshrc kézi szerkesztést igényel, ehhez kellenek a fentebb közzétett kódrészek.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
- A hozzászóláshoz be kell jelentkezni
"pl. bc, calc, python, stb., amiket terminálos számológépként és matekprogramként használok. Ezekbe sokkal gyorsabb számítást, komplett műveletsort beverni gépírva, billentyűzetről, mint a GUI-s számológépekben szerencsétlenkedni."
Sok plussz-plussz!
Valamint ezekben van history. Eddig főleg python-t használtam (mobilon is termux-ban). Annak egyetlen baja van: bonyolultabb számítást "import math"-al kell kezdeni. Szerencsére ott is van Ctrl-R :)
- A hozzászóláshoz be kell jelentkezni
nyos@shodan:~$ cat .pythonstartup
import math
import numpy as np
nyos@shodan:~$ export PYTHONSTARTUP=/home/nyos/.pythonstartup
nyos@shodan:~$ python3
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> np.array([12,34])
array([12, 34])
En is szeretem szamologepnek hasznalni. :)
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Ctrl+R-re is beköthető, ezt leírnád hogyan lehet
A /usr alatt vhol ott van egy bash completion v ilyesmi file. Be kell source-olni és replace-eli a ctrl-r -t.
- A hozzászóláshoz be kell jelentkezni
arra van megoldas hogy a ctrl+r-nel a historybol kijelolt commandnal ne kelljen ketszer entert nyomni (elso kivalasztja a commandot es eltunik az fzf, masodik meg futtatja)?
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Én gyakran használom a `history | grep cmd | grep valami_jellemzo_cmdline_argument` patternt a Ctrl-R helyett. Sokat tud segíteni ha valami olyasmit keresek ami nem mostanában volt vagy bonyolult a parancssor vagy csak nem emlékszem fejből valamelyik paraméter pontos értékére stb. Ha gyakran kell futtatni akkor készítek rá scriptet, de ezt előre nem mindig lehet tudni. A Ctrl-R-t csak akkor szoktam használni ha az adott sessionben akarok keresni.
~ $ echo "$HISTSIZE"
5000000
Enni nem kér sokat, nem lassítja a munkát egyáltalán.
- A hozzászóláshoz be kell jelentkezni
Az szép nagy. Előfordult már, hogy tele lett? :)
Én is rendszeresen grep-pelek hasonló okokból.
- A hozzászóláshoz be kell jelentkezni
Még nem és most hogy így utána számoltam én valószínűleg már meg sem fogom érni hogy beteljen. Furcsa dolog így szembesülni a saját halandóságoddal.
- A hozzászóláshoz be kell jelentkezni
En is valami hasonlot szoktam ha tobbszor volt ugyanaz a command (kis kulonbseggel) es nem vagyok benne biztos melyik a helyes varians akkor en igy szoktam:
`history | grep cmd -A10 -B10`
Igy megkapom a command elotti es utani 10 masik commandot is es igy, hogy van context altalaban mar tudom, hogy melyik verzio volt azt amivel tovabb jutottam. :D
- A hozzászóláshoz be kell jelentkezni
-C10
- A hozzászóláshoz be kell jelentkezni
Nekem is default 1000, de volt már rá példa, hogy jól jött volna, ha régebbre vissza tudok keresni. Viszont nem volt elég gyakran probléma ahhoz, hogy rákeressek, hogy melyik változóban tárolódik a limit, és átállítsam.
Csaba
- A hozzászóláshoz be kell jelentkezni
Nalam a HISTSIZE 1000000, ebbol most laptopon olyan ~737000, desktopon meg ~618000 van hasznalva. Nekem mintha 500 remlene bash defaultnak, de az valami katasztrofa, mar a 2 nappal ezelotti commandok sincsenek benne, szerintem meg azt meg azokban az idokben talaltak ki amikor meg kilobyteban mertek a memoriat es megabyteban a HDD-ket es nem tunt fel nekik hogy kozbe eltelt vagy 20 ev.
Es igen, mielott valaki megkerdezi, mar tobbszor jol jott hogy ki tudtam keresni evekkel korabban lefuttatot parancsokat. Van vagy 20 MB a bash_history-m, nem tudom memoria hasznalatban ez mennyit jelent, de idaig meg sose volt gond vele (egy browser magaban tobb ramot eszik kb mint 10 bash).
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
Hoppá, most veszem észre, hogy egyet elrontottam: akinek pont 100000 a history-ja, azt kérem, jelölje be a "> 100000" opciót. Értelemszerűen ott ">=" kellene legyen.
Szerk.: köszi a javítást!
- A hozzászóláshoz be kell jelentkezni
Egyéb: végtelen. Még egyetemista koromban írtam egy kis izét ami felülírja a BASH PROMPT_COMMAND -ot úgy hogy az azonnal beleappendolja a kiadott parancsot egy fájlba aminek a nevében az adott nap dátuma megvan. Ez a home-omban van egy mappában, amit mindig költöztetek ha új a gépre teszek szert.
Így aztán minden kiadott bash parancs megvan 15 évre visszamenőlegesen, ami egyrészt néha hasznos, másrészt roppant szórakoztató. Másik előnye, hogy ha behal/kilövöm a terminált akkor nem veszik el ez a history. Nem emlékszem már a use case-re de akkor ez jól jött valamiért.
- A hozzászóláshoz be kell jelentkezni
szintén zenész.
én PROMPT_COMMAND-ban mentem le mindig az előző parancs start, end time-ját, PIPESTATUS-át és cwd-jét egy fájlba és a ctrl-R -t egy fzf alapú szkriptre van bindolva amivel bele tudok keresni ebbe az extended bash history-ba. az fzf nem tud sortörést így a hosszú parancsok az fzf preview paneljában vannak ott teljesen.
példa:
2021-07-20 16:23:21 uname | rev # 0|0 0s /tmp
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
az fzf nem tud sortörés
Na ettol megorulok, le tudnad irni nalad hogy mukodik a preview panel, mik a beallitasok?
- A hozzászóláshoz be kell jelentkezni
ez a preview paraméter:
--preview='echo {} | bash -c bash_extended_history_colorize | fold -s -w $FZF_PREVIEW_COLUMNS
a "{}" az ugye az aktuális sor amin állok (parancs, dátum, idő, stb),
a bash_extended_history_colorize az ANSI kódokkal kiszinezi úgy ahogy a sima list részben is ki vannak szinezve.
a fold meg feltördeli egész szavak határán.
:)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Benne van még a bash -ben az a race condition error, hogy ha egyszerre zársz be több bash logint (pl. gnome terminal tabok közös X-el kinyirása) akkor a teljes history ugrik? :)
Régi kedvencem.
Amúgy 500.
- A hozzászóláshoz be kell jelentkezni
azt hiszem ez megoldja: HISTCONTROL=histappend
- A hozzászóláshoz be kell jelentkezni
Nem szoktam állítgatni, eddig még nem volt kevés az alapértelmezett!
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox
- A hozzászóláshoz be kell jelentkezni
Ures, nincs ilyen valtozo. Meg valamikor evekkel ezelott beallitottam egy SO topic alapjan, hogy ne torlodjon, es uj rendszereken telepites utan az egyik elso dolog, amit beallitok. Regi szokasom, hogy kommentbe beleirom, hogy mi alapjan allitottam be (ill. sokszor azt is, hogy en modositottam azt a reszt), ez alapjan aki jobban utana akar menni, megteheti.
#http://stackoverflow.com/questions/9457233/unlimited-bash-history
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
A masik az .inputrc, ebbol a kovetkezo ket bejegyzes az erdekes:
# page up
"\e[5~": history-search-backward
# page down
"\e[6~": history-search-forward
"Keresni" ugy szoktam benne, hogy elkezdem irni, es pgup-ot nyomok.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
bash 4.3 óta a "-1" való erre. Ezért van a szavazásban a "< 0" opció.
- A hozzászóláshoz be kell jelentkezni
fisht használok, ott beégetett 256k van (ami egyébként dedupolt)
- A hozzászóláshoz be kell jelentkezni
Nem tudom, hogyan müxik fish alatt a dedupe, de szerintem az nem feltétlenül hasznos. Gyakran előfordul, hogy nem egy parancsot keresek, hanem egy parancs sorozatot.
dedupe-nak én csak a környezeti változóknál látom értelmét.
- A hozzászóláshoz be kell jelentkezni
man ksh /HISTSIZE
The default is 512
Ennyi nekem bőven elég. (bash-ben meg 500)
- A hozzászóláshoz be kell jelentkezni
minden parancsot így írok be:
id@nopara:~# unset HISTFILE ; command
viccet félretéve, distro default, de most hogy végigpörgettem az 1000-et nem lenne hülyeség a sokkal több.
nincs aláírásom
- A hozzászóláshoz be kell jelentkezni
Sima, vagy root userként, vagy összesen? :)
- A hozzászóláshoz be kell jelentkezni
Zsh-t használok, szerintem ezt az értéket defaulton hagytam, még minden megvolt, ami kellett.
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods
- A hozzászóláshoz be kell jelentkezni
Mostanában leggyakrabban zsh-t használok macOS-en, abban 2000. A poén kedvéért megnéztem a munkahelyi Windowsomon:
- CMD + Clink (clink set history_file_lines): 10000
- PowerShell ($MaximumHistoryCount): 4096
- Git Bash (echo $HISTSIZE): 500
- WSL Ubuntu Bash (echo $HISTSIZE): 1000
- A hozzászóláshoz be kell jelentkezni