2014-07-06 4 views
1

저는 배쉬에서 괜찮 았고 다른 사람들의 작업과 파일을 조사하여 배움과 같은 것을 배웠습니다. 다운로드를 통해 얻은 결과는 구성 파일에서 발견되었습니다.Learning Bash - 파일 구성

# Name of the executable. 
as_me=`$as_basename "$0" || 
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 
    X"$0" : 'X\(//\)$' \| \ 
    X"$0" : 'X\(/\)$' \| \ 
    .  : '\(.\)' 2>/dev/null || 
echo X/"$0" | 
    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } 
     /^X\/\(\/\/\)$/{ s//\1/; q; } 
     /^X\/\(\/\).*/{ s//\1/; q; } 
     s/.*/./; q'` 

누구나 어떻게 작동하는지 설명 할 수 있습니까? 나는 sed 명령을 사용하는 많은 사람들이 대체와 엇갈림을 위해 앞뒤 슬래시를 사용하는 것을 본다.하지만 이것은 어리석은 짓이다.

+0

이것은 어떤 구성 파일입니까? – ooga

+0

gtk-server-2.3.1-sr – Chirality

+0

구형 및 구형 백틱 대신 괄호로 변경해야합니다. var = $ (code) – Jotne

답변

2

우선 나는 확실히 좀 sed 물건에 갈거야, 둘째로이 link

그리고 체크 아웃 제안 :

  • sed '/ : 이것은 정규식 검색의 시작입니다
  • ^.* : 줄의 시작 부분 (^)을 검색하고 임의의 문자 (.)의 금액 (즉, 0 이상 : *)을 검색하십시오. ^[]에서 사용됩니다. 목록에 없음을 의미합니다.
  • /\([^/][^/]*\) : 그런 다음 슬래시를 찾아 슬래시 ([^/][^/]*)가없는 문자 그룹을 찾습니다. \(...\)은 나중에 참조 할 수있는 그룹을 표시합니다. 나는 나중에 그것을 얻을 것이다.
  • \/*$ : 다음 슬래시 금액하고 ($)
  • / 라인의 끝을 검색 : 제의 발생 이스케이프 슬래시 정규식의 단부의 시작을 표시 무엇 sed가 광고를 발견하면해야 정규 표현식과 일치합니다
  • { s//\1/; q; } : 불행히도, 나는 중괄호가 무엇인지 정확히 모르겠습니다. 일반적으로 명령을 그룹화하는 데 사용되지만 슬래시의이 부분에 사용 된 것을 본 적이 없습니다. 어쨌든, 언급 된대로 sed은 역 참조를 허용합니다. \1은 처음 두 개의 슬래시 사이의 첫 번째 (및 유일한) 그룹화를 참조합니다. 즉 [^/][^/]*입니다. q은 명령을 완료 할 때 sed을 종료하는 데 사용되지만 중괄호로되어 있기 때문에 전체 명령에 어떤 영향을 미치는지 정확하게 알 수는 없습니다.

어쨌든, 그게 어쨌든 sed의 작동 방식에 대해 잘 이해해야합니다. 내가 말할 수있는 것에서 그것은 sed이 파일 경로를 통해 찾고 그 중 하나를 잡는 것 같습니다. 예를 들어, some/crazy/file/location.ext이 전달됩니다. crazy
도움이 되었기를 바랍니다. 그것이 정말 좋은 도구이기 때문에 그 링크를 확인하십시오 한 번 그것의 교수형있어. 오, 혹시 sed을 사용한다면 : 또는 _ 또는 심지어 |을 구분 기호로 사용하십시오! 이것은 위의 sed의 역겨운 피켓 울타리 모양을 방지합니다.

으로 알 수 있었지만 쉽게 읽을 수는 없지만 쉽게 읽을 수 있습니다.

+0

삭제 해 주셔서 감사합니다! 예, 제가 sed를 사용할 때 저는 사용합니다. – Chirality