Sziasztok.
Kicsit meguntam, hogy ha jó mélyen benn vagyok egy könyvtárban, a sor végén kell elkezdenem írni a parancsot. Amikor meg kapok egy szkrollozható parancssori kimenetet, az elejét úgy kell kibogozni...
Új sorba kerül a prompt, és függőleges vonallal jelzem, hol kezdődik.
# .bash.rc HEKK
if [ $(id -u) -eq 0 ];
then # root felhasznalokent:
PS1="\e[0;31m┌──••[\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h:\w\a\]$PS1]\e[0;31m────\n💀\n└─# \e[1;32m"
else # normal userkent:
PS1="\e[0;34m┌──••[\[\e]0;\u@\h:\w\a\]$PS1]────\n\e[0;34m└─> \e[0;37m"
fi
Rootként a vonalak átváltanak pirosra, és egy kedves kis halálfej is jelzi, hogy alvajáróként inkább máshol kotorásszak:
┌──••[user@gollum:~$ ]────
└─> cd ..
┌──••[user@gollum:/home$ ]────
└─> sudo bash
[sudo] user jelszava:
┌──••[root@gollum:/home# ]────
💀
└─#
Kíváncsi vagyok, ki miként működteti a parancssorát. A csiliviliből itt is ki lehet nőni, ahogy az ember a compizból is visszatér az xfce4 alapjához. Viszont egy idő után a terminálon tényleg kiesik az ember szeme...
- 731 megtekintés
Hozzászólások
Ugyanezzel a problémával küzdöttem. Már nem tudom, hogy mi mit jelent,
de ez csak a közvetlen directorit írja ki : PS1=$"[./\W]$"
Pl : [./github]$
- A hozzászóláshoz be kell jelentkezni
Ez nem jó. A dollárjel elé kell egy visszafelé perjel, mert anélkül mindig $-t fog kiírni jogkijelzésre, és nem fog átváltani #-re.
Egyébként nekem is hasonlóan egyszerű. Bash alatt PS1='\e[1;96m\w \e[1;95m\$ \e[0m' a beállítás, zsh-ban pedig PS1='%B%F{14}%~ %f%F{13}%# %f%b' volt. Mindkettő a teljes mappaelérési utat írja ki, és a jogkijelző karaktert, CGA kék-lila színsémában, a retró hatás kedvéért. A különbség csak annyi, hogy zsh alatt más formátumban kell megadni, meg zsh-ban egy weboldal ajánlása alapján % jelet használtam a nem rendszergazdai jogú usernek a szokásos $ helyett, ezt is csak azért, hogy látszódjon, hogy másik shellben vagyok.
Lehet szebbre kéne cicomázni, de jó így. Előtte sok évig a default, színek nélküli "user@hostname ~ $" formátumot használtam de ez csak akkor hasznos, ha sokféle user és sokféle host között ugrál az ember, pl. szerverekre SSH-zik be. Én viszont csak desktopnak használom a gépem, és csak egyféle userrel ügyködök, legtöbbször normál jogokkal, és csak ritkán adminjogokkal.
Kicsit igénytelenre van állítva, de a shellt magát nem használom sokat. Pedig szinte mindenre CLI, TUI, terminálos programokat, saját scripteket használok, de azok legtöbbször saját terminálablakukban nyílnak hotkey-re, és eleve saját színekkel, beállításokkal jönnek. Így hiába fut minden terminálban (alig pár alkalmazás kivétel csak, Firefox, Steam, Goldendict, játékok), magát a shell promptot nem kell sokat néznem, nem kell sokat gépelnem, nem kell mappákat váltogatnom.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Mire gondolsz pontosan? Leírnád, hogy mi szerinted a javítás?
- A hozzászóláshoz be kell jelentkezni
Leírta:
ne $ legyen a promptban, hanem \$ -> ha nem vagy root (UID =/= 0), akkor $, ha root vagy akkor # látszik a helyén.
- A hozzászóláshoz be kell jelentkezni
PS1="[./\W]\$ "
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Még így sem jó hanem ez a nyerő :
PS1="[./\W]\\$"
- A hozzászóláshoz be kell jelentkezni
shell alapismeretek:
"-páron belül bizonyos karakterek megtartják speciális jelentésüket. A \ például megtartja speciális jelentését, de csak bizonyos speciális karakterek előtt, mint pl. \ vagy $. Ellenben '-ok között elveszítik. Azaz lehet "-ek közé is rakni, de akkor erre is kell figyelni. (Azaz ezért kellett \\$ és ezért \W.) Ennél egyszerűbb aposztrófokat használni.
PS1='[./\W]\$ '
- A hozzászóláshoz be kell jelentkezni
Lásd, amit a kolléga írt lentebb. Bár szerintem a ./ sem kell benne, a / mappában kicsit furcsán mutat, ha [.//] van elérési útként. Helyette: PS1="[\W] \$ " Fontos a szóköz a $ után, hogy a prompttal ne folyjanak egybe a bevitt parancsok.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
[22:51:27] username @hostname [ ~ ]
$ echo $PS1
\[\e[1;92m\][\t] \u @\h [ \w ]\n$\[\e[m\]
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
Nem szeretem ezeket a több soros, emeletes promptokat, de ez mindenkinél megszokás, egyéni ízlés, felhasználási mód kérdése. Nekem ezek elvonják a figyelmem a parancsok kimenetitől.
Root shellhez a sudo bash helyett érdemesebb az su parancsot kiadni magában, ami az su root alaknak felel meg. Ez akkor is működik, ha nincs fent az adott gépen a Bash, hanem csak másmilyen shell, meg ha a rootnak másmilyen shell van beállítva, azt is tiszteletben tartja. Plusz nem minden gépen van sudo, BSD-ken pl. doas van helyette, amelyiken van sudo, ott nem biztos, hogy hozzá van adva a /etc/sudoers-ben, hogy sudo-val garázdálkodhat.
Épp így, ha csak fájlt akarsz rendszergazdai joggal szerkeszteni, akkor a sudo editorod /szerkesztendo/fajl helyett a sudoedit /szerkesztendo/fajl vagy sudo -e editorod /szerkesztendo/fajl formában érdemes kiadni, ez csak a fájlt éri el emelt jogosultságokkal, másolatot készít belőle a /tmp/-be, majd az editort már normál userként futtatja, és a végén emelt jogosultságokkal visszamásolja a fájlt az eredeti helyére, ha a tartalma megváltozott.
A sudo az ilyen senki földje igazából, kivételesen érdemes csak használni, 1-1 parancs erejéig. GUI-s alkalmazásnál meg a pkexec parancsot kell használni helyette, ami a polkitet használja. Aki GUI text editort használ, és az editorja fuse-képes (pl. gedit), az tudja a rendszergazdai jogot igénylő fájlokat admin:///szerkesztendo/fajl formában elérni, és csak az eléréshez fog jelszót kérni, de az editor nem fog rootként futni! Hasonlót tud az Emacs is. Így ha sudo-t használsz, nagyon gondold át, hogy 1) indokolt-e, 2) nem kéne-e helyette valami másik jogosultságemelő megoldást használni.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
"Root shellhez a sudo bash helyett érdemesebb az su parancsot kiadni magában" - Itt ugye a "sudo su -" -ra gondoltál :-) Ilyet mondjuk jól összerakott sudoers esetén nem igazán köll... :-P
- A hozzászóláshoz be kell jelentkezni
Az egyetlen különbség a su és a sudo su között, hogy az előbbi a root jelszavát kéri be, az utóbbi a parancsot kiadó user jelszavát. Ez utóbbi akkor praktikus, ha a root jelszót nem akarják kiadni. Meg mint mondtam, a sudo vagy nincs fent, vagy nincs engedélyezve a usernek, ezért biztosan (és rövidebb, lustáknak kényelmesebb) az egymagában kiadott su.
A kötőjelben igazad van, azt talán hasznos lehet a su után betenni, mert az a root beállításait inicializálja, környezeti változók, belép a root mappájába, de ez az esetek nagy részében nem szükséges. Sőt, a topikindító kollégának nem kívánatos, mert akkor a promptba betett haláli unicode-os halálfej emoji karakter nem fog neki megjelenni, hanem a root-nak rendszer szinten beállított PS1-ét kapja az arcába.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
"Ez utóbbi akkor praktikus, ha a root jelszót nem akarják kiadni" - márpedig több adminos környezetben a root jelszó az borítékos, és használat után cserélendő, jobb esetben úgy, hogy mondjuk hárman adnak 4-4 karaktert a jelszóhoz, így biztosítva azt, hogy a teljes root jelszónak senki sincs birtokában.
"a topikindító kollégának nem kívánatos, mert akkor a promptba betett haláli unicode-os halálfej emoji karakter nem fog neki megjelenni" - az UID=0 -hoz tartozó PS1-et nem a pistike user beállításaiban kell megadni - ugyanis a pistike user beállításai rootként indított shell esetén nem kívánatos, hogy lefussanak, illetve hatással legyenek az immáron root userként futó munkamenetre.
- A hozzászóláshoz be kell jelentkezni
mondjuk hárman adnak 4-4 karaktert a jelszóhoz, így biztosítva azt, hogy a teljes root jelszónak senki sincs birtokában
Akkor már inkább Shamir's Secret Sharing.
- A hozzászóláshoz be kell jelentkezni
Lehet az is, én olyat írtam, amit láttam működni, és két dolog kellett hozzá: papír, meg íróeszköz.
- A hozzászóláshoz be kell jelentkezni
Az enviro átvétel szerintem kellően fontos ahhoz, hogy figyeljünk rá. Ennek megfelelően vagy su - vagy sudo -i amit használok, attól függően hogy root jelszó ismert vagy user jelszó van meg.
Egy sudo su - értelmét nem látom, egy sudo -u vagy sudo bash meg nem veszi át a környezetet, így az user $HOME-ban hirtelen root tulajdonosú .bash_history jelenik meg meg egyéb nyalánkságok, ami később mezei userként nem fogja könnyebbé tenni az életet.
- A hozzászóláshoz be kell jelentkezni
root jelszo... - zeller entered the chat
- A hozzászóláshoz be kell jelentkezni
PS1="\e[0;34m┌──••[\[\e]0;\u@\h:\w\a\]$PS1]────\n\e[0;34m└─> \e[0;37m"
^^^^^^^^ ^^^^^^^^
Ezeket rakd \[ és \] közé, különben a sorszerkesztés csúnyán bugos lesz.
- A hozzászóláshoz be kell jelentkezni
Igen, átírtam már, de azóta újat alkottam :-)
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
- A hozzászóláshoz be kell jelentkezni
A legfontosabb gépemen:
PS1='$ '
:-)
- A hozzászóláshoz be kell jelentkezni
íme a Kali lunuxból egy kiforrottabb többsoros megoldás, jelenleg ennél maradok. Többoldalas parancssori kimeneteknél valóban jól láthatóvá teszi a visszakeresést az a csodavonalazás... A sorok száma itt már csak 2, nem 3.
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
# The following block is surrounded by two delimiters.
# These delimiters must not be modified. Thanks.
# START KALI CONFIG VARIABLES
PROMPT_ALTERNATIVE=twoline
NEWLINE_BEFORE_PROMPT=yes
# STOP KALI CONFIG VARIABLES
if [ "$color_prompt" = yes ]; then
# override default virtualenv indicator in prompt
VIRTUAL_ENV_DISABLE_PROMPT=1
prompt_color='\[\033[;32m\]'
info_color='\[\033[1;34m\]'
prompt_symbol=㉿
# prompt_symbol=☣️
# prompt_symbol=☢️
if [ "$EUID" -eq 0 ]; then # Change prompt colors for root user
prompt_color='\[\033[;94m\]'
info_color='\[\033[1;31m\]'
prompt_symbol=💀
fi
case "$PROMPT_ALTERNATIVE" in
twoline)
PS1=$prompt_color'┌──${debian_chroot:+($debian_chroot)──}${VIRTUAL_ENV:+(\[\033[0;1m\]$(basename $VIRTUAL_ENV)'$prompt_color')}('$info_color'\u${prompt_symbol}\h'$prompt_color')-[\[\033[0;1m\]\w'$prompt_color']\n'$prompt_color'└─'$info_color'\$\[\033[0m\] ';;
oneline)
PS1='${VIRTUAL_ENV:+($(basename $VIRTUAL_ENV)) }${debian_chroot:+($debian_chroot)}'$info_color'\u@\h\[\033[00m\]:'$prompt_color'\[\033[01m\]\w\[\033[00m\]\$ ';;
backtrack)
PS1='${VIRTUAL_ENV:+($(basename $VIRTUAL_ENV)) }${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ';;
esac
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*|Eterm|aterm|kterm|gnome*|alacritty)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
[ "$NEWLINE_BEFORE_PROMPT" = yes ] && PROMPT_COMMAND="PROMPT_COMMAND=echo"
# enable color support of ls, less and man, and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias diff='diff --color=auto'
alias ip='ip --color=auto'
export LESS_TERMCAP_mb=$'\E[1;31m' # begin blink
export LESS_TERMCAP_md=$'\E[1;36m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m' # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m' # begin underline
export LESS_TERMCAP_ue=$'\E[0m' # reset underline
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
A kimenet ezután szintén megváltoztatja a vonal színét root esetén, de a promptot is, és egy kedves kis halálfej jelzi a veszélyes üzemmódot:
┌──(user㉿gepnev)-[~]
└─$ sudo bash
[sudo] a jelszava:
┌──(user💀gepnev)-[~]
└─# cd /
┌──(root💀gepnev)-[/]
└─#
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
- A hozzászóláshoz be kell jelentkezni
Kicsit overkillnek érzem ezt már :D
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
Nekem nagyon megtetszett :-)
Ami a legfontosabb: ha mélyen benne vagyok egy könyvtárstruktúrában, nem a sor végén kell bogarásznom a prompt után.
Felpakoltam minden distribemre, persze néhol biohazardra változtatva az emojt.
Viszont mivel az emoj X nélkül megy a levesbe, azt szerintem szanálom.
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
- A hozzászóláshoz be kell jelentkezni
Nem kell szanálni az emojit. Be tudod állítani, hogy külön PS1 prompt legyen akkor, ha a Bash érzékeli, hogy virtuális tty-ból/terminálból fut, és külön PS1 prompt, ha nem. Pl.
if [[ $TERM == "x_terminálod_neve" ]]
then
export PS1="emojis_cumó"
else
export PS1="alternatív_tty_prompt"
fi
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
if [ -n "$PS1" ]; then
if [ "$EUID" = "0" ]; then
export PS1="\n\[$Red\]┌─\u:\[$Cyan\][\w]\[$Red\] \n└──\\$ \[$NC\]"
else
export PS1="\n\[$Green\]┌─\u:\[$Yellow\][\w]\[$Green\] \n└──\\$ \[$NC\]"
fi
fi
- A hozzászóláshoz be kell jelentkezni
Nekem a $Red stb. nincs definiálva.
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
- A hozzászóláshoz be kell jelentkezni
Van, amikor környezeti változó is jól jön a promptban...:
PS1="\[\e[3;36m\][\t] \u@\h:\w \[\e[0;31m\]ORACLE_SID=\$ORACLE_SID\[\e[0m\] \\$ "
- A hozzászóláshoz be kell jelentkezni
☠ \W \u $? $
- A hozzászóláshoz be kell jelentkezni
ez szebb halálfej :-)
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
- A hozzászóláshoz be kell jelentkezni