Mitä -f tarkoittaa bash-komentosarjan if-lauseessa?

Yritän ymmärtää tätä koodia:

if [ -f /etc/bashrc ]; then . /etc/bashrc fi 

En ole varma mitä -f tarkoittaa tarkalleen.

Vastaa

Tarkastettava asiaankuuluva man-sivu on itse kuoren sivu, bash, koska -f on kuoren tarjoama toiminto, se on sisäänrakennettu.

Järjestelmässäni (CentOS 7), hieno mies -sivu kattaa sen. grep ei välttämättä tuota samoja tuloksia muissa jakeluissa. Jos kuitenkin suoritat man bash ja etsit sitten ”-f”, sen pitäisi antaa tarvitsemasi tulokset.

$ man bash | grep -A1 "\-f file$" -f file True if file exists and is a regular file. $ 

vastaus

Lyhyesti sanottuna koodikappale lähtee /etc/bashrc -tiedoston, jos sellainen on, ja olemassaolo varmistetaan komennolla [, jolla -f on operaattori / parametri.

if...then...else...fi -käsky komentosarjan komentosarjassa arvioi komentojen poistumistilan – 0 onnistumisesta Joten on asianmukaista tehdä jotain tällaista:

if ping -c 4 google.com; then echo "We have a connection!" fi 

Komento on sinun tapauksessasi [ joka tunnetaan myös nimellä test -komento. Joten se on täysin kelvollinen tehdä

if test -f /etc/bashrc; then . /etc/bashrc fi 

-f lippu tarkistaa kaksi asiaa: annettu polku on olemassa ja se on säännöllinen tiedosto. Jos /etc/bashrc on itse asiassa hakemisto tai puuttuu, testin pitäisi palauttaa nollan ulkopuolinen poistumistila signaalin epäonnistumiseen

Tämä komento oli alun perin erillinen komento, joka ei ole osa shellin sisäänrakennettuja komentoja. Nykyään useimmilla Bourne-tyyppisillä kuoreilla on se sisäänrakennettuna, ja sitä shell käyttää.

Sivuhuomautuksessa /etc/bashrc näyttää tarpeettomalta ylitiedostolta, jota järjestelmänvalvojasi tai koodinpätkän alkuperäinen kirjoittaja käyttää. On olemassa /etc/bash.bashrc, joka on tarkoitettu koko järjestelmän kattavaksi rc-tiedostoksi bashille, joten sitä voidaan odottaa käyttävän.

Katso myös:

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *