유닉스 쉘용 명령 언어. 프로그래밍 언어이자 통합자로서의 쉘. While 및 Until 문

오픈 소스 소프트웨어( 오픈 소스) - 생성된 소프트웨어 개발 방법 소스 코드프로그램은 공개되어 있습니다. 즉 공개적으로 보고 수정할 수 있습니다. 이를 통해 누구나 이미 생성된 코드를 자신의 필요에 맞게 사용할 수 있으며, 오픈 소스 프로그램 개발에 도움을 줄 수도 있습니다.

"개방형" 라이센스는 소프트웨어가 항상 무료로 제공될 것을 요구하지 않습니다. 그러나 가장 성공적인 오픈 소스 소프트웨어 프로젝트 중 다수는 여전히 무료입니다.

대다수 열려 있는프로그램이 동시에 무료(GNU GPL)과 그 반대의 경우도 마찬가지입니다. 왜냐하면 개방형 소프트웨어와 자유 소프트웨어의 정의가 유사하고 대부분의 라이선스가 두 가지 모두를 준수하기 때문입니다.

차이점동작 사이 오픈 소스그리고 무료 소프트웨어주로 우선순위에 있습니다. 오픈 소스 소프트웨어 지지자들은 다음과 같이 강조합니다. 오픈소스 코드의 효율성프로그램을 개발 방법으로 사용합니다. 자유 소프트웨어 지지자들은 이념적 고려에 기초하고 있으며, 진상프로그램의 배포, 수정 및 연구가 주요 장점입니다. 무료 소프트웨어.

운영체제 마이크로소프트 윈도우

쌀. 39. OC 윈도우 로고.

MS Windows(Vindows로 발음)는 운영 체제 제품군입니다. 마이크로소프트(마이크로소프트). 장 마이크로소프트사빌 게이츠.

1995년부터 년 Windows- 개인용 컴퓨터 시장에서 가장 인기 있는 운영 체제 - 사실상의 표준입니다. 2005년까지 Microsoft Windows는 89% 이상의 개인용 컴퓨터에 설치되었습니다.

그러나 많은 사용자는 MacOS, Linux, BSD와 같은 대안에 전혀 익숙하지 않기 때문에 Windows OS를 선택했습니다. 러시아에서는 2000년대 초반까지 거의 모든 개인용 컴퓨터가 사전 설치된 상태로 판매되었습니다. 운영 체제윈도우. 확산 방지 불법 복제 버전소프트웨어 제품은 다른 운영 체제에 대한 관심을 불러일으켰습니다. 예를 들어, 구매가 가능해졌습니다. 개인용 컴퓨터사전 설치된 무료 리눅스 OS.

출시 연대기 윈도우 버전


1. 윈도우 1.0(1985)

2. 윈도우 2.0(1987)

3. 윈도우/386(1987)

4. 윈도우 3.0(1990)

5. 윈도우 3.1(1992)

6. 윈도우 NT 3.1(1993)

7. 윈도우 NT 3.5(1994)

8. 윈도우 95(1995)

9. 윈도우 NT 4.0(1996)

10. 윈도우 98(1998)

11. 윈도우 2000(2000)

12. 윈도우 미(2000)

13. 윈도우 XP(2001)

14. 윈도우 2003(2003)

15. 윈도우 비스타 (2007)

16.윈도우 가제비엔나 (2010)


통합 소프트웨어 제품및 응용 소프트웨어

수술실 마이크로소프트 시스템 Windows에는 다음과 같은 표준 응용 프로그램이 포함되어 있습니다. 인터넷 브라우저탐침, 메일 클라이언트 아웃룩 익스프레스 , 레코드 플레이어 윈도우 미디어플레이어.

그런 것을 포함한다는 사실에 대해 표준 제품 Windows OS는 경쟁 제품의 확산에 큰 장벽이 된다는 점에서 많은 논란과 논의가 이루어지고 있습니다.

쌀. 40. MS Office 패키지 로고.

MS Windows의 경우 대부분의 사용자가 매우 편리하고 숙달한 방법이 있습니다. 애플리케이션 패키지 마이크로소프트 프로그램사무실, 포함:

워드 프로세서 MS워드,

테이블 프로세서 MS 엑셀,

조직자 MS 아웃룩,

프레젠테이션 준비 신청 MS 파워포인트,

데이터베이스 관리 애플리케이션 MS 액세스.

Windows OS와 대부분의 Windows용 인기 응용 프로그램에는 모두 저작권 라이센스가 있다는 점을 잊지 마십시오. ~이다 소유권에 의해. 따라서 그러한 프로그램의 각 사본은 돈을 내고 구입해야 합니다. 예를 들어, 2006년 말 Windows XP 가격은 홈 에디션러시아어 BOX(SP2) - $185, Office 2003 러시아어 CD - $322.

저작권 라이센스로 보호되는 라이센스가 없는(해적판) 소프트웨어를 사용하면 저작권법을 위반하는 것입니다.

OS GNU/리눅스

쌀. 41. GNU/Linux OS 로고 – 턱스 펭귄.

GNU/Linux 운영 체제("gnu Linux"로 발음)는 UNIX와 유사한 무료 운영 체제입니다. 일반적으로 역사적 이유간결하게 하기 위해 이 시스템은 간단히 "Linux"라고 불립니다. 이것이 가장 강력한 대안 MS Windows는 서버로 인기를 끌며 데스크톱 운영체제로 급속히 인기를 얻고 있습니다. 최근 몇 년, 규정 준수에 대한 통제력 강화로 인해 허가된 사용 Windows OS 마이크로소프트 측버전 XP 및 Vista에서.

GNU/Linux 운영 체제에는 종종 이 운영 체제를 보완하는 프로그램이 포함되어 있습니다. 응용 프로그램, 본격적인 다기능 운영 환경을 만듭니다.

대부분의 다른 운영 체제와 달리 GNU/Linux에는 단일 "공식" 패키지가 없습니다. 대신 GNU/Linux가 들어옵니다. 대량소위 분포, 어느 GNU 프로그램 Linux 커널 및 기타 프로그램에 연결합니다. 세계에서 가장 일반적인 배포판:

미국 사람 레드햇 그리고 그의 상속인 페도라 코어;

독일 사람 수세;

프랑스 국민 만드리바(이전의 맨드레이크);

비국내 국제 유통 데비안 GNU/리눅스;

가장 오래된 배포판 중 하나 슬랙웨어;

상대적으로 젊고 활발하게 발전하는 배포판 젠투;

젊지만 유망한 유통 우분투 리눅스.

Linux 커널의 창시자 - 리누스 토발즈 . GNU/Linux에는 지리적인 개발 센터가 없습니다. 이 시스템을 소유한 조직은 없습니다. 조정 센터도 하나도 없습니다. GNU/Linux용 프로그램은 수천 개의 프로젝트 작업의 결과입니다. 이러한 프로젝트 중 일부는 중앙 집중화되어 있고 일부는 회사에 집중되어 있지만 대부분은 서신을 통해서만 서로를 아는 전 세계의 프로그래머를한데 모았습니다. 누구나 자신의 프로젝트를 만들거나 기존 프로젝트에 참여할 수 있으며, 성공하면 작업 결과가 수백만 명의 사용자에게 알려지게 됩니다. 사용자가 테스트에 참여합니다. 무료 소프트웨어, 개발자와 직접 소통하여 오류를 빠르게 찾아 수정하고 새로운 기능을 구현할 수 있습니다.

Linux는 이미 호주 서버 운영 체제 시장의 약 30%를 점유하고 있습니다. 호주인이 브라질인의 뒤를 따랐습니다. 브라질 정부는 돈 지출을 중단하기로 결정했습니다. 소프트웨어그리고 같이 가 마이크로소프트 제품시스템에 오픈 소스, 특히 Linux OS. 주된 이유변화 – 경제적. 우리나라의 리눅스 시장은 아직 작습니다.

파일 시스템

컴퓨터의 모든 정보는 운영 체제가 작동하는 파일에 저장됩니다.

파일(파일) - 이것은 명명된 바이트 시퀀스입니다., 영구 보관 장소 다양한 유형정보.

파일은 다음과 같이 구성됩니다. 카탈로그,디렉토리 또는 폴더라고도 합니다. 목록이름, 크기, 생성 날짜, 디스크의 파일 주소 등 다른 파일에 대한 정보를 저장하는 파일입니다.

모든 디렉토리에는 임의의 숫자가 포함될 수 있습니다. 하위 디렉터리, 각각 파일 및 기타 디렉터리를 저장할 수 있습니다.

각 디스크에는 마스터 또는 루트 디렉터리, 하위 디렉터리라고 하는 다른 모든 디렉터리와 일부 파일이 포함되어 있습니다. 그리하여 생성된 계층적 구조 . 카탈로그 현재 순간사용자가 작업 중입니다. 현재의.

파일과 디렉터리가 가장 많이 사용됩니다. 중요한 물건파일 시스템. 파일 시스템- 미디어에서 데이터를 구성, 저장 및 명명하는 방법을 결정하는 규정입니다. 파일의 물리적 저장 형식을 정의합니다. 특정한 파일 시스템파일 이름의 크기, 가능한 최대 파일 크기 및 파일 속성 세트를 정의합니다.

데이터가 바이트로 구성되는 방식을 호출합니다. 파일 형식. 예를 들어, 파일을 읽으려면 스프레드시트, 바이트가 각 셀의 숫자(공식, 텍스트)를 어떻게 나타내는지 알아야 합니다. 파일을 읽으려면 텍스트 편집기, 어떤 바이트가 문자를 나타내는지, 어떤 글꼴이나 필드는 물론 기타 정보를 알아야 합니다.

모든 파일은 두 부분으로 나눌 수 있습니다 - 텍스트그리고 바이너리.

텍스트 파일- 가장 일반적인 데이터 유형 컴퓨터 세계. 1바이트는 각 문자를 저장하는 데 가장 자주 할당되며 텍스트 파일은 특수 인코딩 테이블을 사용하여 인코딩됩니다.

