Puncte:3

Cum pot testa rapid o cale în bash pentru a determina dacă vreun segment al acesteia este un link simbolic?

drapel us

Dacă am o cale ca aceasta cu un link simbolic:

/acest/unul/doi/trei

Există o linie rapidă pentru a determina dacă încă un segment din cale este o legătură simbolică? De exemplu, aș dori să detectez dacă acest, unu, Două, sau Trei în exemplul de mai sus a fost o legătură simbolică.

O modalitate este de a compara calea care conține linkul simbolic cu rezultatul readlink -f <cale>. Mă întreb dacă există o cale mai rapidă.

Puncte:6
drapel cn

Aș folosi:

dacă [[ "$my_path" != "$(realpath --canonicalize-existing $my_path)" ]];atunci
  echo Calea $my_path este o cale relativă sau conține legături simbolice.
altfel
  echo Calea $my_path este absolută.
fi
Puncte:0
drapel eg

poți să folosești awk și imprimare pentru utilizare în acest caz sau în alte cazuri, este foarte simplu și util. În acest caz, puteți face pasul de mai jos: 1 = deschide ~/.bashrc și adaugă mai jos sfârșitul comenzii acestui fișier

alias issymlink="sh /bin/issymlink.sh $1"

2 = creați un fișier cu conținutul de mai jos în /bin/issymlink.sh

#!/bin/bash
cale=$1
tip=`stat $1 | awk 'FNR == 2 {printează $8;}'`

dacă [ $tip != „simbolic” ]
atunci
  echo Calea $1 este absolută, iar tipul acestei căi este $type
altfel
  echo Calea $1 este legături simbolice.
fi

3 - deconectare și autentificare sau tastați su în terminal și intră in sfarsit poti tasta issymlink PATH/TO/FILE/OR/DIRECTORY în terminal și intrați pentru a verifica tipul de fișier

exemplu de utilizare și ieșire:

issymlink /lib
Calea /lib este absolută și tipul acestei căi este director

issymlink /etc/nginx/sites-enabled/default
Calea /etc/nginx/sites-enabled/default este legături simbolice.
Puncte:-1
drapel in

Din: https://unix.stackexchange.com/questions/96907/how-do-i-check-if-a-file-is-a-symbolic-link-to-a-directory

Ce vedem? [[ -L ]] - face treaba asta pentru noi. Noroc.

# cat script.sh 
#!/bin/bash

/bin/rm -vfr asta
/bin/mkdir -vp this/one/two/three

/bin/mv -v this/one/two/three this/one/two/real_three
/bin/ln -vfs real_three this/one/two/three
/bin/ls -altr this/one/two/

/bin/mv -v this/one/two this/one/real_two
/bin/ln -vfs real_two this/one/two
/bin/ls -altr this/one/two/
/bin/ls -altr this/one/

tmp="acest/unu/doi/trei"

în timp ce [ "$tmp" != "." ]; do
        dacă [ -L "$tmp" ]; atunci
                /bin/echo „$tmp - este o legătură simbolică”.
        altfel
                /bin/echo "$tmp - nu este o legătură simbolică."
        fi
        tmp=$(/bin/dirname $tmp)
Terminat

Utilizare:

# bash script.sh 
eliminat „acest/unu/doi”
directorul eliminat „this/one/real_two/real_three”
a eliminat „this/one/real_two/three”
directorul eliminat „this/one/real_two”
directorul eliminat „acest/unul”
directorul eliminat „acest”
/bin/mkdir: a creat directorul „this”
/bin/mkdir: a creat directorul „this/one”
/bin/mkdir: a creat directorul „this/one/two”
/bin/mkdir: a creat directorul „this/one/two/three”
redenumit „acest/unul/doi/trei” -> „acest/unul/doi/trei_reale”
„acest/unu/două/trei” -> „trei_reale”
total 12
drwxr-xr-x 2 root root 4096 8 august 20:08 real_three
drwxr-xr-x 3 root root 4096 Aug 8 20:08 ..
lrwxrwxrwx 1 root root 10 Aug 8 20:08 three -> real_three
drwxr-xr-x 3 root root 4096 Aug 8 20:08 .
redenumit „acest/unul/doi” -> „acest/unul/doi_reale”
„acest/unu/două” -> „real_două”
total 12
drwxr-xr-x 2 root root 4096 8 august 20:08 real_three
lrwxrwxrwx 1 root root 10 Aug 8 20:08 three -> real_three
drwxr-xr-x 3 root root 4096 Aug 8 20:08 .
drwxr-xr-x 3 root root 4096 Aug 8 20:08 ..
total 12
drwxr-xr-x 3 root root 4096 Aug 8 20:08 ..
drwxr-xr-x 3 root root 4096 8 august 20:08 real_two
lrwxrwxrwx 1 root root 8 Aug 8 20:08 two -> real_two
drwxr-xr-x 3 root root 4096 Aug 8 20:08 .
acesta/unul/doi/trei - este o legătură simbolică.
acesta/unul/doi - este o legătură simbolică.
acesta/unul - nu este o legătură simbolică.
aceasta - nu este o legătură simbolică.
drapel in
Deși acesta nu este un răspuns rău, tonul este. Vă rugăm să rescrieți răspunsul pentru a fi mai real.
drapel us
Nu este un răspuns bun. Nici măcar nu este ceea ce întrebam.
Michael Hampton avatar
drapel cz
@StevieD Ați cerut o modalitate de a determina dacă o cale conține o componentă care era un link simbolic. Acest lucru face asta și pare a fi 100% precis. Este mult prea verbos în exemple.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.