Giriş kabuğunda görüntülenenleri nasıl değiştirebilirim?


23

Bilgi istemi ( .bashrc) aracılığıyla bir kabuğun içinde görünme biçimini daha iyi tanımaya başladım , ancak şimdi ilk giriş yaptığımda görüntülenen başlangıç ​​öğelerini değiştirmeye çalışıyorum. EC2 örneğimde, ne zaman gördüğüm bu Giriş yapıyorum:

         __|  __|_  )  Fedora 8
         _|  (     /    32-bit
        ___|\___|___|


  Welcome to: 

    Wowza Media Server 2 for Amazon EC2

      Version: 2.0.0.08

Ev Mint bilgisayarımda, giriş yaparken gördüğüm şey:

Welcome to Linux Mint 11 Katya (GNU/Linux 2.6.38-8-generic x86_64)

Welcome to Linux Mint
* Documentation:  http://www.linuxmint.com

Last login: Tue Jun 21 17:44:05 2011

Bu nerede tanımlanır? Çılgın ASCII sanat EYLEMİ için bunu nasıl ayarlayabilirim ?

Yanıtlar:


31

Oturum açma isteminden önce görüntülenen metin saklanır /etc/issue(ilgili bir dosya vardır, /etc/motdkullanıcı giriş yaptıktan sonra, kabuk başlamadan önce görüntülenir). Bu sadece normal bir metin dosyası, ancak bir kaç çıkış dizisini kabul ediyor:

  • \b - Mevcut hattın Baudrate'i.
  • \d -- Geçerli tarih.
  • \s - Sistem adı, işletim sisteminin adı.
  • \l - Geçerli tty satırının adı.
  • \m- Makinenin mimari tanımlayıcısı, örn. i486
  • \n - Makinenin adı, ana bilgisayar adı olarak da bilinir.
  • \o - Makinenin alan adı.
  • \r- İşletim sisteminin yayın numarası, örn. 1.1.9.
  • \t -- Şimdiki zaman.
  • \u - Giriş yapan mevcut kullanıcı sayısı.
  • \U - "1 kullanıcı" veya "kullanıcılar" dizesi, oturum açmış olan geçerli kullanıcıların sayısıdır.
  • \v- İşletim sisteminin sürümü, örneğin. tarih vb.

Makinemde ben var:

Bu \ n (\ s \ m \ r) \ t \ l

Hangisi olarak işlenir:

Bu etütler-1 (Linux x86_64 2.6.39-gentoo) 17:43:10 tty1


6

Dosya /etc/issueve /etc/issue.netgiriş programı tarafından görüntülenen dosyalardır. Diğer cevapta belirtildiği gibi içine özel genişleme karakterleri koyabilirsiniz. Ancak linux_logo programını da denemek isteyebilirsiniz . Sizin için gerçekten güzel ASCII sanat sorunu dosyaları üretebilir.


4

kullanıcı açıkça oturum açtıktan sonra görüntülenen mesajları soruyor, tüm "/ etc / issue" giriş yapılmadan ÖNCE görüntülenir + şifre girilmeden önce konu dışı.

'Giriş kabuğu' adımları:

  1. "/ etc / issue" da yer alan mesajları göster
  2. kullanıcı isteyin ve geçin
  3. Günün Mesajını şuradan göster:

    / Etc / motd

    /etc/update-motd.d

  4. start / etc / profile ve ~ / .bash_profile

NB .bashrc NON giriş kabuğu için çalıştırıldı

@Naftuli Kay, ASCII resminizi / etc / motd dosyasına ekleyin veya kullanıcıdan bağımsız baskılar için /etc/update-motd.d veya / etc / profile komut dosyası ekleyin veya tekli kullanıcı baskıları için ~ / .bash_profile


3

Gönderen Ubuntu Ask :

Ubuntu açılış ekranı

Kontrol Ask Ubuntu diğer kullanıcılardan yorum ve muhtemelen yeni cevaplar için yukarıdaki bağlantıyı.

now bash betiği

Ağır kaldırma bunu gösteren sıçrama bileşenidir:

$ now

Weather report: Edmonton               March 2018            ┌────────────────────────────┐
                                  Su Mo Tu We Th Fr Sa          ┏━┓╺┓  ┏━┓┏━┓   ┏━┓┏┳┓   
     \   /     Sunny                           1  2  3          ┃┃┃  ╹┏━┛┗━┫   ┣━┛┃┃┃   
      .-.      -23--14 °C          4  5  6  7  8  9 10          ┗━┛╺┻╸╹┗━╸┗━┛         
    (   )     22 km/h          11 12 13 14 15 16 17       └────────────────────────────┘
      `-’      14 km              18 19 20 21 22 23 24  
     /   \     0.9 mm             25 26 27 28 29 30 31  

Evet gerçekten Edmonton'da -14 ve -23 gibi hissediyor. Uzun hafta sonunu içeride yeni gelen Tomb Raider 2013'ü oynayarak geçirmenin tam zamanı! Belki Vancouver veya Montreal’e gitmek için bu özgeçmişi tadabilirsin.

İşte kod:

#!/bin/bash

# NAME: now
# PATH: $HOME/bin
# DESC: Display current weather, calendar and time
# CALL: Called from terminal or ~/.bashrc
# DATE: Apr 6, 2017. Modified: Mar 30, 2018.

# NOTE: To display all available toilet fonts use this one-liner:
#       for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done

# Setup for 92 character wide terminal
DateColumn=34 # Default is 27 for 80 character line, 34 for 92 character line
TimeColumn=61 # Default is 49 for   "   "   "   "    61 "   "   "   "

#--------- WEATHER ----------------------------------------------------------

# Current weather, already in color so no need to override
echo " "
# Replace Edmonton with your city name, GPS, etc. See: curl wttr.in/:help
curl wttr.in/Edmonton?0 --silent --max-time 3
# Timeout #. Increase for slow connection---^

echo " "
echo " "                # Pad with blank lines for calendar & time to fit

#--------- DATE -------------------------------------------------------------

# calendar current month with today highlighted.
# colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
#        36=cyan, 37=white

tput sc                 # Save cursor position.
# Move up 9 lines
while [ $((++i)) -lt 10 ]; do tput cuu1; done

# Depending on length of your city name and country name you will:
#   1. Comment out next three lines of code. Uncomment fourth code line.
#   2. Change subtraction value and set number of print spaces to match
#      subtraction value. Then place comment on fourth code line.

Column=$(($DateColumn - 10))
tput cuf $Column        # Move x column number
printf "          "     # Blank out ", country" with x spaces
#tput cuf $DateColumn    # Position to column 27 for date display


# -h needed to turn off formating: /ubuntu/1013954/bash-substring-stringoffsetlength-error/1013960#1013960
cal -h > /tmp/terminal

CalLineCnt=1
Today=$(date +"%d")
# Prefix with space when length < 2
if [[ ${#Today} < 2 ]] ; then
    Today=" "$Today
fi
printf "\033[32m"   # color green -- see list above.

while IFS= read -r Cal; do
    printf "$Cal"
    if [[ $CalLineCnt > 2 ]] ; then
        # See if today is on current line & invert background
        tput cub 22
        for (( j=0 ; j <= 18 ; j += 3 )) ; do
            Test=${Cal:$j:2}            # Current day on calendar line
            if [[ "$Test" == "$Today" ]] ; then
                printf "\033[7m"        # Reverse: [ 7 m
                printf "$Today"
                printf "\033[0m"        # Normal: [ 0 m
                printf "\033[32m"       # color green -- see list above.
                tput cuf 1
            else
                tput cuf 3
            fi
        done
    fi

    tput cud1               # Down one line
    tput cuf $DateColumn    # Move 27 columns right
    CalLineCnt=$((++CalLineCnt))
done < /tmp/terminal

printf "\033[00m"           # color -- bright white (default)
echo ""

tput rc                     # Restore saved cursor position.

#-------- TIME --------------------------------------------------------------

tput sc                 # Save cursor position.
# Move up 9 lines
i=0
while [ $((++i)) -lt 10 ]; do tput cuu1; done
tput cuf $TimeColumn    # Move 49 columns right

# Do we have the toilet package?
if hash toilet 2>/dev/null; then
    echo " "$(date +"%I:%M %P")" " | \
        toilet -f future --filter border > /tmp/terminal
# Do we have the figlet package?
elif hash figlet 2>/dev/null; then
    echo $(date +"%I:%M %P") | figlet > /tmp/terminal
# else use standard font
else
    echo $(date +"%I:%M %P") > /tmp/terminal
fi

while IFS= read -r Time; do
    printf "\033[01;36m"    # color cyan
    printf "$Time"
    tput cud1               # Up one line
    tput cuf $TimeColumn    # Move 49 columns right
done < /tmp/terminal

tput rc                     # Restore saved cursor position.

exit 0

Ön şartlar

Fantezi zaman göstergesi için yüklemeniz gerekir toilet:

sudo apt install toilet

Başka bir fantezi zaman göstergesi için (ancak fantezi kadar değil) kurun figlet:

sudo apt install figlet

Aksi halde saat "normal" fontta gösterilecektir.

Hava

Hava curl wttr.in/cityname?0komutu tarafından sağlanır . Terminal kullanımınızda: curl wttr.in/:helpek ayrıntılar için.

Hava: Şehir adını değiştir

Bu kod bölümünü değiştirmek Edmontonve şehir adınızı değiştirmek isteyeceksiniz :

# Replace Edmonton with your city name, GPS, etc. See: curl wttr.in/:help
curl wttr.in/Edmonton?0 --silent --max-time 3
# Timeout #. Increase for slow connection---^

Unicode /Москва(Moskova) gibi şehir isimleri için desteklenir . YEGEdmonton gibi havaalanı mektupları desteklenmektedir .

Hava Durumu: Ülke adını kaldır

Terminal 92 karakter genişliğinde ayarlandığında, hava durumu "Edmonton, Kanada" olarak görüntülenir. beğenim için çok uzun:

Country.png ile hava durumu

Terminal varsayılan 80 karakter genişliğinde ayarlandığında daha da kötüsü:

Hava ülke adı 80 chars.png

Sorunu gidermek için, ", Ülke Adı" bu kodla ekranda boşluk bırakılır:

# Depending on length of your city name and country name you will:
#   1. Comment out next three lines of code. Uncomment fourth code line.
#   2. Change subtraction value and set number of print spaces to match
#      subtraction value. Then place comment on fourth code line.
Column=$(($DateColumn - 10))
tput cuf $Column        # Move x column number
printf "          "     # Blank out ", country" with x spaces
#tput cuf $DateColumn    # Position to column 27 for date display

Eğer betiğin bu kısmı ile ilgili yardıma ihtiyacınız olursa, lütfen yardım için aşağıya yorum yazınız.

Terminal ekranı genişlik ayarları

Değiştirerek boşluğu terminal ekranı genişliğinize ayarlayın:

# Setup for 92 character wide terminal
DateColumn=34 # Default is 27 for 80 character line, 34 for 92 character line
TimeColumn=61 # Default is 49 for   "   "   "   "    61 "   "   "   "

Hepsini birlikte bağlama ~/.bashrc

Senin düzenleyin ~/.bashrcaltına şu satırları dosyası ve ekleyin:

# Splash Calendar and time
now

# ASCII Linux distribution display
screenfetch

`~ / .Bashrc" dosya değişikliklerini kaydedin.

Gereken Ubuntu bilgisini görüntülemek için screenfetch:

sudo apt install screenfetch

Etrafta screenfetchalışveriş yapmak için benzer ekran paketleri var!

Aynı komut istemini "─────────" ile komutlar arasında satır bölen komut istemini istiyorsanız, aşağıdaki satırları değiştirin:

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
unset color_prompt force_color_prompt

Ayırıcı çizginin uzunluğunun, screenfetchçıktı genişliğiyle çakıştığını unutmayın . Bu durumda 92 karakter genişliğinde ve gnome-terminaltercihler buna göre belirlenir.


1

Ssh arka planını oturum açma sırasında bir mesaj gösterecek şekilde yapılandırabilirsiniz. Sshd_config dosyasında Banner direktifiyle görüntülenecek dosyayı belirtin:

Banner /etc/ssh/ssh_banner

Dosya adı herhangi bir dosya olabilir, ancak akıl sağlığı için sshd_config dosyası ile birlikte / etc / ssh içinde saklıyorum.


0

Debian ana bilgisayarının /etc/rc.local dizininde / etc / issue adresini içeren küçük bir komut dosyası.

/bin/echo "This is \n(\s \m \r) \t \l">/etc/issue
/bin/sleep 10 # This is optional, sometimes OS need more time to get ip address while DHCP, otherwise maybe you will get nothing :(
/sbin/ip a| /bin/grep inet| /bin/grep -v -E "inet6|127.0.0.1"| /bin/sed "s/\s*//"|/bin/sed "s/\/24.*//" >>/etc/issue

güncelleme: sesler "ip-4-br a" ile yeterli geliyor teşekkürler @Mathieu CAROFF!


man ip. Düğmesini kullanın -br. Ayrıca -4anahtarı kullanmak isteyebilirsiniz . Emriniz kısaltılabilir ip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'. Daha da iyisi, kullan hostname -I.
Mathieu CAROFF

0

Bu ssh'yi kullanmak için ÖNEMLİ Afiş: Gün Vurgulamak sadece cal -h yerine "ncal -bh> / tmp / terminal" ile çalışır. cal -h artık çalışmıyor / var (Ubuntu 18.04)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.