OS X ilə Mütləq Bash script yolu

OS X üzərindəki mövcud işləmə skriptinə mütləq şəkildə girməyə çalışıram.

Mən oxumaq üçün bir çox cavab gördüm - readlink -f $0 . readlink OS X, BSD ilə eyni olduğundan, sadəcə işləmir (GNU versiyası ilə işləyir).

Bunun üçün hazır bir həll varmı?

62
26 авг. Mighty Rubber Duck tərəfindən 26 avqustda qoyulmuşdur . 2010-08-26 07:24 '10 at 7:24 am 2010-08-26 07:24
@ 13 cavab

realpath() C funksiyası var, amma komanda xəttində bir şey görmürəm. Burada sürətli və çirkli bir dəyişiklik var:

 #!/bin/bash realpath() { [[ $1 = }" ;; *) echo "${PWD}/${1}" ;; esac } 
1
11 марта '11 в 19:34 2011-03-11 19:34 Cavab 11 mart 2011- ci il tarixində saat 19: 34-də verilmişdir

Bu suala bir göz atın. Cavabı daha qısa tapdım.

osx scriptinin skript daxilindəki yolunu al ... yolda bir yer olanda

0
21 июня '11 в 22:48 2011-06-21 22:48 Cavab Nate tərəfindən 21 iyun 'da 11:48' də verildi. 2011-06-21 22:48

Sembolik əlaqələri, həmçinin Mac tipli takma adları həll edən C parçasıdır:

http://my-sample-code.googlecode.com/svn/trunk/realpath/realpath.c

0
03 дек. cavab ernie 03 dekabr verilir . 2017-12-03 03:08 '17 at 3:08 2017-12-03 03:08

Şərhçi ilə ünsiyyətə əsaslanaraq, mən çox çətin olduğunu və Ubuntu ilə eyni şəkildə davranan bir real yolun həyata keçirilməsinin çətin bir yola malik olmadığını qəbul etdim.

Amma sonrakı versiya, köşedeki hadisələri idarə edə bilər, ən yaxşı cavab MacBook üçün gündəlik ehtiyaclarımı təmin edə bilməz və təmin edir. Bu kodunuzu ~ / .bashrc saytına yerləşdirin və yadda saxlayın:

  • arg yalnız 1 fayl və ya dir, heç bir joker karakter ola bilər
  • kataloqda və ya faylda boşluq yoxdur
  • ən az bir fayl və ya dir qaynaq dir var
  • Istifadə etmək üçün çekinmeyin. .. / şey təhlükəsizdir

  # 1. if is a dir, try cd and pwd # 2. if is a file, try cd its parent and concat dir+file realpath() { [ "$1" = "" ]  return 1 dir='dirname "$1"' file='basename "$1"' last='pwd' [ -d "$dir" ]  cd $dir || return 1 if [ -d "$file" ]; then # case 1 cd $file  pwd || return 1 else # case 2 echo 'pwd'/$file | sed 's/\/\//\//g' fi cd $last } 
-2
07 янв. cavab verildi 2019-01-07 06:43 '19 'da 6:43' də 2019-01-07 06:43

haqqında digər suallar və ya sual