Bash Shell Script(Week 5-1)

G·2022년 10월 7일
0

2-2 OpenSource

목록 보기
5/12
post-thumbnail

Bash Shell Script

Content

  • Linux File Permission
  • Linux File Permission
  • Shell Script
  • Position Parameter
  • User Input
  • Test command

Linux File Permission

모든 파일과 디렉토리엔 Read, Write, Execute 권한을 위한 bits가 있다.
이들은 File의 meta data에 들어가며 rwx형태로 존재한다.

  • r: 파일을 읽을 수 있는 권한이다. ls 같은 명령어를 사용할 수 있다.
  • w: 파일을 생성, 수정, 삭제할 수 있는 권한이다.
  • x: 파일을 싱핼할 수 있는 권한 디렉토리를 변경하는 cd와 같은 명령어 사용 가능

예를들어, 파일을 읽으려면 cd, ls, 그리고 cat과 같은 명령어를 사용할 수 있어야 하기 때문에 r,x권한이 있어야 한다.

3 levels of files and directories

  • Group: 그룹
  • Owner: 소유자, 작성자
  • Everyone Else: 나머지

Output Format


ls -l을 이용하여 중요한 정보들을 요악하여 볼 수 있다.
위 이미지를 보면, 맨 앞에 - 문자는 일반적인 파일을 뜻 한다. 그 이후 세 문자씩 끊어
owner, group, others에게 어떤 권한이 부여되었는지 확인할 수 있다.

일반파일(touch)과 폴더(directory)의 default값

  • 일반파일: -rw-r--r--
  • 디렉토리: drwxr-xr-x

권한을 수정하고 싶다면 아래의 명령어를 사용하면 된다.

  • chmod <file/directory name>

expressions

  • users: owner: -u, group: -g, others: -o, All: -a
  • grating: +,-,=
  • types: r,w,x

예제

Shebang

파일안의 shell script를 실행시킬 때 이는 새로운 프로세스를 생성한다.
이해하기 편하게 #! /bin/bash를 파일 첫줄에 입력함으로써 시스템에게 shell을 시작하고 명령어를 실행시키라고 말하면 이해하기 편할 것이다.

만약 #! /bin/bash 문장을 첫 줄에 작성하지 않는다면 원치않는 Shell이 실행될 수도 있다. Unix system에선 항상 작성해줘야하고 Linux system에선 default로 bash shell이 사용된다.

Positional Parameters

Shell Script에 작성된 값을 확인한다.

  • $0 Name of the current shell script
  • $# The number of positional parameters
  • $* All positional parameters
  • $? Exit status of most recently executed command
  • $$ Process id of current process

예제코드

User Input

input syntax

  • read varname [more vars]
  • read -p "prompt" varname [more vars]//write prompt
  • read -s varname [more vars]//invisible input

예제

test

Check whether an expression is true or false

  • test expression
  • [ expression ]

Integer Test

아래의 명령어를 사용해 정수간의 비교를 할 수 있다.

  • [ int1 –eq int2 ] int1 = int2
  • [ int1 –ne int2 ] int1 ≠ int2
  • [ int1 –gt int2 ] int1 > int2
  • [ int1 –ge int2 ] int1 ≥ int2
  • [ int1 –lt int2 ] int1 < int2
  • [ int1 –le int2 ] int1 ≤ int2

String Test

아래의 명령어를 이용해 문자열의 길이(0 or not 0)를 알거나 문자열 간의 비교를 할 수 있다.

  • [ string1 = string2 ] String1 is equal to String2
  • [ string1 != string2 ] String1 is not equal to String2
  • [ -z string ] Length of string is zero
  • [ -n string ] Length of string is nonzero

File Test

아래의 명령어를 이용해 File의 권한, 생성여부를 알 수 있다.

  • [ -e filename ] File existence
  • [ -d filename ] Directory existence
  • [ -f filename ] Regular file existence (not a directory)
  • [ -r filename ] File is readable
  • [ -w filename ] File is writable
  • [ -x filename ] File is executable
  • [ -b filename ] Block special file
  • [ -c filename ] Character special file
  • [ -s filename ] File is nonzero size
profile
열심히 안 사는 사람

0개의 댓글