서론
ELITE HACKER Bootcamp 3rd 1주차 수업 공부 내용
aws 우분투 서버 하나 파서 연습
sudo, mkdir, touch, cp, rm
다중명령어 : ;, &&, ||, &
cli, shell, /bin/sh, /bin/bash
sudo
일시적으로 다른 사용자(주로 관리자)의 권한으로 명령어를 실행할 수 있게 해주는 명령어인데, 보통 시스템 관리자 권한(root)으로 특정 명령어를 실행해야 할 때 사용한다.
한 번 실행할 때마다 사용자의 비밀번호를 입력하도록 요구할 수 있고, 로그에도 남아서 누가 root 권한을 가지고 실행했는지 파악이 가능하다. 이렇게 하는 이유는 임시적으로 루트권한을 잠시 부여해주는 거기에...보안 강화이다. 잘못된 명령어 루트원한으로 치면...예를 들어 rm -rf / 해버리면 운영체제 전체가 날아가버리기 때문에...큰일을 방지하기 위해서이다.
sudo 명령어의 동작 및 권한 설정은 /etc/sudoers 파일에서 관리되는데,이 파일은 visudo 명령어로 편집하여 설정을 변경할 수 있다.
username ALL=(ALL:ALL) ALL
sudoers는 어떤 사용자가 루트권한으로 어디까지 관리자권한으로 실행할 수 있는가를 나타낸다.
** sudo su
sudo su
라는 것도 있는데, 사용자를 전환하는 명령어
그래서 내가 누구인가? 확인하려면
whoami
mkdir
새로운 디렉터리를 생성하는 명령어. "make directory"의 약자로, 파일 시스템 내에 새로운 디렉터리(폴더)를 만들 때 사용된다.
mkdir [옵션] 디렉터리명
로 사용되는데,
이렇게
mkdir a1 a2 a3 a4 a5
로 a1, a2, a3, a4, a5 디렉터리를 한 번에 생성할 수 있다.
속성들도 있는데
- -p : 디렉터리 내부까지 생성
- -v : 생성 과정 출력
그래서 a1밑에 a2 디렉터리를 생성하려면 -p 속성을, -v 생성과정을 출력해준다.
이미 있는 거 생성하려면 오류 발생한다.
touch
빈 파일을 생성하거나 기존 파일의 타임스탬프(접근 시간 및 수정 시간)를 업데이트하는 데 사용된다.
-c : 파일이 없으면 그냥 넘어가고, 파일이 있으면 타임스탬프 업그레이드
-a : 파일의 접근 시간만 업데이트
-m : 수정시간만 업데이트
-t : 특정 타임스탬프 설정
touch 파일1 파일2 파일3
보통 이렇게만 써서 파일 생성했어서 잘 모르겠다.
-m 을 썼을 때 a.txt에서의 수정시간이 업데이트 되었다.
cp
파일이나 디렉터리를 복사하는 데 사용. 원본 파일이나 디렉터리를 새로운 위치에 복사할 수 있으며, 다양한 옵션을 사용하여 복사의 동작을 제어할 수 있다.
cp [옵션] 원본 대상
디렉터리도 되나 보자.
디렉터리는 복사가 안 된다! 이럴땐 속성을 봐야하는데
- -r: 디렉터리와 하위 내용 재귀적으로 복사
- -i: 덮어쓰기 전에 사용자 확인 요청
- -u: 대상보다 새롭거나 없는 파일만 복사
- -v: 복사 과정을 자세히 출력
- -p: 파일의 원래 속성(권한, 시간 정보 등) 보존
- -a: 원본의 모든 속성을 보존하며 재귀적으로 복사
- -f: 강제 덮어쓰기
즉, 디렉터리를 복사하려면 -r 속성이 있어야하고 조금 위험할 거 같다? 그럼 -i로 확인을 받아야한다. 강제하려면 -f..
rm
파일이나 디렉터리를 삭제하는 명령어이다. 파일이나 디렉터리를 삭제할 때 주의해야 하며, 한 번 삭제된 데이터는 일반적으로 복구하기 어렵다.. 이것도 cp처럼 비슷한 속성인데
- -r: 디렉터리와 하위 내용 삭제
- -i: 삭제하기 전에 사용자 확인 요청
- -f: 강제 삭제
그래서
rm -r a
이렇게 하면 a디렉터리를 삭제할 수 있다.
다중 명령어
여러 명령어를 한 줄에 실행할 수 있도록 도와주는 다양한 연산자들이 있는데, 각 연산자는 명령어의 실행 순서와 조건을 제어하는 데 된다
;
명령어를 순차적으로 수행하는데, 앞에 결과와 상관없이 수행된다.
ls ; pwd
이런식으로 사용. 여러 개 해도 상관없다.
&&
AND연산자이며, 앞에 명령어가 실패하면 뒤에 명령어가 실행되지 않는다. 즉 앞에 거가 성공해야 뒤에 것도 실행된다는 얘기
cet && ls
cet 를 했을 때는 없는 명령어라고 오류가 나오는데, ;가 있을 때는 ls도 실행되는 반면 && 였으면 실행조차 되지 않았다.
||
OR연산자로, 이건 AND랑은 반대로 앞에 거가 실패하면 뒤에 게 실행된다. 즉 앞에 것이 성공하면 뒤에 것이 실행되지 않는다.
cet || ls
&
백그라운드 실행.
sleep 5
sleep 5 &
두 개 비교해보면 안다.
sleep(5) 그냥인 경우 5초동안 잠들어있다가 다시 작동할 수 있지만, sleep(5)를 하면 해당 프로세서가 제어권을 잃고 백그라운드에서 실행되기에 바로 다른 작업을 진행할 수 있다.
|
파이브. 앞의 연산의 결과를 뒤로 보낸다.
cat a.txt | less
명령어 주석
저번 게시글에서도 적었지만, 터미널에서 주석하려면 파이썬처럼 #을 사용하면 된다
CLI 와 shell 이란?
CLI는 명령줄 인터페이스로, 사용자가 명령어를 텍스트 형식으로 입력하여 컴퓨터와 상호작용할 수 있는 환경,
shell은 사용자와 운영체제 커널 사이의 인터페이스로, 사용자가 입력한 명령어를 해석하고 실행하는 프로그램이다.
CLI는 크게 입력과 출력으로 나뉘어져있다. GUI와 달리 텍스트 기반으로 사용되기에 메모리 사용량이 적고 실행속도가 빠르다.
즉 shell은 CLI의 일종으로, 명령어를 입력하면 이를 해석해 운영체제 커널에서 실행하도록 요청한다. 쉘에도 종류가 있는데 Bash, Zsh, Ksh, Csh등이 있다고 한다. 쉘은 단순한 명령어 실행뿐만 아니라 스크립트를 작성해 자동화된 작업을 수행할 수 있도록 한다.
정리를 하자면
사용자가 명령을 입력 -> 쉘이 해석 -> 커널이 명령 수행 -> 쉘이 해석 -> 사용자가 결과확인 순서인 것이다.
/bin/sh vs /bin/bash
우선 /bin/sh의 경우 Bourne Shell을 가리키며 유닉스의 원래 쉘 프로그램이다. 기본적인 쉘 기능만 제공하는 단순한 구조이다. 그렇기에 제한된 기능을 제공하는데, 기본적인 POSIX 쉘 기능만 지원한다. 그래서 가볍고 단순하기에 속도는 bash 보다 빠르다.
/bin/bash의 경우 Bourne Again Shell로, GNU 프로젝트의 쉘로 /bin/sh 를 개선한 버전이다.
대화형 사용 및 스크립팅을 위해 설계되었으며 더 많은 기능을 제공한다.
'KnockOn' 카테고리의 다른 글
[KnockOn] Linux/Ubuntu 운영체제의 패키지 (0) | 2024.11.07 |
---|---|
[KnockOn] Linux/Ubuntu Symbolic Link (0) | 2024.11.07 |
[KnockOn] Linux/Ubuntu 리눅스 디렉터리 구조 (0) | 2024.11.06 |
[KnockOn] Linux/Ubuntu 파일기술자, Redirect (2) | 2024.11.06 |
[KnockOn] Linux/Ubuntu 운영체제 명령어 -1 (2) | 2024.11.04 |