하지만 깨끗하다 텍스트 파일점점 드물어지고 있습니다. 사람들은 문서에 그림과 도표가 포함되어 있고 유용하게 사용되기를 원합니다. 다양한 글꼴. 결과적으로 텍스트, 그래픽 및 기타 형태의 데이터가 다양하게 조합된 형식이 나타납니다.

바이너리 파일, 텍스트와 달리 보기가 쉽지 않으며 일반적으로 우리에게 친숙한 단어가 포함되어 있지 않습니다. 이상한 캐릭터. 이러한 파일은 사람이 직접 읽을 수 있도록 만들어지지 않았습니다. 예 바이너리 파일~이다 실행 가능한 프로그램그래픽 이미지가 포함된 파일.

디스크의 각 파일에는 지정( 성명 )은 두 부분으로 구성됩니다. 이름그리고 확장, 점으로 구분됩니다.

파일 이름 확장자- 파일 이름에 추가되고 파일 유형(형식)을 식별하기 위한 선택적 문자 시퀀스입니다. 이는 사용자나 컴퓨터 소프트웨어가 파일에 저장된 데이터 유형을 결정할 수 있는 일반적인 방법 중 하나입니다.

초기 운영 체제에서는 확장자의 길이가 3자로 제한되었지만 최신 운영 체제에서는 이러한 제한이 없습니다.

운영 체제 또는 파일 관리자는 파일 확장자와 응용 프로그램 간의 매핑을 생성할 수 있습니다.

사용자가 등록된 확장자를 가진 파일을 열면 해당 확장자에 해당하는 프로그램이 자동으로 실행됩니다. 일부 확장자는 파일 자체가 프로그램임을 나타냅니다. 종종 파일 확장자는 아이콘으로 사용자에게 표시됩니다.

드라이버

다양한 장치를 PC와 인터페이스할 수 있습니다: 비디오 카드, 사운드 카드, 프린터, 스캐너, 조작기, 디스크 드라이브, 디지털 카메라, 휴대폰... 그들 각각은 고유한 명령 세트, 즉 고유한 "언어"를 가지고 있습니다. 특정 운영 체제가 특정 장치를 제어할 수 있도록 하기 위해 명령 언어를 아는 "번역기" 프로그램의 도움을 받습니다. 특정 장치, 다른 한편으로는 이 장치가 작동해야 하는 특정 운영 체제의 언어입니다.

이 프로그램은 운전사(드라이버)이며 제조업체에서 장치와 함께 제공됩니다. 하드웨어 제조업체는 일반적으로 자신이 만든 장치의 드라이버를 웹 사이트에도 게시합니다.

우리는 아마도 안드로이드 외에도 iOS와 iOS의 존재에 대해 알고 있을 것입니다. 윈도우폰. BlackBerry OS는 여전히 먼 어딘가에 존재하며 Symbian은 과거의 일입니다. 이는 잘 알려진 내용이지만, 훨씬 덜 알려져 있지만 여전히 주목할 만한 여러 운영 체제가 있습니다. Android와 마찬가지로 다음을 기반으로 구축되었습니다. 리눅스 커널오픈 소스입니다. 그러나 이것은 그들이 동일한 성공을 달성하는 데 도움이 되지 않았습니다.

우분투 전화

Canonical은 모든 것을 표준화하려는 욕구에서 개발되었습니다. 설치 후 컴퓨터에 자동으로 적응하는 Windows와 마찬가지로 Ubuntu는 스마트폰, 태블릿, TV 또는 컴퓨터 등 모든 장치에 적응할 준비가 되어 있습니다. 장치 유형에 따라 OS 자체가 화면 크기 및 데이터 입력 유형에 맞게 조정됩니다.

Ubuntu Phone 사용자는 스마트폰을 컴퓨터에 연결하고 컴퓨터 화면에서 데스크탑 경험을 사용할 수 있습니다. 우분투 버전. 이 이데올로기는 모바일과 데스크톱 OS, 그리고 이를 위한 애플리케이션 간의 경계를 모호하게 하려는 Microsoft와 약간 일치합니다.

HP 웹 OS

webOS는 원래 Palm 소유였으나 HP는 2010년에 Palm을 인수했습니다. HP는 webOS에 대한 큰 계획을 가지고 있었고 스마트폰, 태블릿, 프린터는 물론 이 OS를 실행하는 컴퓨터까지 출시할 계획이었습니다. HP 터치패드 태블릿이 출시되었지만 아이패드와 경쟁할 수 없었고 아이디어는 더 이상 발전하지 못했습니다.


LG는 나중에 webOS의 기능을 자사의 제품에 사용했습니다. 스마트 TV, 그리고 그것은 좋은 생각으로 판명되었습니다. webOS는 인기가 없음에도 불구하고 몇 가지 장점을 가지고 있습니다. 흥미로운 기능그건 아직 팔 수 있어요.

삼성 타이젠

Tizen은 Linux 커널을 기반으로 구축되었으며 이 OS의 인터페이스는 Samsung의 TouchWiz를 완전히 복사합니다. 즉, 이 시스템에는 낯설지 않으면서 동시에 낯선 것도 없다. 오늘날 일부 사람들은 이 OS를 실행합니다. 스마트 시계 삼성그러나 회사에서는 이에 대한 큰 계획이 없습니다. 개발자를 유치하는 데 문제가 있지만 그렇지 않습니다. 타이젠 애플리케이션아무도 그것을 필요로하지 않습니다.

졸라 돛새치

이 OS는 길고 재미있는 이야기. Nokia는 한때 Linux 기반 Maemo 장치를 개발한 적이 있습니다. Maemo는 나중에 Intel이 소유한 MeeGo OS 플랫폼의 일부가 되었습니다. MeeGo에서 출시된 유일한 스마트폰은 Nokia N9이었으며 개발자들 사이에서 인기가 있었습니다. 그러나 Microsoft와의 계약 이전에 MeeGo 프로젝트는 종료되었고 회사는 Windows Phone에 집중했습니다.

MeeGo를 개발했던 대부분의 팀은 회사를 떠나 Jolla라는 팀을 시작했습니다. MeeGo에 대한 모든 권리는 Nokia에 있으며 Nokia는 MeeGo 소스 코드를 기반으로 자체 제작해야 했습니다. 이 OS는 Qt 애플리케이션과 Android 애플리케이션 모두에서 작동할 수 있습니다.

아마존 파이어

태블릿에서 아마존 킨들 Amazon이 Fire OS라고 부르는 것을 사용합니다. 사실 이것은 아마존이 본격적으로 작업한 AOSP 버전인 안드로이드다. Fire OS Android에서는 알아내는 것이 불가능합니다. 동시에 Android 애플리케이션에서도 작동하지만, Android 애플리케이션에서 다운로드할 필요는 없습니다. 구글 플레이. 아마존은 사용하지 않습니다 구글 서비스, 자체 매장을 통해 콘텐츠를 판매하고 있으며 규모가 상당히 큽니다.

파이어폭스OS

Mozilla는 오랫동안 스마트폰을 위한 자체 솔루션을 만들려고 노력해 왔습니다. 그들이 가지고 있는 것은 Gecko를 기반으로 구축되었으며 파이어폭스 브라우저. 모든 Firefox OS 응용 프로그램은 HTML 5와 같은 최신 웹 기술을 지원합니다. Mozilla는 시대가 기본 애플리케이션사라질 것이며 미래는 웹 애플리케이션에 속합니다. 나도 같은 생각 스티브 잡스아이폰을 시작합니다.

노키아 X

Microsoft는 이 플랫폼을 개발 중입니다. Android와 Windows Phone이 혼합되어 있지만 여전히 Android를 기반으로 구축되었습니다. 이 플랫폼의 스마트폰은 구글의 서비스 부족으로 인해 사용자들에게 큰 사랑을 받지 못했으나 가격이 저렴하다는 이유로 판매되고 있다.

EFYTimes의 자료를 기반으로 함

  • 지도 시간

이 기사는 왜, 누구를 위한 것입니까?

처음에 이는 Unix 계열 시스템으로 작업을 시작하는 학생들에게 상기시켜 주는 내용이었습니다. 즉, 이 기사는 이전에 Unix 시스템에서 작업한 경험이 없는 사람들을 위한 것입니다. 명령줄, 그러나 어떤 이유로든 효과적으로 상호 작용하는 방법을 배우고 싶거나 필요합니다.

마나(문서)에 대해 다시 설명하지 않으며 기사 읽기를 취소하거나 대체하지 않습니다. 대신 작업 초기부터 이해해야 할 주요 사항(명령, 기술 및 원칙)에 대해 이야기하겠습니다. 유닉스 쉘일이 효율적이고 즐겁게 이루어질 수 있도록.

이 기사는 완전한 기능을 갖춘 쉘(바람직하게는 zsh 또는 bash)과 상당히 다양한 범위의 유닉스 계열 환경에 관한 것입니다. 표준 프로그램.

쉘이란 무엇입니까?

Shell(셸, 일명 "명령줄", 일명 CLI, 일명 "콘솔", 일명 "터미널", 일명 "흰색 글자가 있는 검은색 창")은 텍스트 인터페이스운영 체제와의 통신(엄밀히 말하면 이것은 프로그램, 이러한 인터페이스를 제공하지만 이제 이 차이는 미미합니다).

일반적으로 셸을 통한 작업은 다음과 같습니다. 사용자(예: 사용자)가 키보드에서 명령을 입력하고 Enter 키를 누르면 시스템이 명령을 실행하고 실행 결과를 화면에 기록한 다음 다시 입력을 기다립니다. 다음 명령.

일반적인 모습셸라:

셸은 모든 Unix 계열 서버 시스템과 상호 작용하는 기본 방법입니다.

명령줄 시스템은 어디에 있나요?

Unix 쉘이 여러분을 기다리고 있는 경우 인기 있는 옵션은 다음과 같습니다.
  • MacOS(배시);
  • 업무 또는 개인 웹 프로젝트를 위한 서버 원격 액세스
  • 원격 액세스가 가능한 홈 파일 서버;
  • 노트북/데스크톱의 Ubuntu, PC-BSD - 유닉스 계열 시스템오늘은 설치와 사용이 쉽습니다.

쉘로 해결하는 것이 합리적인 문제는 무엇입니까?

