모든 파일과 디렉토리엔 Read, Write, Execute 권한을 위한 bits가 있다.
이들은 File의 meta data에 들어가며 rwx형태로 존재한다.
- r: 파일을 읽을 수 있는 권한이다. ls 같은 명령어를 사용할 수 있다.
- w: 파일을 생성, 수정, 삭제할 수 있는 권한이다.
- x: 파일을 싱핼할 수 있는 권한 디렉토리를 변경하는 cd와 같은 명령어 사용 가능
예를들어, 파일을 읽으려면 cd, ls, 그리고 cat과 같은 명령어를 사용할 수 있어야 하기 때문에 r,x권한이 있어야 한다.
- Group: 그룹
- Owner: 소유자, 작성자
- Everyone Else: 나머지
ls -l을 이용하여 중요한 정보들을 요악하여 볼 수 있다.
위 이미지를 보면, 맨 앞에 - 문자는 일반적인 파일을 뜻 한다. 그 이후 세 문자씩 끊어
owner, group, others에게 어떤 권한이 부여되었는지 확인할 수 있다.
- 일반파일: -rw-r--r--
- 디렉토리: drwxr-xr-x
권한을 수정하고 싶다면 아래의 명령어를 사용하면 된다.
- chmod <file/directory name>
- users: owner: -u, group: -g, others: -o, All: -a
- grating: +,-,=
- types: r,w,x
파일안의 shell script를 실행시킬 때 이는 새로운 프로세스를 생성한다.
이해하기 편하게 #! /bin/bash를 파일 첫줄에 입력함으로써 시스템에게 shell을 시작하고 명령어를 실행시키라고 말하면 이해하기 편할 것이다.
만약 #! /bin/bash 문장을 첫 줄에 작성하지 않는다면 원치않는 Shell이 실행될 수도 있다. Unix system에선 항상 작성해줘야하고 Linux system에선 default로 bash shell이 사용된다.
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
input syntax
- read varname [more vars]
- read -p "prompt" varname [more vars]//write prompt
- read -s varname [more vars]//invisible input
예제
Check whether an expression is true or false
- test expression
- [ expression ]
아래의 명령어를 사용해 정수간의 비교를 할 수 있다.
- [ 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
아래의 명령어를 이용해 문자열의 길이(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의 권한, 생성여부를 알 수 있다.
- [ -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