Как изменить приглашение терминала Linux, чтобы оно соответствовало ParrotOS

Хотел просто добавить комментарий, но пока не могу...

Поскольку вы выполняете его из cron, cron не знает о папке, в которой вы хотите создать файл, поэтому просто перейдите в этот каталог в начале скрипта, чтобы решить эту проблему:

[root@centostest testexport1]# cat createfilescript.sh
#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/testexport1

cd  /testexport1

today="$( date +"%Y%m%d" )"
number=0

while test -e "$today$suffix.txt"; do
    (( ++number ))
    suffix="$( printf -- '-%02d' "$number" )"
done

fname="$today$suffix.txt"

printf 'Will use "%s" as filename\n' "$fname"
touch "$fname"

Другое дело — строка cron:

30      *       *       *       *       /bin/bash/ /testexport1/./createfilescript.sh

если скрипт находится в /testexport1/, измените строку cron на эту

30      *       *       *       *       /bin/bash /testexport1/createfilescript.sh
3
24.12.2019, 11:18
4 ответа

Возможно, я немного опоздал с этим постом... но для тех, кому он покажется полезным, я вставил весь .bashrcфайл из ParrotOS сюда .

Это та часть, которая вас интересует:

if [ "$color_prompt" = yes ]; then
    PS1="\[\033[0;31m\]\342\224\214\342\224\200\$([[ \$? != 0 ]] && echo \"[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200\")[$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]root\[\033[01;33m\]@\[\033[01;96m\]\h'; else echo '\[\033[0;39m\]\u\[\033[01;33m\]@\[\033[01;96m\]\h'; fi)\[\033[0;31m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;31m\]]\n\[\033[0;31m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]\[\e[01;33m\]\\$\[\e[0m\]"
else
    PS1='┌──[\u@\h]─[\w]\n└──╼ \$ '
fi
1
28.04.2021, 23:26

Вот мой код (не совсем такой же ).

  • Для перехода на новую строку есть\n
  • Забавная стрелка — это символ Юникода (вставить из Интернета -поиск)
  • Цветовой код должен быть между \[и \], чтобы сообщить bash, что они имеют нулевую ширину (, чтобы он мог выполнять свои функции, например, переходить к началу строки. Все делается с точным расчетом .
  • Такие коды, как \033[01;32m, являются цветовыми кодами.

    if [ "$color_prompt" = yes ]; then
      PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
    _PS1="$PS1"
    PS1='$(echo $title|sed -r -e "s/^(\S+)\$/[\1]/")'"${_PS1}\n#↳ "
    
2
28.04.2021, 23:26

Воссоздание оболочки:

Shell using ParrotOS-like prompt

Создайте файл ~/.bash _prompt (или любое имя, которое вам нравится )и вставьте в него этот код

# Define some basic colors using tput (8-bit color: 256 colors)
red="\[$(tput setaf 160)\]"
bright_red="\[$(tput setaf 196)\]"
light_purple="\[$(tput setaf 60)\]"
orange="\[$(tput setaf 172)\]"
blue="\[$(tput setaf 21)\]"
light_blue="\[$(tput setaf 80)\]"
bold="\[$(tput bold)\]"
reset="\[$(tput sgr0)\]"

# Define basic colors to be used in prompt
## The color for username (light_blue, for root user: bright_red)
username_color="${reset}${bold}${light_blue}\$([[ \${EUID} == 0 ]] && echo \"${bright_red}\")";
## Color of @ and ✗ symbols (orange)
at_color=$reset$bold$orange
## Color of host/pc-name (blue)
host_color=$reset$bold$blue
## Color of current working directory (light_purple)
directory_color=$reset$light_purple
## Color for other characters (like the arrow)
etc_color=$reset$red
# If last operation did not succeded, add [✗]- to the prompt
on_error="\$([[ \$? != 0 ]] && echo \"${etc_color}[${at_color}✗${etc_color}]─\")"
# The last symbol in prompt ($, for root user: #)
symbol="${reset}${bold}${bright_red}$(if [[ ${EUID} == 0 ]]; then echo '#'; else echo '$'; fi)"


# Setup the prompt/prefix for linux terminal
PS1="${etc_color}┌─${on_error}[";
PS1+="${username_color}\u"; # \u=Username
PS1+="${at_color}@";
PS1+="${host_color}\h" #\h=Host
PS1+="${etc_color}]-[";
PS1+="${directory_color}\w"; # \w=Working directory
PS1+="${etc_color}]\n└──╼ "; # \n=New Line
PS1+="${symbol}${reset}";

export PS1

Комментарии должны в достаточной степени описывать функциональность кода.
Если вы хотите использовать это приглашение автоматически, добавьте следующий код в файл ~/.bashrc

# Use custom bash prompt (will execute.bash_prompt script)
if [ -f ~/.bash_prompt ]; then
 . ~/.bash_prompt
fi
4
28.04.2021, 23:26

Получите переменную PS1 из ОС Parrot через env, скопируйте ее в файл и используйте на другом Linux.

Так может быть и так:

echo "PS1=\"$PS1\"" > setPS1

и используйте этот файл как скрипт в других Linux. Возможно, вам потребуется экспортировать переменную. Настроить его в ~/.bashrcбыло бы легко.

0
28.04.2021, 23:26

Теги

Похожие вопросы