Tiedostotunnisteet unix-komentosarjoille [suljettu]

suljettu . Tämä kysymys on mielipidepohjainen . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

  • Joskus löytyy komentosarjakomentosarja ilman shebangia (tai ilman exec-käyttöoikeuksia). Tällöin .sh: llä päättyvä nimi voi olla vihje käyttäjälle ajaa ne bash script.sh -merkillä (tai sh, tietysti ).
  • Jos komentosarjakomennolla on laajennus, se on yleensä .sh. En ole koskaan nähnyt .ksh- tai .bash-komentosarjaa. Suurimmalla osalla komentotiedostoja ei kuitenkaan ole laajennusta, kuten kaikilla esim. /Etc/init.d/* -sovelluksessa olevilla skripteillä.
  • Vaikka yksinkertaistettu johtopäätös (kyllä tai ei) on mielipide, huomioitavat asiat eivät ole .

Vastaa

Kutsun vain .sh jotain, joka on tarkoitettu kannettavaksi (ja toivottavasti on kannettava).

Muuten mielestäni on vain parempi piilottaa kieli. Varovainen lukija etsi se silti shebang-riviltä. (Käytännössä .bash tai .zsh jne. jälkiliitteitä käytetään harvoin.)

kommentit

  • Pelkästään tältä sivulta voimme nähdä melko vähäisen määrän käyttäjiä. Miksi sanot heidän olevan " käytetty harvoin "? Onko lainauksia? Vai perustuuko tämä vain kokemukseesi?
  • Käytän .bash jos ' on tarkoitus hankkia toisen komentosarjan avulla ja on yhteensopiva vain bashin jne. kanssa. Jos sen voi hankkia mikä tahansa Bourne-yhteensopiva kuori, kuten sh, dash tai bash, antaisin sille .sh -laajennuksen. Jos se ' on tarkoitettu suoritettavaksi, en halua ' laittaa laajennusta.

Vastaus

Sanoisin, että tiedostopääteille ei ole olemassa ”hyviä käytäntöjä”, vain teknisesti: Unix / Linux / * BSD-tiedostojärjestelmät eivät ”t tuen laajennukset sinänsä. Se, mitä kutsut laajennukseksi, on vain yhden tiedostonimen pääte. Se eroaa VM / CMS-, VMS-, MS-DOS- ja Windows-tiedostojärjestelmistä ja käyttöjärjestelmistä, joissa erityinen kohta inode- moraaliekvivalentti on varattu laajennukselle.

Se pieni röyhkeys on nyt ohi. komentotiedoston nimi. Ohjelma on ohjelma: suoritettavien ominaisuuksien erottamisessa ei ole mitään hyötyä. Ei unixia, linuxia tai mitä tahansa ydintä on päättänyt kutsua tulkin joihinkin tiedostoihin vain tiedostonimen jälkiliitteen takia. Kaikki on tehnyt #! rivi tai jokin muu tavujen ”maaginen numero” sarja tiedoston alussa. Itse asiassa päättäminen suoritettavasta tiedostosta ”laajennuksen” perusteella on yksi tekijöistä, jotka tekevät Windowsista haittaohjelmamagneetin. Katso, kuinka monessa Windowsin haittaohjelmahuijauksessa on tiedosto nimeltä jotain.jpg.exe – oletusarvoisesti uudempi Windows ei näytä ”.exe” -laajennusta ja rohkaise käyttäjää kaksoisnapsauttamaan kuvaa. kuvanäkymä käynnissä, haittaohjelma toimii.

Se, mitä voit ajatella suoraviivaisena komentona, on silti yleensä komentosarjakomentosarja. Joskus cc on ollut sh-skripti, firefox on sh-skripti, startx on sh-skripti. En usko, että siellä on kognitiivisia tai organisaation etu komentosarjan merkitsemisestä .sh-pääteellä.

Kommentit

  • Olen eri mieltä! Tehtäväni on pakata tuhansia sovelluksia sisältävä sovellus tiedostot, jotka vaihtelevat binäärisistä suoritettavista tiedostoista komentosarjoihin (ksh, bash ja jotkut vanhat csh). Minulle uskokaa minua, että se tekee eron voidakseen tietää yhdellä silmäyksellä (tai regexillä) mitä sellainen tiedosto, josta keskustelemme ja jota etsimme. Tarkoitan, että siellä voisi b e etuna erotettavien asioiden erottamisessa ja parhaiden käytäntöjen pitäisi kannustaa ilmoittamaan nimenomaisesti tiedostotyyppi.
  • @rahmu: kirjoita se vastaukseksi. Anna joitain yksityiskohtia siitä, miten regex-erotettavissa olevat nimet auttavat sinua pakkaamaan (ja ehkä ylläpitämään) kyseistä sovellusta. Huomaa erityisesti vuorovaikutus tiedoston tulkinnan ja tiedostonimen ' jälkiliitteen ja sen välillä, miten tämä auttaa sinua suorittamaan tehtäviä. Olen ' kiinnostunut vakavista argumenteista näkemystäni vastaan ja olen ' halukas vaihtamaan, jos ' olen vakuuttunut. Äänestin kommenttisi sen todistamiseksi.
  • Haluaisin, valitettavasti voin puhua vain nykyisestä kokemuksestani nykyisessä työssäni.En tiedä ' paljon hyvistä käytännöistä ja standardeista yleensä ; Mielestäni minun pitäisi tehdä tutkimusta ennen vastauksen lähettämistä tänne. ' tarkastelen sitä tänä iltana työn jälkeen 🙂
  • @rahmu " -tiedosto " -komento on olemassa tiedostotyypin määrittämiseksi. Se pystyy erottamaan eri kuoreille kirjoitetut komentosarjat.
  • Jos annat komentosarjalle .sh -laajennuksen, ' ll on kirjoitettava että .sh osana komennon nimeä aloitettaessa sitä. Se ' on tärkein syy, miksi en halua ' halua laittaa kyseistä laajennusta (sama kuin mikä tahansa, jolla on shebang-viiva). BTW, Windows-ongelma ei ole .exe -etuliite sinänsä (se ' on triviaali tehdä ohjelmasta nimeltään image.jpg Linuxissa), mutta tosiasia, että Windows yleensä piilottaa kyseisen laajennuksen, yhdistettynä siihen, että suoritettavan tiedoston käynnistämiseen ja asiakirjan avaamiseen tarvittavat toimet ovat täsmälleen samat.

vastaus

Koska olen työskennellyt lukuisissa? nix -ympäristöissä, minun on pitänyt kirjoittaa monenlaisissa kuoret. Uskokaa tai älkää, eri alustoilla kuoret eivät ole samat. Joten jos pidät henkilökohtaista kirjastoa useissa kuorissa (tarvittaessa), on erittäin hyödyllistä käyttää laajennuksia kuorien tunnistamiseen. Tällä tavalla, kun siirryt toiselle alustalle ja kuori on hieman erilainen, tiedät, mitkä komentosarjat kohdistetaan muokkauksiin. .sh .ksh .bsh .csh …

kommentit

  • Tämä näyttää olevan sopusoinnussa unix.stackexchange.com/questions/31760/ …
  • Eikö sinulla ole #! komentosarjan alussa (esim. #!/bin/bash)?
  • Gnu / Linux, BSD ja UNIX ovat kaikki Unix-tiedostoja. Ei tarvetta? Nix. Linux on ydin, android käytti Linuxia, mutta ei Unix (ellet lisää ylimääräistä ohjelmistoa, jolloin sinulla on Unix-sovellus).
  • @ ctrl-alt-delor: " Unix " on tavaramerkki . Ihmiset käyttävät usein "? Nix " välttääkseen tavaramerkkiongelman (ja pedantit).
  • @JS ` UNIX ' on The Open Groupin tavaramerkki. Unix ja unix eivät ole greens.org/about/unix.html

vastaus

Älä käytä laajennusta suoritettaville tiedostoille, koska ne eivät ole keskenään vaihdettavissa. Kuvittele, että sinulla on shell-komentosarja a.sh, kirjoita sitten uudelleen pythoniin a.py, sinun on nyt muutettava jokainen ohjelma, joka kutsuu sinua komentosarjoksi , olet vuotanut toteutuksen yksityiskohtia.

Koko tiedostojen nimilaajennusasia Mircosoftin Windowsissa on sotkuinen: esimerkiksi mikä olisi voinut olla a.audio, b.audio, c.audio, on a.mp3, b.wav, c.ogg, ja d.picture, e.picture, f.picture on d.jpeg, e.png, f.gif. Useimmiten meitä ei välitetä, mikä muoto ääni tai kuva on sisään. Meidän täytyy myös viettää kauan opettaa uusille käyttäjille kaikkia tiedostotunnisteita.

Kommentit

Vastaus

Kuten sanoitte, Unix-tiedostotunnisteet ovat puhtaasti tietoja. Tarvitset vain komentosarjan, jolla on oikea shebang ja että se on suoritettava.

Sinulla ei voi olla laajennusta tai käyttää .sh.

I henkilötiedot käyttävät seuraavia käytäntöjä käytetystä kuoresta riippumatta (csh, tcsh, bash, sh, …):

  • ei laajennuksia järjestelmä- tai korkealaatuisille komentosarjoille (erittäin harvinainen).
  • klassisten komentosarjojen .sh, matalasta korkeaan.

Kommentit

  • Mitä tarkoitat " klassisilla skripteillä, matalasta korkeaan "?
  • Luulen Tarkoitin tällä abstraktiota tai organisaatiotasoa. Eli et ' välitä, mitä kieltä / komentosarjatyökalua käytetään joidenkin komentojen takana: joten älä ' käytä laajennuksia. Muille on hyvä tietää, että se on bash tai jokin eksoottinen ksh-komentotiedosto (jolla on oikea laajennus). … mutta se oli 2 vuotta sitten;)

Answer

Shell-komentosarjan laajennukset ovat varsin hyödyllisiä. Esimerkiksi kirjoitan usein komentosarjoja, joissa on useita tiedostoja useilla kielillä (esim.bash, awk ja lua) samassa hakemistossa. Jos minun täytyy etsiä merkkijonoa vain bash-tiedostoista, laajennus tekee tästä erittäin kätevän väärien positiivisten tulosten vähentämiseksi. Tai jos haluan laskea kaikkien bash-koodien rivilaskun kyseiselle projektille.

On tuskaa joutua kirjoittamaan laajennus ohjelmaa suoritettaessa, joten teen myös symlinkin ilman laajennusta tärkein suoritettava tiedosto, muokata / suorittaa sitä tarvitsematta kirjoittaa laajennusta joka kerta. Symlinkit ovat halpoja ja helppoja.

Kommentit

vastaus

Kuten muut ovat sanoneet, komentotulkki ei välitä laajennuksista. Se kuitenkin sallii tiedostojen nopean tunnistamisen ihmisen kautta. Näen tiedostot, jotka päättyvät .py tai .sh ja tiedän nopeasti, mitä heidän (ainakin) pitäisi olla. Kuten Steve sanoo, etsiminen tiedostotunnisteella tai rivien laskeminen ovat myös käytännön näkökohtia.

Vastaa

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