쉘이 적합하고 유용하며 필수적인 자연 작업:
  • 터미널에서의 대화형 작업:
    • 컴파일 수행, make를 통한 작업 실행;
    • 텍스트 파일 비교;
    • 빠른 임시 데이터 분석(로그의 고유 IP 수, 시간/분별 기록 분포 등)
    • 일회성 대량 작업(많은 프로세스 종료, 버전 제어 시스템을 사용하는 경우 여러 파일을 되돌리거나 해결)
    • 시스템에서 발생하는 상황에 대한 진단(세마포어, 잠금, 프로세스, 설명자, 디스크 공간 등)
  • 스크립팅:
    • 다른 통역사의 존재에 의존할 수 없는 설치 스크립트 - 이것은 초보자를 위한 것이 아닙니다.
    • 대화형 쉘을 사용자 정의하기 위한 기능(초대에 영향, 디렉토리 변경, 설정 환경 변수) - 또한 초보자에게는 적합하지 않습니다.
    • 대량 파일 녹음과 같은 일회성 스크립트;
    • 메이크파일.

물론 첫 번째 단계

시작해 보세요: 로그인 및 로그아웃

셸을 시작하는 방법과 종료하는 방법을 정확히 알고 있는지 확인하세요.

Ubuntu가 설치된 컴퓨터에서 작업하는 경우 터미널 프로그램을 시작해야 합니다. 완료되면 창을 닫으시면 됩니다.

MacOS의 경우 - 터미널도 실행하세요.

접근하려면 원격 서버- SSH(MacOS, Ubuntu 또는 로컬에 다른 Unix 계열 시스템이 있는 경우) 또는 Putty(Windows가 있는 경우)를 사용합니다.

나는 누구인가? 나는 어디에 있는가?

다음 명령을 실행하십시오.
  • 호스트 이름 - 현재 있는 컴퓨터(서버)의 이름을 표시합니다.
  • whoami - 로그인 정보(시스템의 이름)를 표시합니다.
  • tree -d / |less - 시스템에 있는 디렉토리 트리의 의사 그래픽 표현입니다. 스크롤 종료 - q ;
  • pwd - 현재 있는 디렉토리를 표시합니다. 명령줄에서는 "그렇게" 할 수 없으며 일부 디렉터리(=현재 디렉터리, 작업 디렉터리)에 있어야 합니다. 현재 작업 디렉토리가 프롬프트에 표시될 것입니다.
  • ls - 현재 디렉토리의 파일 목록; ls /home - 지정된 디렉터리에 있는 파일 목록입니다.

명령 이력(이력)

본격적인 명령줄의 중요한 속성은 명령 기록입니다.

호스트 이름, ls, pwd, whoami 등 여러 명령을 실행합니다. 이제 위쪽 키를 누릅니다. 이전 명령이 입력 줄에 나타납니다. 위쪽 및 아래쪽 키를 사용하여 기록을 앞뒤로 이동할 수 있습니다. 호스트 이름에 도달하면 Enter를 누르십시오. - 명령이 다시 실행됩니다.

기록의 명령은 반복적으로 실행될 수 있을 뿐만 아니라 편집도 가능합니다. 기록을 ls 명령으로 스크롤하고 여기에 -l 스위치를 추가합니다(ls -l 로 밝혀졌습니다. 빼기 앞에는 공백이 있지만 뒤에는 공백이 없습니다). Enter를 누르십시오 - 수정된 명령이 실행됩니다.

기록 스크롤, 명령 편집 및 재실행은 명령줄에서 작업할 때 가장 일반적인 작업이므로 익숙해지십시오.

복사-붙여넣기

명령줄은 매우 텍스트 중심적입니다. 명령은 텍스트이고 대부분의 표준 프로그램의 입력 데이터는 텍스트이며 작업 결과도 대부분 텍스트입니다.

텍스트의 가장 큰 장점은 복사하여 붙여넣을 수 있다는 것이며 이는 명령줄에서도 마찬가지입니다.

date +"%y-%m-%d, %A" 명령을 사용해 보십시오.
전체를 직접 입력하셨나요, 아니면 기사에서 복사하셨나요? 복사해서 터미널에 붙여넣고 실행할 수 있는지 확인하세요.

man 사용법을 익힌 후에는 도움말에서 예제 명령을 복사하여 실행할 수 있는지 확인하십시오. 확인하려면 날짜 프로그램 도움말의 예제 섹션을 찾아보고 제공된 첫 번째 예제를 복사하여 실행하십시오. 달러 기호는 명령의 일부가 아니며 입력 프롬프트의 상징적 이미지입니다.

터미널에서 텍스트를 복사하여 터미널에 붙여넣는 방법은 시스템과 설정에 따라 다르므로 다음을 제공하십시오. 범용 지침, 안타깝게도 작동하지 않습니다. Ubuntu에서는 다음을 시도해 보세요. 복사 - 마우스로 선택하고 붙여넣기 - 마우스 가운데 버튼을 누르세요. 작동하지 않거나 다른 시스템을 가지고 있다면 인터넷을 찾아보거나 경험이 많은 친구들에게 물어보세요.

키 및 옵션

명령 내역을 조사할 때 이미 ls 명령이 다음과 같은 사실을 발견했습니다. 적어도두 가지 옵션. 그렇게 호출하면 간단한 목록이 출력됩니다.

Akira@latitude-e7240: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
-l 스위치를 추가하면 각 파일에 대한 자세한 정보가 표시됩니다.

Akira@latitude-e7240: ~/shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira akira 198 2월 13일 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 2월 14 22:26 shell-first-steps.md -rw-rw-r-- 1 akira akira 146226 2월 13일 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 2월 13일 11 :45 shell-survival-quide.md -rw-rw-r-- 1 akira akira 146203 2월 13일 11:35 shell-survival-quide.pdf
이는 매우 일반적인 상황입니다. 명령 호출에 특수 수정자(키, 옵션, 매개변수)를 추가하면 명령의 동작이 변경됩니다. 비교: tree / 및 tree -d / , 호스트 이름 및 호스트 이름 -f .

또한 명령은 파일 이름, 디렉터리 이름 또는 단순히 텍스트 문자열을 매개 변수로 사용할 수 있습니다. 노력하다:

Ls -ld /home ls -l /home grep 루트 /etc/passwd

남성

man - 시스템 호출 및 표준 C 라이브러리뿐만 아니라 시스템에서 사용할 수 있는 명령 및 프로그램에 대한 도움말입니다.

시도해 보세요: man grep , man atoi , man chdir , man man .

앞뒤로 스크롤하는 것은 "up", "down", "PageUp", "PageDown" 버튼을 사용하여 수행되며, 도움말 보기 종료는 q 버튼을 사용하여 수행됩니다. 찾다 특정 텍스트도움말 문서에서: /(슬래시)를 누르고 검색할 텍스트를 입력한 후 Enter를 누릅니다. 다음 항목으로 이동 - 키 n.

모든 도움말 항목은 카테고리로 구분됩니다. 가장 중요한 것:

  • 1 - 실행 가능한 프로그램 및 쉘 명령(wc, ls, pwd 등)
  • 2 - 시스템 호출(포크, dup2 등)
  • 3 - 라이브러리 함수(printf, scanf, cos, exec).
이름이 일치하는 경우 인증서가 어떤 범주에 속하는지 표시해야 합니다. 예를 들어, man 3 printf는 다음의 함수를 설명합니다. 표준 라이브러리 C, 남자 1 printf - 콘솔 프로그램같은 이름으로.

man -k 명령을 사용하면 컴퓨터에서 사용할 수 있는 모든 도움말 항목 목록을 볼 수 있습니다. (점은 코마다의 일부이기도 합니다).

더 적은

언제 작은 창문터미널을 많이 봐야합니다 긴 텍스트(일부 파일의 내용, 긴 사람 등) 특별한 "페이저" 프로그램(페이지라는 단어, 즉 페이지 플리퍼에서 유래)을 사용합니다. 가장 인기 있는 스크롤러는 더 적은데, 매뉴얼 페이지를 읽을 때 스크롤 기능을 제공하는 것입니다.

동작을 비교해보세요:

고양이 /etc/bash.bashrc 고양이 /etc/bash.bashrc |less

다음 매개변수에서 파일을 호출기로 직접 전송할 수 있습니다.

덜 /etc/bash.bashrc

위아래로 스크롤 - 버튼 "up", "down", "PageUp", "PageDown", 종료 - 버튼 q. 특정 텍스트 검색: /(슬래시)를 누르고 검색할 텍스트를 입력한 후 Enter를 누릅니다. 다음 항목으로 이동 - 키 n. (man에 대한 지시 사항을 알고 계십니까? 도움말을 표시하는 데 less도 사용되는 것은 당연합니다.)

진상

모든 파일이나 디렉터리는 일련의 "권한", 즉 파일을 읽을 수 있는 권한, 파일에 쓸 수 있는 권한, 파일을 실행할 수 있는 권한과 연관되어 있습니다. 모든 사용자는 파일 소유자, 파일 소유자 그룹 및 기타 모든 사용자의 세 가지 범주로 구분됩니다.

ls -l 을 사용하여 파일 권한을 볼 수 있습니다. 예를 들어:

> ls -l Makefile -rw-r--r-- 1 akira 학생 198 2월 13일 11:48 Makefile
이 출력은 소유자(akira)는 파일을 읽고 쓸 수 있고 그룹(학생)은 읽기만 가능하며 다른 모든 사용자도 읽기만 가능함을 의미합니다.

작업하는 동안 권한 거부 메시지를 받으면 작업하려는 개체에 대한 충분한 권한이 없다는 의미입니다.

man chmod에서 자세한 내용을 읽어보세요.

STDIN, STDOUT, 컨베이어(파이프)

실행 중인 각 프로그램과 관련된 것은 3개입니다. 표준 흐름데이터: 입력 데이터 스트림 STDIN, 출력 데이터 스트림 STDOUT, 오류 출력 스트림 STDERR.

wc 프로그램을 실행하고 Good day today를 입력하고 Enter를 누른 다음 good day라는 텍스트를 입력하고 Enter를 누르고 Ctrl+d를 누릅니다. wc 프로그램은 텍스트와 끝의 문자, 단어 및 줄 수에 대한 통계를 표시합니다.

> 화장실 오늘 좋은 날 좋은 날 2 5 24
안에 이 경우프로그램의 STDIN에 두 줄의 텍스트를 제공했지만 STDOUT에서 세 개의 숫자를 받았습니다.

이제 head -n3 /etc/passwd 명령을 실행하면 다음과 같이 보일 것입니다:

> head -n3 /etc/passwd 루트:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x: 2:2:bin:/bin:/usr/sbin/nologin
이 경우 헤드 프로그램은 STDIN에서 아무것도 읽지 않고 STDOUT에 세 줄을 썼습니다.

이런 식으로 상상할 수 있습니다. 프로그램은 STDIN이 흐르고 STDOUT이 흘러나오는 파이프입니다.

Unix 명령줄의 가장 중요한 속성은 "파이프" 프로그램이 서로 연결될 수 있다는 것입니다. 즉, 한 프로그램의 출력(STDOUT)이 입력 데이터(STDIN)로 다른 프로그램에 전달될 수 있습니다.

이러한 연결된 프로그램의 구성을 영어로는 파이프(Pipe), 러시아어로는 컨베이어(Conveyor) 또는 파이프(Pipe)라고 합니다.

프로그램을 파이프라인으로 결합하는 것은 | 기호를 사용하여 수행됩니다. (세로 막대)

head -n3 /etc/passwd |wc 명령을 실행하면 다음과 같이 표시됩니다.

> 헤드 -n3 /etc/passwd |wc 3 3 117
헤드 프로그램은 세 줄의 텍스트를 STDOUT으로 출력했고, 이는 즉시 wc 프로그램의 입력으로 전달되었으며 결과 텍스트의 문자, 단어 및 줄 수를 계산했습니다.

원하는 만큼 많은 프로그램을 하나의 파이프라인으로 결합할 수 있습니다. 예를 들어, 이전 파이프라인에 다른 wc 프로그램을 추가하면 첫 번째 wc의 출력에 몇 개의 단어와 문자가 포함되었는지 계산할 수 있습니다.

> 헤드 -n3 /etc/passwd |wc |wc 1 3 24

파이프라인(파이프)을 생성하는 것은 명령줄에서 작업할 때 매우 일반적인 작업입니다. 이것이 실제로 수행되는 방법에 대한 예를 보려면 "단일 라인 파이프라인 생성" 섹션을 읽어보세요.

I/O 리디렉션

프로그램의 출력(STDOUT)은 파이프라인을 통해 다른 프로그램으로 전송할 수 있을 뿐만 아니라 간단히 파일에 쓸 수도 있습니다. 이 리디렉션은 >(보다 큼 기호)를 사용하여 수행됩니다.

날짜 > /tmp/today.txt
이 명령을 실행하면 /tmp/today.txt 파일이 디스크에 나타납니다. 다음에서 내용을 확인하세요. 고양이를 이용해서/tmp/오늘.txt

동일한 이름의 파일이 이미 존재하는 경우 해당 파일의 이전 내용은 삭제됩니다. 파일이 존재하지 않으면 생성됩니다. 명령이 실행되기 전에 파일이 생성된 디렉터리가 존재해야 합니다.

파일을 덮어쓰지 않고 파일 끝에 출력을 추가하려면 >>를 사용하세요.

날짜 >> /tmp/today.txt
현재 파일에 무엇이 기록되어 있는지 확인하세요.

또한 STDIN 대신 모든 파일을 프로그램에 전달할 수 있습니다. 노력하다:

화장실

뭔가 불분명할 때 해야 할 일

이해하지 못하는 시스템 동작이 발생하거나 특정 결과를 얻고 싶지만 정확히 방법을 모르는 경우 다음 순서로 진행하는 것이 좋습니다(그런데 이는 쉘에만 적용되는 것이 아닙니다).
  • 가능한 한 명확하게 질문이나 작업을 공식화하십시오. "내가 무엇을 모르는지"를 해결하는 것보다 더 어려운 것은 없습니다.
  • 이미 동일하거나 유사한 문제가 발생했는지 기억하십시오. 이 경우 지난번에 작동했던 솔루션을 시도해 볼 가치가 있습니다.
  • 해당 매뉴얼 페이지를 읽으십시오(귀하의 경우에 어떤 매뉴얼 페이지가 적합한지 이해하는 경우). 아마도 명령 사용에 대한 적절한 예, 필요한 옵션 또는 다른 명령에 대한 링크를 찾을 수 있을 것입니다.
  • 생각해보세요: 작업을 조금 바꾸는 것이 가능합니까? - 아마도 조건을 약간 변경하면 해결 방법을 이미 알고 있는 문제가 발생할 수 있습니다.
  • 검색 엔진에서 명확하게 공식화된 질문을 해보세요. 아마도 답변은 Stack Overflow나 다른 사이트에서 찾을 수 있을 것입니다.
위의 방법 중 어느 것도 도움이 되지 않으면 교사, 경험이 풍부한 동료 또는 친구에게 조언을 구하십시오. 그리고 "어리석은" 질문을 하는 것을 두려워하지 마십시오. 모르는 것은 부끄러운 일이 아니며 묻지 않는 것은 부끄러운 일입니다.

어려운 문제를 스스로 해결했다면(인터넷이나 다른 사람의 도움을 받아), 자신이나 친구에게 같은 문제가 다시 발생할 경우를 대비해 해결 방법을 적어 두세요. Evernote에 간단한 텍스트 파일로 기록하거나 소셜 네트워크에 게시할 수 있습니다.

작업 방법

복사하여 붙여넣기- 매뉴얼 페이지, StackOverflow 기사 등에서. 명령줄은 텍스트로 구성되어 있으므로 다음을 활용하세요. 예제 명령을 복사 및 사용하고, 성공적인 결과를 기념품으로 기록하고, Twitter 및 블로그에 게시하세요.

기록에서 이전 명령을 가져오고, 파이프라인에 다른 명령을 추가하고, 실행하고, 반복합니다..cm. “단일 파이프라인 생성” 섹션도 참조하세요.

기본 명령

  • 다른 디렉토리로 변경: cd ;
  • 파일 내용 보기: cat, less, head, tail;
  • 파일 조작: cp, mv, rm;
  • 디렉토리 내용 보기: ls , ls -l , ls -lS ;
  • 디렉토리 구조: tree , tree -d (디렉토리를 매개변수로 전달할 수 있음);
  • 파일 검색: find . -이름 ... ;

해석학

  • 화장실, 화장실 -l;
  • sort -k - 지정된 필드별로 정렬합니다.
  • sort -n - 숫자 정렬;
  • diff - 파일 비교;
  • grep , grep -v , grep -w , grep "\ " , grep -E - 텍스트 검색;
  • uniq , uniq -c - 문자열 고유화;
  • awk - awk "(print $1)" 옵션에서 각 줄의 첫 번째 필드만 남기려면 $1을 $2, $3 등으로 변경할 수 있습니다.

시스템 진단

  • ps axuww - 머신에서 실행 중인 프로세스(실행 중인 프로그램)에 대한 정보입니다.
  • 상단 - 가장 리소스 집약적인 프로세스를 대화형으로 볼 수 있습니다.
  • df - 사용된 디스크 공간과 여유 디스크 공간;
  • du - 디렉터리에 있는 파일의 총 크기(하위 디렉터리와 함께 반복적으로)
  • strace , ktrace - 프로세스가 만드는 시스템 호출;
  • lsof - 프로세스가 사용하는 파일
  • netstat -na, netstat -nap - 시스템에 열려 있는 포트와 소켓입니다.

일부 프로그램이 없을 수도 있습니다. 추가로 설치해야 합니다. 또한 이러한 프로그램의 일부 옵션은 권한이 있는 사용자(루트)만 사용할 수 있습니다.

대량 및 반자동 실행

처음에는 이 섹션을 건너뛰고 간단한 쉘 스크립팅을 수행할 때 이러한 명령과 구성이 필요합니다.
  • 테스트 - 조건 확인;
  • 동안 읽기 - 한 줄씩 반복 STDIN;
  • xargs - STDIN의 문자열을 지정된 프로그램의 매개변수로 대체합니다.
  • seq - 자연수의 시퀀스 생성;
  • () - 여러 명령의 출력을 결합합니다.
  • ; - 한 가지 일을 차례로 수행합니다.
  • && - 첫 번째 명령이 성공적으로 완료되면 실행됩니다.
  • || - 첫 번째 명령이 실패하면 실행됩니다.
  • tee - 프로그램 출력을 STDOUT과 디스크의 파일에 복제합니다.

여러 가지 잡다한

  • 날짜 - 현재 날짜;
  • 컬 - 지정된 URL에서 문서를 다운로드하고 결과를 STDOUT에 씁니다.
  • touch - 파일 수정 날짜 업데이트;
  • kill - 프로세스에 신호를 보냅니다.
  • true - 아무것도 하지 않고, true를 반환하며, 영원한 루프를 구성하는 데 유용합니다.
  • sudo - 루트 "a로 명령을 실행합니다.

단일 라이너 파이프라인 생성

실제 작업의 예를 살펴보겠습니다. 현재 사용자로 실행 중인 모든 작업-6-서버 프로세스를 종료해야 합니다.

1단계.
순수한 형태가 아니더라도 어떤 프로그램이 필요한 데이터를 대략적으로 생성하는지 이해합니다. 우리 작업에서는 시스템의 모든 프로세스 목록을 얻는 것이 좋습니다. ps.xuww. 시작하다.

2단계.
수신된 데이터를 눈으로 보고, 불필요한 데이터 중 일부를 버리는 필터를 생각해 보세요. 이는 종종 grep 또는 grep -v 입니다. "위로" 키를 사용하여 기록에서 이전 명령을 꺼내고 여기에 발명된 필터를 할당하고 실행합니다.

Ps axuww |grep `whoami`
- 현재 사용자의 프로세스만.

3단계.
필요한 깨끗한 데이터를 얻을 때까지 2단계를 반복합니다.

