Yedi beklenmeyen Bash değişkeni

Hakkında notlar dizisinin devamı az bilinen fonksiyonlar bash, sana bilmediğin yedi değişken göstereceğim.

1) PROMPT_COMMAND

Çeşitli yararlı bilgileri göstermek için istemi nasıl değiştireceğinizi zaten biliyor olabilirsiniz, ancak herkes, istem her gösterildiğinde bir kabuk komutunu çalıştırabileceğinizi bilmiyor.

Aslında birçok karmaşık bilgi istemi manipülatörü, bilgi isteminde görüntülenen bilgileri toplamak amacıyla komutları yürütmek için bu değişkeni kullanır.

Bunu yeni bir kabukta çalıştırmayı deneyin ve oturuma ne olacağını görün:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

Eğer koşarsan history Konsolda, daha önce hesabınız altında yürütülen komutların bir listesini alacaksınız.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Bu değişken ayarlandıktan sonra, yeni girişler komutla birlikte zamanı da kaydeder, böylece çıktı şu şekilde görünecektir:

1871 Bunu şu adreste çalıştırdım: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Bunu şu adreste çalıştırdım: 01/05/19 13:38:19 curl bbc.co.uk 1873 Bunu şu adreste çalıştırdım: : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Bunu şu adreste çalıştırdım: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Bunu şu adreste çalıştırdım: 01 /05/19 13:39:25 sudo su -

Biçimlendirme şuradaki karakterlerle eşleşir: man date.

3) CDPATH

Komut satırında zaman kazanmak için, bu değişkeni kullanarak komutları verdiğiniz kadar kolay bir şekilde dizinleri değiştirebilirsiniz.

Olarak PATH, değişken CDPATH yolların iki nokta üst üsteyle ayrılmış bir listesidir. Komutu çalıştırdığınızda cd göreli bir yolla (yani başta eğik çizgi olmadan) kabuk, varsayılan olarak eşleşen adlar için yerel klasörünüze bakar. CDPATH gitmek istediğiniz dizin için verdiğiniz yollarda arama yapacaktır.

yüklerseniz CDPATH bu şekilde:

$ CDPATH=/:/lib

ve ardından şunu girin:

$ cd /home
$ cd tmp

o zaman her zaman sona ereceksin /tmp Nerede olduğunun bir önemi yok.

Ancak dikkatli olun, çünkü yerel olanı listede belirtmezseniz (.) klasörünü seçerseniz başka bir klasör oluşturamazsınız. tmp ve her zamanki gibi ona gidin:

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

Hata!

Bu, yerel klasörün daha tanıdık değişkene dahil olmadığını fark ettiğimde hissettiğim kafa karışıklığına benzer. PATH... ancak bunu PATH değişkeninizde yapmanız gerekir çünkü indirilen bazı kodlardan sahte bir komut çalıştırmanız için kandırılabilirsiniz.

Benimki başlangıç ​​noktasına göre belirlenir:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

Hiç merak ettin mi, yazarak exit sizi mevcut bash kabuğunuzdan başka bir "ana" kabuğa mı götürecek yoksa konsol penceresini tamamen kapatacak mı?

Bu değişken, bash kabuğunda ne kadar derin yuvalanmış olduğunuzun izini sürer. Yeni bir terminal oluşturursanız 1'e ayarlanır:

$ echo $SHLVL
1

Daha sonra başka bir kabuk işlemi başlatırsanız sayı artar:

$ bash
$ echo $SHLVL
2

Bu, çıkıp çıkmayacağınızdan emin olmadığınız veya nerede yuvalandığınızı takip edemediğiniz komut dosyalarında çok yararlı olabilir.

5) LINENO

Değişken aynı zamanda mevcut durumu analiz etmek ve hata ayıklamak için de kullanışlıdır. LINENOoturumda o ana kadar yürütülen komutların sayısını bildiren:

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

Bu, çoğunlukla komut dosyalarında hata ayıklarken kullanılır. Gibi satırlar ekleme echo DEBUG:$LINENOkomut dosyasında nerede olduğunuzu (veya olmadığınızı) hızlı bir şekilde belirleyebilirsiniz.

6) REPLY

Benim gibi, genellikle şöyle kod yazarsanız:

$ read input
echo do something with $input

Değişkeni oluşturma konusunda endişelenmenize gerek kalmaması şaşırtıcı gelebilir:

$ read
echo do something with $REPLY

Bu da aynı şeyi yapıyor.

7) TMOUT

Güvenlik nedeniyle üretim sunucularında çok uzun süre kalmayı veya tehlikeli bir şeyin yanlışlıkla yanlış terminalde çalıştırılmasını önlemek için, bu değişkenin ayarlanması bir koruma işlevi görür.

Belirli bir saniye boyunca hiçbir şey girilmezse kabuk çıkar.

Yani bu bir alternatif sleep 1 && exit:

$ TMOUT=1

Kaynak: habr.com

Yorum ekle