
를 배울 때 bash
Linux의 새로운 설치에 이미 존재하는 bash 스크립트를 연구하는 것이 매우 도움이 된다는 것을 알았 습니다 . 많은 모호한 기능에 대한 대부분의 튜토리얼에서./etc/profile
/etc/rc.d/init.d/
bash
지금 배우는 sed
중이고 기능 목록이 훨씬 짧긴 하지만(그래서 모든 기능을 살펴봤다는 것을 알고 있음) sed
실제로sed
사용된존재하다생산, 튜토리얼의 예제만이 아닙니다.
sed
이를 위해 Ubuntu나 CentOS와 같은 잘 알려진 Linux 배포판에 이미 존재하는 스크립트를 조사하고 싶습니다 . 문제는 그런 스크립트가 어디에 있는지 전혀 모른다는 것입니다. 나는 이것을 시도했지만 file /bin/* | grep script | sed 's/:.*//' | xargs grep sed
결과가 없었습니다. file /sbin/* | grep script | sed 's/:.*//' | xargs grep -c sed
내가 보고 있는 일부 결과를 반환하지만 지금까지 확인한 결과는 모두 sed
스크립트에 포함된 코드이거나 한 줄의 코드일 뿐입니다.bash
sh
sed
Linux 상자에서 실제 스크립트를 어디에서 찾을 수 있습니까 ? 아니면 sed
실제로 생산에 사용되는 일부 스크립트를 찾을 수 있는 좋은 온라인 장소가 있습니까? (읽어보는 것은 sedtris
내 목적에 별로 도움이 되지 않습니다. ;)
답변1
노력하다:
grep -w sed /etc/init.d/*
grep -w sed /etc/grub.d/*
grep -w sed /usr/bin/*
첫 번째는 내 시스템(debian)에서 25개의 스크립트를 생성하고, 두 번째는 47개의 스크립트를 생성합니다.
이 옵션은 전체 단어를 찾는 것으로 -w
제한됩니다 . 이렇게 하면 "or"와 같은 단어와의 일치를 피할 수 있습니다 .grep
sed
used
supposedly
답변2
운영 체제를 보는 대신 프로그램을 구축하는 데 사용되는 스크립트를 살펴보십시오.
모든 autoconf 생성 configure
스크립트에는 sed 스크립트와 자체가 포함되어 있습니다.생산하다sed 스크립트가 포함된 스크립트입니다. 이는 템플릿 파일의 이름을 Makefile.in
generate 와 같은 값으로 바꿉니다 Makefile
. 예를 들어(웹 검색을 통해 쉽게 찾을 수 있음) 이 블록은 다음과 같습니다.config.status
distcc 파일사용 방법을 설명합니다 sed
:
그래도:; #(의 $as_dir 케이스 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\\''/g"`;; *) as_qdir=$as_dir;; 이삭 as_dirs="'$as_qdir'$as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| X"$as_dir": 'X\(//\)[^/]' \| X"$as_dir": 'X\(//\)$' \| X"$as_dir" : 'X\(/\)' \| 2>/dev/null || $as_echo X"$as_dir" $as_echo X"$as_dir"| sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ 큐 } /^X\(\/\/\)[^/].*/{ s//\1/ 큐 } /^X\(\/\/\)$/{ s//\1/ 큐 } /^X\(\/\).*/{ s//\1/ 큐 } s/.*/./;물어보세요'' 테스트 -d "$as_dir"&& break 완벽한
autoconf 외에도 스크립트는 프로그램 구축(및 설치)의 다른 측면에 유용합니다. 이것manlinks.sed
ncurses의 스크립트는 프로그램으로 간주될 만큼 충분히 깁니다.
물론 중고품을 grep
찾는데 도 사용할 수 있습니다. sed
그러나 독립형 스크립트는 일반적으로 ".sed" 파일 접미사를 사용합니다. "locate .sed"
그걸 찾아보세요.
내 컴퓨터를 빠르게 확인해 보면 매우 긴 sed 스크립트가 있습니다(주석을 포함해 2,000줄이 넘습니다).
#!/usr/5bin/sed -nf
#r
#r sokoban.sed - aurlio marinho jargas <[email protected]>
#r Changes by Gunnar Ritter, October 2002.
#r
#r Sccsid @(#)sokoban.sed 1.7 (gritter) 10/12/03
#r
#r motivated by reading the amazing Adventure (Colossal Cave) history
#r <http://www.rickadams.org/adventure/a_history.html>
#r GPL levels took from Mike Sharpe's sokoban.vim <http://vim.sourceforge.net>
#r
#r IMPORTANT
#r this script has terminal control chars, so you must DOWNLOAD this
#r file. just copy/paste or printing it to a file (lynx) will NOT work.
#r
#r THE GAME
#r you know sokoban. everybody knows sokoban.
(누군가가 만들어줬어.컬러 버전의).
sed
이는 Heirloom 도구에서 테스트하는 데 사용되는 세 가지 스크립트 중 하나입니다.
-rw-r--r-- 1 tom 285 Oct 6 2002 makefile
-rw-r--r-- 1 tom 3664 Oct 11 2003 hanoi.sed
-rw-r--r-- 1 tom 2338 Oct 11 2003 math.sed
-rw-r--r-- 1 tom 42552 Oct 11 2003 sokoban.sed
마찬가지로 sed 프로그램에 대한 흥미로운 예가 있습니다:
#!/bin/sed -nf
# dc.sed - an arbitrary precision RPN calculator
# Created by Greg Ubben <[email protected]> early 1995, late 1996
#
# Dedicated to MAC's memory of the IBM 1620 ("CADET") computer.
# @(#)GSU dc.sed 1.1 06-Mar-1999 [non-explanatory]
#
# Examples:
# sqrt(2) to 10 digits: echo "10k 2vp" | dc.sed
# 20 factorial: echo "[d1-d1<!*]s! 20l!xp" | dc.sed
# sin(ln(7)): echo "s(l(7))" | bc -c /usr/lib/lib.b | dc.sed
# hex to base 60: echo "60o16i 6B407.CAFE p" | dc.sed
# tests most of dc.sed: echo 16oAk2vp | dc.sed
#
# To debug or analyze, give the dc Y command as input or add it to
# embedded dc routines, or add the sed p command to the beginning of
# the main loop or at various points in the low-level sed routines.
# If you need to allow [|~] characters in the input, filter this
# script through "tr '|~' '\36\37'" first (or use dc.pl).
마찬가지로 다음과 같은 페이지가 있습니다.dc.sed의 컬러 버전
그러나 autoconf 및 빌드 스크립트를 찾을 수 있습니다 sed
.
추가 자료:
답변3
그것들은 당신의 컴퓨터에 없고 아마도 사용되지 않을 것입니다. 그러나 당신이 사용하고 있는 이 사이트를 검색하는 것보다 더 나쁜 일을 할 수도 있습니다.5점 이상인 답변 텍스트에서 sed를 검색하세요., 실제 질문에 대한 답변과 일치하기 때문입니다.