"
- 필요한 이름을 가진 모든 프로세스(vim task-6-server.c 등과 같은 추가 이름도 있을 수 있음)

Ps axuww |grep `whoami` | 그렙 "\ " | grep -v vim ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v less
- 필수 이름을 가진 프로세스만

Ps axuww |grep `whoami` | 그렙 "\ " | grep -v vim |grep -v less |awk "($2 인쇄)"

필수 프로세스의 Pids, 3단계 완료

4단계.
적합한 최종 처리기를 적용합니다. "Up" 키를 사용하여 기록에서 이전 명령을 꺼내고 문제 해결을 완료하는 처리를 추가합니다.

  • |wc -l 프로세스 수를 계산합니다.
  • >pids는 파일에 pid를 기록합니다.
  • |xargs kill -9 프로세스 종료.

훈련 과제

새로운 기술을 연습하고 싶나요? 다음 작업을 시도해 보세요.
  • 홈 디렉터리에 있는 모든 파일과 디렉터리 목록을 가져옵니다.
  • 카테고리 2(시스템 호출)에서 모든 man 기사 목록을 얻습니다.
  • grep 프로그램 매뉴얼 페이지에 grep이라는 단어가 몇 번이나 나타나는지 세어보세요.
  • 현재 루트로 실행 중인 프로세스 수를 계산합니다.
  • 최대 도움말 카테고리 수(man)에 어떤 명령이 나타나는지 확인합니다.
  • ya.ru 페이지에 var라는 단어가 몇 번이나 나타나는지 세어보세요.
힌트: find , grep -o , awk "(print $1)" , grep 의 정규 표현식, cur -s 가 필요합니다.

다음에는 무엇을 공부할까요?

명령줄이 마음에 들기 시작했다면 멈추지 말고 계속해서 기술을 향상시키십시오.

다음은 명령줄에서 생활하는 경우 확실히 유용할 몇 가지 프로그램입니다.

  • 복잡한 옵션으로 찾기
  • 때마침
  • 위치하고 있다
  • 텔넷
  • 넷캣
  • tcpdump
  • 재동기화
  • 화면
  • zgrep, zless
  • 비쥬도
  • 크론탭 -e
  • 센드메일
또한 시간이 지남에 따라 Perl이나 Python 또는 둘 다와 같은 일종의 스크립팅 언어를 익히는 것이 좋습니다.

누가 이것을 필요로 합니까?

오늘 명령줄과 쉘 스크립팅을 배울 가치가 있습니까? 확실히 그만한 가치가 있습니다. FB에 취업하려는 후보자를 위한 Facebook 요구 사항의 몇 가지 예를 들어 보겠습니다.
  • 지도 시간

이 기사는 왜, 누구를 위한 것입니까?

처음에 이는 Unix 계열 시스템으로 작업을 시작하는 학생들에게 상기시켜 주는 내용이었습니다. 즉, 이 기사는 이전에 Unix 명령줄을 사용한 경험이 없지만 어떤 이유로든 Unix와 효과적으로 상호 작용하는 방법을 배우고 싶거나 필요한 사람들을 위한 것입니다.

마나(문서)에 대해 다시 설명하지 않으며 기사 읽기를 취소하거나 대체하지 않습니다. 대신, 작업이 효과적이고 즐겁게 진행되기 위해 유닉스 셸에서 작업을 시작할 때부터 이해해야 할 주요 사항(명령, 기술 및 원칙)에 대해 이야기하겠습니다.

이 기사는 완전한 기능을 갖춘 쉘(바람직하게는 zsh 또는 bash)과 상당히 광범위한 표준 프로그램을 갖춘 본격적인 유닉스 계열 환경에 관한 것입니다.

쉘이란 무엇입니까?

Shell(셸, 일명 "명령줄", 일명 CLI, 일명 "콘솔", 일명 "터미널", 일명 "흰색 글자가 있는 검은색 창")은 운영 체제와 통신하기 위한 텍스트 인터페이스입니다. ~이다 프로그램, 이러한 인터페이스를 제공하지만 이제 이 차이는 미미합니다).

일반적으로 쉘을 통한 작업은 다음과 같습니다. 사용자(즉, 귀하)가 키보드에서 명령을 입력하고 Enter를 누르면 시스템이 명령을 실행하고 실행 결과를 화면에 기록한 후 다시 다음 명령을 기다립니다. 입력됩니다.

일반적인 쉘 유형:

셸은 모든 Unix 계열 서버 시스템과 상호 작용하는 기본 방법입니다.

명령줄 시스템은 어디에 있나요?

Unix 쉘이 여러분을 기다리고 있는 경우 인기 있는 옵션은 다음과 같습니다.
  • MacOS(배시);
  • 업무 또는 개인 웹 프로젝트를 위한 서버 원격 액세스
  • 원격 액세스가 가능한 홈 파일 서버;
  • 노트북/데스크톱의 Ubuntu, PC-BSD - 오늘날 Unix 계열 시스템은 설치 및 사용이 쉽습니다.

쉘로 해결하는 것이 합리적인 문제는 무엇입니까?

쉘이 적합하고 유용하며 필수적인 자연 작업:
  • 터미널에서의 대화형 작업:
    • 컴파일 수행, make를 통한 작업 실행;
    • 텍스트 파일 비교;
    • 빠른 임시 데이터 분석(로그의 고유 IP 수, 시간/분별 기록 분포 등)
    • 일회성 대량 작업(많은 프로세스 종료, 버전 제어 시스템을 사용하는 경우 여러 파일을 되돌리거나 해결)
    • 시스템에서 발생하는 상황에 대한 진단(세마포어, 잠금, 프로세스, 설명자, 디스크 공간 등)
  • 스크립팅:
    • 다른 통역사의 존재에 의존할 수 없는 설치 스크립트 - 이것은 초보자를 위한 것이 아닙니다.
    • 대화형 셸을 사용자 정의하는 기능(초대에 영향을 미치고 디렉터리 변경, 환경 변수 설정)도 초보자를 위한 것이 아닙니다.
    • 대량 파일 녹음과 같은 일회성 스크립트;
    • 메이크파일.

물론 첫 번째 단계

시작해 보세요: 로그인 및 로그아웃

셸을 시작하는 방법과 종료하는 방법을 정확히 알고 있는지 확인하세요.

Ubuntu가 설치된 컴퓨터에서 작업하는 경우 터미널 프로그램을 시작해야 합니다. 완료되면 창을 닫으시면 됩니다.

MacOS의 경우 - 터미널도 실행하세요.

원격 서버에 액세스하려면 ssh(MacOS, Ubuntu 또는 기타 Unix 계열 시스템을 로컬로 사용하는 경우) 또는 putty(Windows를 사용하는 경우)를 사용하세요.

나는 누구인가? 나는 어디에 있는가?

다음 명령을 실행하십시오.
  • 호스트 이름 - 현재 있는 컴퓨터(서버)의 이름을 표시합니다.
  • whoami - 로그인 정보(시스템의 이름)를 표시합니다.
  • tree -d / |less - 시스템에 있는 디렉토리 트리의 의사 그래픽 표현입니다. 스크롤 종료 - q ;
  • pwd - 현재 있는 디렉토리를 표시합니다. 명령줄에서는 "그렇게" 할 수 없으며 일부 디렉터리(=현재 디렉터리, 작업 디렉터리)에 있어야 합니다. 현재 작업 디렉토리가 프롬프트에 표시될 것입니다.
  • ls - 현재 디렉토리의 파일 목록; ls /home - 지정된 디렉터리에 있는 파일 목록입니다.

명령 이력(이력)

본격적인 명령줄의 중요한 속성은 명령 기록입니다.

호스트 이름, ls, pwd, whoami 등 여러 명령을 실행합니다. 이제 위쪽 키를 누릅니다. 이전 명령이 입력 줄에 나타납니다. 위쪽 및 아래쪽 키를 사용하여 기록을 앞뒤로 이동할 수 있습니다. 호스트 이름에 도달하면 Enter를 누르십시오. - 명령이 다시 실행됩니다.

기록의 명령은 반복적으로 실행될 수 있을 뿐만 아니라 편집도 가능합니다. 기록을 ls 명령으로 스크롤하고 여기에 -l 스위치를 추가합니다(ls -l 로 밝혀졌습니다. 빼기 앞에는 공백이 있지만 뒤에는 공백이 없습니다). Enter를 누르십시오 - 수정된 명령이 실행됩니다.

기록 스크롤, 명령 편집 및 재실행은 명령줄에서 작업할 때 가장 일반적인 작업이므로 익숙해지십시오.

복사-붙여넣기

명령줄은 매우 텍스트 중심적입니다. 명령은 텍스트이고 대부분의 표준 프로그램의 입력 데이터는 텍스트이며 작업 결과도 대부분 텍스트입니다.

텍스트의 가장 큰 장점은 복사하여 붙여넣을 수 있다는 것이며 이는 명령줄에서도 마찬가지입니다.

date +"%y-%m-%d, %A" 명령을 사용해 보십시오.
전체를 직접 입력하셨나요, 아니면 기사에서 복사하셨나요? 복사해서 터미널에 붙여넣고 실행할 수 있는지 확인하세요.

man 사용법을 익힌 후에는 도움말에서 예제 명령을 복사하여 실행할 수 있는지 확인하십시오. 확인하려면 날짜 프로그램 도움말의 예제 섹션을 찾아보고 제공된 첫 번째 예제를 복사하여 실행하십시오. 달러 기호는 명령의 일부가 아니며 입력 프롬프트의 상징적 이미지입니다.

터미널에서 텍스트를 복사하여 터미널에 붙여넣는 방법은 시스템과 설정에 따라 다르므로 안타깝게도 보편적인 지침을 제공하는 것은 불가능합니다. Ubuntu에서는 다음을 시도해 보세요. 복사 - 마우스로 선택하고 붙여넣기 - 마우스 가운데 버튼을 누르세요. 작동하지 않거나 다른 시스템을 가지고 있다면 인터넷을 찾아보거나 경험이 많은 친구들에게 물어보세요.

키 및 옵션

명령 기록을 탐색하면서 ls 명령에 최소한 두 가지 옵션이 있다는 것을 이미 발견했습니다. 그렇게 호출하면 간단한 목록이 출력됩니다.

Akira@latitude-e7240: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf
-l 스위치를 추가하면 각 파일에 대한 자세한 정보가 표시됩니다.

Akira@latitude-e7240: ~/shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira akira 198 2월 13일 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 2월 14 22:26 shell-first-steps.md -rw-rw-r-- 1 akira akira 146226 2월 13일 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 2월 13일 11 :45 shell-survival-quide.md -rw-rw-r-- 1 akira akira 146203 2월 13일 11:35 shell-survival-quide.pdf
이는 매우 일반적인 상황입니다. 명령 호출에 특수 수정자(키, 옵션, 매개변수)를 추가하면 명령의 동작이 변경됩니다. 비교: tree / 및 tree -d / , 호스트 이름 및 호스트 이름 -f .

또한 명령은 파일 이름, 디렉터리 이름 또는 단순히 텍스트 문자열을 매개 변수로 사용할 수 있습니다. 노력하다:

Ls -ld /home ls -l /home grep 루트 /etc/passwd

남성

man - 시스템 호출 및 표준 C 라이브러리뿐만 아니라 시스템에서 사용할 수 있는 명령 및 프로그램에 대한 도움말입니다.

시도해 보세요: man grep , man atoi , man chdir , man man .

앞뒤로 스크롤하는 것은 "up", "down", "PageUp", "PageDown" 버튼을 사용하여 수행되며, 도움말 보기 종료는 q 버튼을 사용하여 수행됩니다. 도움말 문서에서 특정 텍스트 검색: /(슬래시)를 누르고 검색할 텍스트를 입력한 후 Enter를 누릅니다. 다음 항목으로 이동 - 키 n.

모든 도움말 항목은 카테고리로 구분됩니다. 가장 중요한 것:

  • 1 - 실행 가능한 프로그램 및 쉘 명령(wc, ls, pwd 등)
  • 2 - 시스템 호출(fork, dup2 등)
  • 3 - 라이브러리 함수(printf, scanf, cos, exec).
이름이 일치하는 경우 인증서가 어떤 범주에 속하는지 표시해야 합니다. 예를 들어, man 3 printf는 C 표준 라이브러리의 함수를 설명하고, man 1 printf는 동일한 이름을 가진 콘솔 프로그램을 설명합니다.

man -k 명령을 사용하면 컴퓨터에서 사용할 수 있는 모든 도움말 항목 목록을 볼 수 있습니다. (점은 코마다의 일부이기도 합니다).

더 적은

작은 터미널 창에서 매우 긴 텍스트(파일 내용, 긴 사람 등)를 보려면 특별한 "페이저" 프로그램이 사용됩니다(페이지라는 단어, 즉 페이지 플리퍼에서 유래). 가장 인기 있는 스크롤러는 더 적은데, 매뉴얼 페이지를 읽을 때 스크롤 기능을 제공하는 것입니다.

동작을 비교해보세요:

고양이 /etc/bash.bashrc 고양이 /etc/bash.bashrc |less

다음 매개변수에서 파일을 호출기로 직접 전송할 수 있습니다.

덜 /etc/bash.bashrc

위아래로 스크롤 - 버튼 "up", "down", "PageUp", "PageDown", 종료 - 버튼 q. 특정 텍스트 검색: /(슬래시)를 누르고 검색할 텍스트를 입력한 후 Enter를 누릅니다. 다음 항목으로 이동 - 키 n. (man에 대한 지시 사항을 알고 계십니까? 도움말을 표시하는 데 less도 사용되는 것은 당연합니다.)

진상

모든 파일이나 디렉터리는 일련의 "권한", 즉 파일을 읽을 수 있는 권한, 파일에 쓸 수 있는 권한, 파일을 실행할 수 있는 권한과 연관되어 있습니다. 모든 사용자는 파일 소유자, 파일 소유자 그룹 및 기타 모든 사용자의 세 가지 범주로 구분됩니다.

ls -l 을 사용하여 파일 권한을 볼 수 있습니다. 예를 들어:

> ls -l Makefile -rw-r--r-- 1 akira 학생 198 2월 13일 11:48 Makefile
이 출력은 소유자(akira)는 파일을 읽고 쓸 수 있고 그룹(학생)은 읽기만 가능하며 다른 모든 사용자도 읽기만 가능함을 의미합니다.

작업하는 동안 권한 거부 메시지를 받으면 작업하려는 개체에 대한 충분한 권한이 없다는 의미입니다.

man chmod에서 자세한 내용을 읽어보세요.

STDIN, STDOUT, 컨베이어(파이프)

각 실행 프로그램과 연관된 3개의 표준 데이터 스트림이 있습니다: 입력 데이터 스트림 STDIN, 출력 데이터 스트림 STDOUT, 오류 출력 스트림 STDERR.

wc 프로그램을 실행하고 Good day today를 입력하고 Enter를 누른 다음 good day라는 텍스트를 입력하고 Enter를 누르고 Ctrl+d를 누릅니다. wc 프로그램은 텍스트와 끝의 문자, 단어 및 줄 수에 대한 통계를 표시합니다.

> 화장실 오늘 좋은 날 좋은 날 2 5 24
이 경우 프로그램의 STDIN에 두 줄의 텍스트를 제공하고 STDOUT에서 세 개의 숫자를 받았습니다.

이제 head -n3 /etc/passwd 명령을 실행하면 다음과 같이 보일 것입니다:

> head -n3 /etc/passwd 루트:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x: 2:2:bin:/bin:/usr/sbin/nologin
이 경우 헤드 프로그램은 STDIN에서 아무것도 읽지 않고 STDOUT에 세 줄을 썼습니다.

이런 식으로 상상할 수 있습니다. 프로그램은 STDIN이 흐르고 STDOUT이 흘러나오는 파이프입니다.

Unix 명령줄의 가장 중요한 속성은 "파이프" 프로그램이 서로 연결될 수 있다는 것입니다. 즉, 한 프로그램의 출력(STDOUT)이 입력 데이터(STDIN)로 다른 프로그램에 전달될 수 있습니다.

이러한 연결된 프로그램의 구성을 영어로는 파이프(Pipe), 러시아어로는 컨베이어(Conveyor) 또는 파이프(Pipe)라고 합니다.

프로그램을 파이프라인으로 결합하는 것은 | 기호를 사용하여 수행됩니다. (세로 막대)

head -n3 /etc/passwd |wc 명령을 실행하면 다음과 같이 표시됩니다.

> 헤드 -n3 /etc/passwd |wc 3 3 117
헤드 프로그램은 세 줄의 텍스트를 STDOUT으로 출력했고, 이는 즉시 wc 프로그램의 입력으로 전달되었으며 결과 텍스트의 문자, 단어 및 줄 수를 계산했습니다.

원하는 만큼 많은 프로그램을 하나의 파이프라인으로 결합할 수 있습니다. 예를 들어, 이전 파이프라인에 다른 wc 프로그램을 추가하면 첫 번째 wc의 출력에 몇 개의 단어와 문자가 포함되었는지 계산할 수 있습니다.

> 헤드 -n3 /etc/passwd |wc |wc 1 3 24

파이프라인(파이프)을 생성하는 것은 명령줄에서 작업할 때 매우 일반적인 작업입니다. 이것이 실제로 수행되는 방법에 대한 예를 보려면 "단일 라인 파이프라인 생성" 섹션을 읽어보세요.

I/O 리디렉션

프로그램의 출력(STDOUT)은 파이프라인을 통해 다른 프로그램으로 전송할 수 있을 뿐만 아니라 간단히 파일에 쓸 수도 있습니다. 이 리디렉션은 >(보다 큼 기호)를 사용하여 수행됩니다.

날짜 > /tmp/today.txt
이 명령을 실행하면 /tmp/today.txt 파일이 디스크에 나타납니다. cat /tmp/today.txt를 사용하여 내용을 봅니다.

동일한 이름의 파일이 이미 존재하는 경우 해당 파일의 이전 내용은 삭제됩니다. 파일이 존재하지 않으면 생성됩니다. 명령이 실행되기 전에 파일이 생성된 디렉터리가 존재해야 합니다.

파일을 덮어쓰지 않고 파일 끝에 출력을 추가하려면 >>를 사용하세요.

날짜 >> /tmp/today.txt
현재 파일에 무엇이 기록되어 있는지 확인하세요.

또한 STDIN 대신 모든 파일을 프로그램에 전달할 수 있습니다. 노력하다:

화장실

뭔가 불분명할 때 해야 할 일

이해하지 못하는 시스템 동작이 발생하거나 특정 결과를 얻고 싶지만 정확히 방법을 모르는 경우 다음 순서로 진행하는 것이 좋습니다(그런데 이는 쉘에만 적용되는 것이 아닙니다).
  • 가능한 한 명확하게 질문이나 작업을 공식화하십시오. "내가 무엇을 모르는지"를 해결하는 것보다 더 어려운 것은 없습니다.
  • 이미 동일하거나 유사한 문제가 발생했는지 기억하십시오. 이 경우 지난번에 작동했던 솔루션을 시도해 볼 가치가 있습니다.
  • 해당 매뉴얼 페이지를 읽으십시오(귀하의 경우에 어떤 매뉴얼 페이지가 적합한지 이해하는 경우). 아마도 명령 사용에 대한 적절한 예, 필요한 옵션 또는 다른 명령에 대한 링크를 찾을 수 있을 것입니다.
  • 생각해보세요: 작업을 조금 바꾸는 것이 가능합니까? - 아마도 조건을 약간 변경하면 해결 방법을 이미 알고 있는 문제가 발생할 수 있습니다.
  • 검색 엔진에서 명확하게 공식화된 질문을 해보세요. 아마도 답변은 Stack Overflow나 다른 사이트에서 찾을 수 있을 것입니다.
위의 방법 중 어느 것도 도움이 되지 않으면 교사, 경험이 풍부한 동료 또는 친구에게 조언을 구하십시오. 그리고 "어리석은" 질문을 하는 것을 두려워하지 마십시오. 모르는 것은 부끄러운 일이 아니며 묻지 않는 것은 부끄러운 일입니다.

어려운 문제를 스스로 해결했다면(인터넷이나 다른 사람의 도움을 받아), 자신이나 친구에게 같은 문제가 다시 발생할 경우를 대비해 해결 방법을 적어 두세요. Evernote에 간단한 텍스트 파일로 기록하거나 소셜 네트워크에 게시할 수 있습니다.

작업 방법

복사하여 붙여넣기- 매뉴얼 페이지, StackOverflow 기사 등에서. 명령줄은 텍스트로 구성되어 있으므로 다음을 활용하세요. 예제 명령을 복사 및 사용하고, 성공적인 결과를 기념품으로 기록하고, Twitter 및 블로그에 게시하세요.

기록에서 이전 명령을 가져오고, 파이프라인에 다른 명령을 추가하고, 실행하고, 반복합니다..cm. “단일 파이프라인 생성” 섹션도 참조하세요.

기본 명령

  • 다른 디렉토리로 변경: cd ;
  • 파일 내용 보기: cat, less, head, tail;
  • 파일 조작: cp, mv, rm;
  • 디렉토리 내용 보기: ls , ls -l , ls -lS ;
  • 디렉토리 구조: tree , tree -d (디렉토리를 매개변수로 전달할 수 있음);
  • 파일 검색: find . -이름 ... ;

해석학

  • 화장실, 화장실 -l;
  • sort -k - 지정된 필드별로 정렬합니다.
  • sort -n - 숫자 정렬;
  • diff - 파일 비교;
  • grep , grep -v , grep -w , grep "\ " , grep -E - 텍스트 검색;
  • uniq , uniq -c - 문자열 고유화;
  • awk - awk "(print $1)" 옵션에서 각 줄의 첫 번째 필드만 남기려면 $1을 $2, $3 등으로 변경할 수 있습니다.

시스템 진단

  • ps axuww - 머신에서 실행 중인 프로세스(실행 중인 프로그램)에 대한 정보입니다.
  • 상단 - 가장 리소스 집약적인 프로세스를 대화형으로 볼 수 있습니다.
  • df - 사용된 디스크 공간과 여유 디스크 공간;
  • du - 디렉터리에 있는 파일의 총 크기(하위 디렉터리와 함께 반복적으로)
  • strace , ktrace - 프로세스가 만드는 시스템 호출;
  • lsof - 프로세스가 사용하는 파일
  • netstat -na, netstat -nap - 시스템에 열려 있는 포트와 소켓입니다.

일부 프로그램이 없을 수도 있습니다. 추가로 설치해야 합니다. 또한 이러한 프로그램의 일부 옵션은 권한이 있는 사용자(루트)만 사용할 수 있습니다.

대량 및 반자동 실행

처음에는 이 섹션을 건너뛰고 간단한 쉘 스크립팅을 수행할 때 이러한 명령과 구성이 필요합니다.
  • 테스트 - 조건 확인;
  • 동안 읽기 - 한 줄씩 반복 STDIN;
  • xargs - STDIN의 문자열을 지정된 프로그램의 매개변수로 대체합니다.
  • seq - 자연수의 시퀀스 생성;
  • () - 여러 명령의 출력을 결합합니다.
  • ; - 한 가지 일을 차례로 수행합니다.
  • && - 첫 번째 명령이 성공적으로 완료되면 실행됩니다.
  • || - 첫 번째 명령이 실패하면 실행됩니다.
  • tee - 프로그램 출력을 STDOUT과 디스크의 파일에 복제합니다.

여러 가지 잡다한

  • 날짜 - 현재 날짜;
  • 컬 - 지정된 URL에서 문서를 다운로드하고 결과를 STDOUT에 씁니다.
  • touch - 파일 수정 날짜 업데이트;
  • kill - 프로세스에 신호를 보냅니다.
  • true - 아무것도 하지 않고, true를 반환하며, 영원한 루프를 구성하는 데 유용합니다.
  • sudo - 루트 "a로 명령을 실행합니다.

단일 라이너 파이프라인 생성

실제 작업의 예를 살펴보겠습니다. 현재 사용자로 실행 중인 모든 작업-6-서버 프로세스를 종료해야 합니다.

1단계.
순수한 형태가 아니더라도 어떤 프로그램이 필요한 데이터를 대략적으로 생성하는지 이해합니다. 우리 작업에서는 시스템의 모든 프로세스 목록을 얻는 것이 좋습니다. ps.xuww. 시작하다.

2단계.
수신된 데이터를 눈으로 보고, 불필요한 데이터 중 일부를 버리는 필터를 생각해 보세요. 이는 종종 grep 또는 grep -v 입니다. "위로" 키를 사용하여 기록에서 이전 명령을 꺼내고 여기에 발명된 필터를 할당하고 실행합니다.

Ps axuww |grep `whoami`
- 현재 사용자의 프로세스만.

3단계.
필요한 깨끗한 데이터를 얻을 때까지 2단계를 반복합니다.

"
- 필요한 이름을 가진 모든 프로세스(vim task-6-server.c 등과 같은 추가 이름도 있을 수 있음)

Ps axuww |grep `whoami` | 그렙 "\ " | grep -v vim ps axuww |grep `whoami` | grep "\ " | grep -v vim |grep -v less
- 필수 이름을 가진 프로세스만

Ps axuww |grep `whoami` | 그렙 "\ " | grep -v vim |grep -v less |awk "($2 인쇄)"

필수 프로세스의 Pids, 3단계 완료

4단계.
적합한 최종 처리기를 적용합니다. "Up" 키를 사용하여 기록에서 이전 명령을 꺼내고 문제 해결을 완료하는 처리를 추가합니다.

  • |wc -l 프로세스 수를 계산합니다.
  • >pids는 파일에 pid를 기록합니다.
  • |xargs kill -9 프로세스 종료.

훈련 과제

새로운 기술을 연습하고 싶나요? 다음 작업을 시도해 보세요.
  • 홈 디렉터리에 있는 모든 파일과 디렉터리 목록을 가져옵니다.
  • 카테고리 2(시스템 호출)에서 모든 man 기사 목록을 얻습니다.
  • grep 프로그램 매뉴얼 페이지에 grep이라는 단어가 몇 번이나 나타나는지 세어보세요.
  • 현재 루트로 실행 중인 프로세스 수를 계산합니다.
  • 최대 도움말 카테고리 수(man)에 어떤 명령이 나타나는지 확인합니다.
  • ya.ru 페이지에 var라는 단어가 몇 번이나 나타나는지 세어보세요.
힌트: find , grep -o , awk "(print $1)" , grep 의 정규 표현식, cur -s 가 필요합니다.

다음에는 무엇을 공부할까요?

명령줄이 마음에 들기 시작했다면 멈추지 말고 계속해서 기술을 향상시키십시오.

다음은 명령줄에서 생활하는 경우 확실히 유용할 몇 가지 프로그램입니다.

  • 복잡한 옵션으로 찾기
  • 때마침
  • 위치하고 있다
  • 텔넷
  • 넷캣
  • tcpdump
  • 재동기화
  • 화면
  • zgrep, zless
  • 비쥬도
  • 크론탭 -e
  • 센드메일
또한 시간이 지남에 따라 Perl이나 Python 또는 둘 다와 같은 일종의 스크립팅 언어를 익히는 것이 좋습니다.

누가 이것을 필요로 합니까?

오늘 명령줄과 쉘 스크립팅을 배울 가치가 있습니까? 확실히 그만한 가치가 있습니다. FB에 취업하려는 후보자를 위한 Facebook 요구 사항의 몇 가지 예를 들어 보겠습니다.

    다른 운영 체제와 마찬가지로 Linux 제품군의 운영 체제에는 컴퓨터 시스템 구성 요소와 최종 사용자 간의 상호 작용 인터페이스, 즉 명령 입력을 제공하는 소프트웨어 수준이 필요합니다. 원하는 결과를 얻기 위한 매개 변수. 이 프로그램 수준을 "껍데기"또는 영어로 - 껍데기.

껍질이란 무엇입니까?

명령 셸( 껍데기)는 사용자와 Linux 운영 체제 환경 간의 상호 작용을 제공합니다. 명령 실행을 보장하고 실행 결과를 얻는 특수 소프트웨어 제품입니다. 간단히 말하면 쉘은 사용자 요청에 따라 다른 프로그램의 실행을 보장하도록 설계된 프로그램입니다. 쉘의 예로는 명령 해석기가 있을 수 있습니다. command.com운영 체제 MS DOS 또는 쉘 세게 때리다유닉스/리눅스 운영 체제.

모든 쉘은 사용자 명령을 실행하고 실행 결과를 표시하는 주요 목적에 따라 유사한 기능과 속성을 가지고 있습니다.

명령줄 해석.

명령 및 실행 결과에 대한 액세스입니다.

변수, 특수 문자 및 예약어를 지원합니다.

파일 처리, 표준 입력 및 출력 작업.

특수 쉘 프로그래밍 언어 구현.

    Unix/Linux 제품군 운영 체제의 경우 시스템과의 상호 작용 속성 및 방법이 다른 여러 가지 다른 셸을 사용할 수 있습니다. 가장 일반적인 껍질은 다음과 같습니다.

- 껍데기 목적지, Unix OS용 클래식 쉘

세게 때리다껍데기 본 어게인(GNU Bourne-Again SHell). 아마도 현재 Linux OS 환경에서 가장 일반적인 쉘일 것입니다.

크쉬- 껍데기 , 쉘 개발로 설계됨 목적지명령줄 기록 및 명령 편집 기능이 있습니다.

csh- 껍데기 기음, 널리 사용되는 프로그래밍 언어의 구문을 사용하여 기음

tcsh- 쉘 버전 기음대화형 명령줄 편집 기능을 사용합니다.

여러 가지 다른 쉘을 시스템에 설치할 수 있으며 각 사용자는 자신의 기본 쉘을 사용할 수 있습니다. 물론 이 모든 작업은 다운로드 및 사용자 등록 프로세스 중에 자동으로 수행됩니다.

    Linux 제품군의 운영 체제를 로드하는 동안 시스템 커널을 로드한 후 시스템은 사용자와 운영 체제 간의 상호 작용 모드인 대화형 모드로 전환됩니다. Linux에서 부팅 중에 시작되는 첫 번째 프로세스는 init 프로그램입니다. 초기화, 구성 파일의 내용을 읽습니다. /etc/inittab, 시스템에서 사용 가능한 단말기의 목록과 특성을 확인하고 대화형 로그인 프로그램을 호출합니다. 게티, 사용자 이름을 입력하라는 메시지가 표시됩니다. 사용자 이름과 비밀번호를 입력한 후 프로그램은 게티프로그램을 호출 로그인는 계정의 유효성을 확인하고 사용자의 홈 디렉터리로 이동한 다음 세션의 초기 시작 프로그램에 제어권을 전달합니다. 이 프로그램은 일반적으로 사용자의 셸 프로그램이며 구체적인 특징은 파일 내용에 따라 결정됩니다. /etc/passwd이 계정에 대해. 예를 들어:

user1:x:508:511::/home/user1:/bin/sh
인터베이스:x:510:511::/home/인터베이스:/bin/csh
apb:x:511:513:apb:/홈/apb:/bin/bash

파일 내용을 보면 알 수 있듯이 /etc/passwd, 사용자를 위한 사용자1쉘이 시작됩니다 (Bourne 쉘), 사용자용 인터베이스- 껍데기 csh(C 쉘) 및 사용자용 apb- 껍데기 세게 때리다(본 어게인) 셸이 시작되면 명령 프롬프트가 화면에 표시됩니다(보통 달러 기호 형식). $ 작업이 일반 사용자 계정 또는 파운드의 컨텍스트에서 수행되는 경우 # , 쉘이 루트 사용자 계정으로 사용되는 경우( 뿌리).

쉘을 종료하면 시스템 커널이 프로그램에 제어권을 반환합니다. 초기화, 로그인 프로세스를 다시 시작하고 터미널에 사용자 이름 프롬프트를 표시합니다. 셸 종료는 다음 두 가지 방법 중 하나로 수행할 수 있습니다.

팀을 통해 출구사용자가 수행한

쉘 프로세스가 신호를 수신할 때 죽이다, 예를 들어 시스템이 재부팅될 때 커널에 의해 전송됩니다.

명령줄 해석.

    쉘 프롬프트에 대한 응답으로 사용자 입력은 일반적으로 호출됩니다. 명령줄또는 . Linux 명령은 공백으로 구분된 명령 이름과 인수의 문자열입니다. 인수는 명령의 동작을 결정하는 추가 매개변수를 명령에 제공합니다. 인수로 가장 자주 사용됨 옵션그리고 이름파일과 디렉토리. 예를 들어, 명령줄

ls -l 파일01 파일02

ls 명령, -l 옵션 및 두 개의 파일 이름 file01 file02가 포함되어 있습니다.

여러 옵션을 사용하는 경우 조합할 수 있습니다. 예를 들어 다음 명령 옵션은 동일합니다.

Ls -l -d
ls -ld

쉘의 일부인 명령을 호출합니다. 내장. 이러한 명령에는 예를 들어 cd, if, case 등이 포함됩니다. 당연히 내장 명령은 쉘 옵션에 따라 다를 수 있습니다. 내장된 명령 외에도 별도의 실행 파일인 프로그램 모듈이나 파일을 사용할 수 있습니다. 스크립트또는 시나리오- 쉘 명령을 사용하여 순차적으로 실행되는 행을 포함하는 일반 텍스트 파일입니다. 작업 스케줄러와 같은 일부 스크립트(스크립트)는 Linux 프로세스에서 실행될 수 있습니다. 크론. 작업 스케줄러는 일반적으로 일정에 따라 시스템 관리 작업을 자동으로 수행하도록 설계되었습니다. 작업 크론명령 또는 스크립트는 사람의 개입 없이 자동으로 실행되며 다른 사용자 계정의 컨텍스트에서 실행될 수 있습니다. 스케줄러 작업에 스크립트 실행이 포함되는 경우 하위 프로세스로 시작되어야 하는 셸을 선택하는 문제가 발생합니다. 크론스크립트 파일에서 명령을 처리하려면 쉘은 무엇이든 될 수 있으며 일반적으로 스크립트 구문에는 스크립트가 작성된 특정 쉘을 사용해야합니다. 이 문제를 해결하기 위해 Linux 운영 체제에서는 스크립트의 첫 번째 줄에 실행에 필요한 셸 유형을 다음 형식으로 표시하는 것이 일반적입니다.

#!/bin/bash- 쉘용 세게 때리다

#!/bin/sh- 쉘용

징후 # 는 주석의 기호이며 그 뒤에 오는 문자는 명령으로 해석되지 않습니다. 이 기술을 사용하면 후속 파일 내용을 처리하는 데 사용해야 하는 셸을 명시적으로 지정할 수 있습니다. 스크립트에 필요한 셸을 명시적으로 정의하는 항목이 포함되어 있지 않으면 스크립트가 실행되는 컨텍스트에 있는 계정의 설정이 사용됩니다. 이 경우, 쉘용으로 작성된 스크립트가 가능합니다. 예를 들어, 실행을 위해 쉘로 전달됩니다 세게 때리다, 실행이 불가능해집니다.

명령이나 스크립트를 실행할 때 다음을 사용하십시오. 환경 변수(영어 - 환경, 명령이 실행되는 소프트웨어 환경을 특징 짓는 값입니다. 이러한 변수에는 일반 시스템 설정, 그래픽 또는 명령 셸 매개변수, 실행 파일 경로 등이 포함될 수 있습니다. 환경 변수 값은 시스템 수준(모든 사용자에 대해)과 특정 사용자 수준에서 설정됩니다. 시스템 수준에서 환경 변수를 설정하려면 파일 내용이 사용됩니다.

/etc/프로필- 명령 셸에 대해서만 변수를 설정합니다. Bourne 쉘과 호환되는 쉘에서 모든 스크립트를 실행할 수 있습니다.

/etc/bash.bashrc- 대화형 쉘에 대해서만 변수를 설정합니다. 또한 bash 스크립트를 실행합니다.

/etc/환경- PAM-env 모듈에서 사용됩니다. 이 파일에는 쌍만 지정할 수 있습니다. 이름=값.

각 파일에는 고유한 응용 프로그램이 있으므로 목적에 맞는 파일을 신중하게 선택해야 합니다. 예를 들어 사용자 정의 디렉터리를 추가해야 하는 경우 ~/빈변수로 모든 사용자에 대해 시스템 환경 초기화 파일(/etc/profile 또는 /etc/bash.bashrc) 중 하나에 다음 코드를 배치합니다.

# 사용자 ID가 1000 이상이고 ~/bin 디렉터리가 있고 해당 디렉터리가 있는 경우

# 이전에 PATH 변수에 추가되지 않았습니다.

# ~/bin을 $PATH로 내보냅니다.

만약 [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin)

내보내기 경로=$HOME/bin:$(PATH)

일반적으로 Linux 운영 체제에서는 1000 미만 또는 500 미만의 사용자 ID가 서비스 계정에 사용됩니다. 이 예에서는 ID가 1000 이상인 시스템의 모든 로컬 사용자에 대해 환경 변수가 설정됩니다.

특정 사용자에 대한 환경을 변경해야 하는 경우 사용자 환경의 내용을 수정합니다.

- ~/.bash_profile, ~/.bash_login등. - 사용자 홈 디렉토리의 쉘 초기화 파일.

- ~/.프로필- 사용자 프로필 초기화 파일. 환경 변수를 정의하기 위해 많은 쉘에서 사용됩니다.

~/.pam_environment- PAM-env 모듈에서 사용되는 /etc/environment 파일의 사용자 정의 아날로그입니다.

예를 들어, 변수로 지정된 실행 파일의 검색 경로에 사용자 디렉터리 ~/bin을 추가하려면 , 예를 들어 파일에 ~/.프로필다음 줄을 입력하세요:

내보내기 PATH="$(PATH):/home/user/bin"

그래픽 응용 프로그램에 대한 환경 변수를 설정하려면 사용자의 그래픽 환경 설정 파일 내용이 사용됩니다. ~/.xinitrc

현재 사용자 세션에 대해 환경 변수 값이 설정되는 경우가 더 많습니다. 예를 들어 사용자 정의 디렉터리를 추가하려면 ~/빈실행 파일 검색 경로:

내보내기 PATH=~/bin:$PATH

새 변수 값 현재 사용자 세션이 끝날 때까지만 지속됩니다.

변수의 값을 보려면 다음 명령을 사용할 수 있습니다. 에코 $변수, 예를 들어:

$PATH 에코

위에서 언급한 것처럼 현재 가장 일반적인 쉘은 다음과 같습니다. 세게 때리다. 이는 주로 쉘이 세게 때리다~이다 - Korn 쉘의 유용한 기능을 추가하는 호환 가능한 명령 쉘( 크쉬) 및 C 쉘( csh). 껍데기 세게 때리다수정 없이 쉘 프로그래밍 언어로 작성된 대부분의 스크립트를 실행할 수 있습니다. 그리고 가능한 한 표준에 가까워지려고 노력합니다. POSIX, 이로 인해 프로그래밍과 대화형 사용 모두에서 많은 개선이 이루어졌습니다. 현대적인 구현에서 세게 때리다명령줄 편집 모드, 무제한 명령 기록 크기, 작업 관리 도구, 별칭 사용 기능, 광범위한 내장 명령 목록, 명령 셸 기능 등이 있습니다. 일반적으로, 세게 때리다일반 사용자의 요구에 가장 적합하므로 Linux 환경에서 가장 많이 사용됩니다.

시작 시 세게 때리다명령줄 매개변수가 없으면 쉘은 대화형 모드로 시작하여 화면에 명령 프롬프트를 표시합니다. 대화형 쉘은 일반적으로 사용자 터미널에서 데이터를 읽고 동일한 터미널에 데이터를 씁니다. 표준 입력 장치는 키보드이고 표준 출력 장치는 디스플레이입니다. 사용자는 키보드로 명령을 입력하고 실행 결과가 디스플레이에 표시됩니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: