터미널:
사용자가 호스트와 상호 작용하는 데 사용해야 하는 장비
물리적 터미널: /dev/console
가상 터미널: 물리적 터미널에 연결된 소프트웨어 기반 가상 터미널입니다. CentOS 6은 기본적으로 6개의 가상 터미널을 시작합니다.
Ctrl+Alt+F#: [1,6]
그래픽 터미널: 구현된 터미널 물리적 터미널에 연결되어 있지만 추가로 데스크톱 환경을 제공하는 소프트웨어에 있습니다.
장치 파일 경로: /dev/tty#
시뮬레이트된 터미널:
그래픽 인터페이스 명령줄 인터페이스 명령줄 인터페이스에서 열리면 SSH 프로토콜 또는 텔넷 프로토콜을 기반으로 원격으로 열리는 인터페이스
장치 파일: /dev/pts/# [0,oo)
현재 터미널 장치 보기: TTYININTERACTIVE 인터페이스 : 터미널을 시작한 후 대화식 응용 프로그램을 터미널 장치에 첨부합니다.
GNOME(C, gtk)
KDE(C++, qt)
XFCE(경량 데스크톱)
CLI:
셸 프로그램:
sh(번)
csh
tcsh
ksh(korn)
bash(bourn again shell), GPL
zsh
현재 사용되는 쉘 표시:
# echo ${SHELL}
현재 시스템에서 사용하는 모든 쉘을 표시합니다:
# cat /etc/shells
명령 프롬프트: 프롬프트
[root@ localhost ~] #
[root@localhost ~]: PS1
프롬프트:
관리자: #
일반 사용자: $
명령:
명령을 입력하고 Enter를 누르십시오.
는 쉘 프로그램이 입력된 명령에 해당하는 실행 가능한 프로그램이나 코드를 찾도록 요청하고, 분석 후 이를 커널에 제출하여 실행할 리소스를 할당합니다.
은 하나 이상의 프로세스로 나타납니다.
셸에서 실행할 수 있는 명령에는 두 가지 유형이 있습니다.
내장 명령: 셸에서 가져오고 특정 명령 형식을 통해 제공됩니다. 현재 시스템 특정 파일 시스템 경로 아래에 해당 실행 프로그램 파일이 있습니다.
which, whereis
내부 또는 외부 명령을 구분합니다.
# COMMAND
실행 명령:
명령 형식:
COMMAND [OPTIONS...] [ARGUMENTS...]
옵션: 명령의 하나 이상의 기능을 활성화하거나 비활성화하는 데 사용됩니다. 옵션: -c, 예: -l, -h
명령과 함께 여러 개의 짧은 옵션을 사용할 수 있습니다. 예: -l -h는 -lh로 작성할 수 있습니다. -- 예: --long, --human-readable
매개변수:
명령의 작업 개체는
명령에 데이터를 제공합니다. 참고:
1. 여러 옵션뿐만 아니라 여러 매개변수 및 명령도 공백 문자를 사용하여 구분해야 합니다.
2. 명령 실행 취소: Ctrl+c
파일 시스템:
C:Program filesoffice11wordword.exe
/etc/sysconfig/network-scripts/ifcfg-eth 0
파일에는 두 가지 유형의 데이터가 있습니다.
metadata: Metadata
data: data
1은 대소문자를 엄격하게 구분합니다. 파일
2. 파일 이름은 /를 제외한 모든 문자를 사용할 수 있습니다.
/: 루트 디렉터리, 경로 구분 기호는
3입니다.
4. 따라서 .로 시작하는 파일은 모두 숨겨진 파일입니다.
경로:
상대 경로 : 현재 위치에서 시작하는 경로
현재 위치 표현:
(1) ./: ./sysconfig/network-scripts
(2) 위 기호 생략: sysconfig/ network-scripts
..: 현재 디렉터리의 상위 디렉터리를 나타냅니다
현재 디렉터리: 작업 디렉터리라고도 함
pwd: 작업 디렉터리 인쇄
LSB: Linux Standard Base
명령 요약: ls, cd, type, tty, cat, which, whereis, pwd, echo
명령:
(1 ) 파일 시스템 관련:
디렉토리 관리
파일 관리
파일 보기
파일 편집
(2) 시스템 관리 관련:
Linux 명령 도움말 얻기
외부 명령: 파일 시스템의 특정 디렉터리에 실행 가능한 프로그램이 있습니다.
여기서
실행 가능한 프로그램 파일을 검색하는 쉘 프로그램의 경로는 PATH 환경 변수;
# echo $PATH
참고: 왼쪽에서 오른쪽으로
형식: COMMAND [OPTIONS...] [ARGUMENTS...]
내부 명령:
# help COMMAND
외부 명령:
(1) # COMMAND --help
# COMMAND -h
(2) 수동
# man COMMAND
(3) 정보 페이지
# info COMMAND
(4) 프로그램 자체의 도움말 문서
README
INSTALL
ChangeLog
(5) 프로그램 사이트의 공식 문서 : 문서화
(6) 배포의 공식 문서
(7) Google Internal Command 도움말 :
# help COMM AND
hash 명령:
셸에서 검색한 외부 명령의 경로 결과는 kv(키-값) 저장소에 캐시됩니다.
history 명령:
관리 명령 기록
셸에 로그인하면 명령 기록 파일에 기록된 명령이 읽혀집니다. ~/.bash_history
셸에 로그인한 후 새로 실행된 명령은 캐시에만 기록됩니다. 사용자가 종료할 때 "추가"됩니다.
history:
-a: 이 세션의 새로 실행된 명령 기록 목록을 기록 파일에 추가합니다. d: 기록에서 지정된 명령을 삭제합니다. ;
-c: 명령 기록 지우기
빠른 작업:
!#: 기록에서 #번째 명령을 호출합니다. !string: 시작 부분에서 기록 명령의 최신 문자열 호출
!!: 이전 명령
외부 명령 도움말 액세스:
(2) man COMMAND
맨 페이지 : /usr/share/man
man1 ... man8
man1: 사용자 명령
man2: 시스템 호출
man3: C 라이브러리 호출
man4: 장치 파일 및 특수 파일
man5: 구성 파일 형식
man6: Game
man7: 기타
man8: 관리 명령
참고: 일부 키는 도움말 설명서에 있습니다. 더 많은
지정된 장의 설명서 보기: man # COMMAND
Man 명령 구성 파일: /etc/man.config
MANPATH /PATH/TO/SOMEWHERE: 새 장을 나타냅니다. 수동 파일 검색 위치
# man -M /PATH/TO/SOMEWHERE COMMAND: 지정된 위치에서 COMMAND 명령의 매뉴얼 페이지를 검색하여 표시합니다.
도움말 매뉴얼의 단락 설명 :
NAME
자세히 보기
SYNOPSIS:
[]: 선택 콘텐츠
<>: 필수 콘텐츠
a|b: 선택 둘 중 하나
...: 동일한 내용이 여러 번 나타날 수 있습니다
Man 명령 조작 방법:
Space, ^V, ^f, ^F: 끝으로 넘김 file;
b, ^B: 파일 시작 부분으로 뒤집기;
d, ^D: 파일 화면 끝까지 반으로 뒤집기;
RETURN, ^N, e, ^E 또는 j 또는 ^J: 한 줄을 파일 끝으로 바꿉니다.
y 또는 ^Y 또는 ^P 또는 k 또는 ^K: 한 줄을 파일의 시작 부분으로 바꿉니다.
#: 줄 #으로 이동합니다.
1G: 파일의 시작 부분으로 돌아갑니다.
G: 파일 끝으로 이동
텍스트 검색:
/KEYWORD:
KEYWORD로 지정한 문자열을 키워드로 현재 위치부터 끝까지 검색 파일의 문자가 구분되지 않음 대문자와 소문자
N: 이전
?KEYWORD:
키워드로 KEYWORD로 검색 현재 위치를 파일의 시작 부분으로 구분하지 않습니다. 문자 대소문자
n: 검색 명령과 동일한 방향, 다음
N: 검색 명령과 반대 방향, 이전
(3) info
info COMMAND
(4) 프로그램 자체 도움말 문서
/ usr / share/doc/COMMAND-VERSION
(5) 프로그램의 공식 문서
(6) 배포의 공식 문서
(7) Google
(8) Slideshare
기본 명령:
date:
date [OPTION]... [+FORMAT]: 표시
형식 : 형식 기호
%D
%F
%T
날짜 [MMDDhhmm[[CC]YY][.ss]]: 설정
MM: 월
DD : 무슨 요일
hh: 시
mm:분
.ss: 초
Linux의 두 종류의 시계:
시스템 시계: Linux 커널의 작동 주파수를 통해 시계를 기록합니다. CPU;
하드웨어 시계:
hwclock: 디스플레이 하드웨어 시계
-s, --hctosys
-w, --systohc
cal: Calendar
디렉토리 관련 명령:
현재 디렉터리 또는 작업 디렉터리
홈 디렉터리, 홈 디렉터리: HOME
root: /루트
일반 사용자: /home/USERNAME
/home/tom
~: 사용자의 홈 디렉터리
cd:
cd 또는 cd ~: 현재 사용자로 돌아갑니다.' 집에 디렉토리
cd ~USERNAME: 지정된 사용자의 홈 디렉토리로 전환
cd -: in 이전 디렉토리와 현재 디렉토리 간을 전환합니다.
.
..
관련 환경 변수:
PWD: 현재 디렉터리 경로를 저장합니다.
OLDPWD: 마지막 디렉터리의 경로
pwd: 현재 디렉터리를 표시합니다.
ls: list
지정된 경로 아래에 파일 목록을 표시합니다.
ls [OPTION] ... [DIR]...
-a, --all: 모두 표시 숨겨진 파일을 포함한 파일
-l: 긴 형식
-rw-r--r-- 1 루트 루트 44800 Aug 14 14:32 install.log
-rw-r-- r--:
왼쪽 첫 번째 숫자: 파일 형식
-, d, l, b, c, p, s
뒤의 9자리: 접근 권한, perm
번호: 파일이 하드 링크된 횟수
왼쪽 루트: 파일 소유자
오른쪽 루트: 파일 그룹
44800: 파일 크기
8월 14일 14:32 : 파일이 마지막으로 수정된 시간
install.log: 파일 이름
-h, --human-readable: 단위 변환
-d: 표시 관련 일반적으로 필수 -l과 함께 사용
-r, --reverse: 역순으로 표시
-R, --recursive: 재귀
stat /PATH/TO/SOMEFILE: get 파일의 메타데이터 지정
파일 보기 명령: cat, tac
cat [OPTION]... [FILE]...
- E: 줄 종결자 표시 $
-n: 표시된 각 줄에 번호를 매깁니다
파일 내용 유형 보기 명령: file
file /PATH/TO/SOMEWHERE
Echo 명령: echo
-n: 개행 문자 자동 추가 비활성화
-e: 이스케이프 문자 사용 허용
t: 탭 문자
echo "$VAR_NAME" : 변수가 대체됩니다. 큰따옴표는 약한 참조를 나타냅니다
echo '$VAR_NAME': 변수는 대체되지 않습니다. 강한 참조
which: 해당하는 프로그램 파일 경로를 표시합니다. command
which [OPTION] COMMAND
--skip-alias: 별칭 표시 억제
whatis:
mkwhatis 명령을 사용하여 모든 도움말 설명서 및 해당 데이터베이스를 생성합니다. 현재 시스템의 키워드
시스템 관리 명령:
종료:
halt, poweroff, shutdown, init 0
재부팅:
reboot , 종료, 초기화 6
Follow 사용자 로그인 관련:
who, whoami, w
Linux 파일 시스템:
루트 파일 시스템(rootfs):
root 파일 시스템
LSB, FHS : (파일 시스템 상속 표준)
/etc, /usr, /var, /root, /home, /dev
/boot: 부팅 파일 저장 디렉터리, 커널 파일(vmlinuz) , 부트로더(bootloader, grub)는 이 디렉터리에 저장됩니다.
/bin: 모든 사용자를 위한 기본 명령은 OS가 시작될 때 사용되는 프로그램인 독립 파티션과 연결할 수 없습니다. : 관리 클래스 기본 명령은 OS 시작 시 사용되는 프로그램인 독립 파티션과 연결할 수 없습니다.
/lib: 기본 공유 라이브러리 파일 및 커널 모듈 파일(/lib/modules); /lib64: 전용 x86_64 시스템의 보조 공유 라이브러리 파일 저장 위치
/etc: 구성 파일 디렉터리(일반 텍스트 파일)
/home/USERNAME: 일반 사용자 홈 디렉터리; /root: 관리 구성원의 홈 디렉터리
/media: 휴대용 모바일 장치 마운트 지점
cdrom
usb
/mnt: 임시 파일 시스템 마운트 지점; : 장치 파일 및 특수 파일 저장 위치
b: 블록 장치, 임의 액세스
c: 문자 장치, 선형 액세스
/opt: 타사 응용 프로그램의 설치 위치
/srv: 시스템에서 실행되는 서비스에서 사용되는 데이터
/tmp: 임시 파일 저장 위치
/usr: 범용 공유, 읽기 전용 데이터
bin: 시스템이 완전한 기능을 갖도록 제공되는 애플리케이션
sbin:
lib:
lib64:
include: C 프로그램의 헤더 파일
share: doc, man 등과 같은 구조화된 독립 데이터
local: 타사 응용 프로그램의 설치 위치
bin, sbin, lib , lib64, etc, share
/var: 변수 데이터 파일
cache: 애플리케이션 캐시 데이터 디렉터리
lib: 애플리케이션 상태 정보 데이터
local: 저장 변수 전용; /usr/local 아래의 애플리케이션용 데이터
로그: 로그 디렉터리 및 파일
opt: /opt 아래의 애플리케이션에 사용 가능한 데이터를 저장하는 데 사용됩니다.
run: 실행 중인 프로세스와 관련된 데이터. 일반적으로 프로세스의 pid 파일을 저장하는 데 사용됩니다.
tmp: 두 번의 시스템 재시작 사이에 저장됩니다.
/ proc: 커널 및 프로세스 정보를 출력하는 데 사용되는 가상 파일 시스템
/sys: 현재 시스템의 하드웨어 장치 관련 정보를 출력하는 데 사용되는 가상 파일 시스템
/selinux: 향상된 저장 위치 보안 Linux, selinux 관련 보안 정책 및 기타 정보
Linux의 애플리케이션 구성 요소:
바이너리 프로그램: /bin, /sbin, / usr/bin, /usr/sbin, /usr/ local/bin, /usr/local/sbin
라이브러리 파일: /lib, /lib64, /usr/lib, /usr/lib64, /usr/local/ lib, /usr/local/lib64
구성 파일: /etc, /etc/DIRECTORY, /usr/local/etc
도움말 파일: /usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/ local/share/doc
Linux의 파일 유형:
-(f): 일반 파일
b: 블록 장치; c: 문자 장치;
p: 파이프 파일;
시스템 관리 명령 종료 :
halt, poweroff, shutdown, init 0
Reboot:
reboot, shutdown, init 6
Follow 사용자 로그인 관련:
who, whoami, w
종료 또는 재시작:
halt, poweroff
reboot
-f: 강제, 종료를 호출하지 않음
-p: 전원 차단
종료:
종료 [옵션]... 시간 [메시지]
-r: 재부팅
-h: 정지
-c: 취소
TIME:
now: 즉시
+m: 상대 시간 표현, 명령 제출 후 시간, 예를 들어 +3;
hh:mm: 절대 시간 표현, 특정 시간 지정
사용자 로그인 정보 보기 명령:
whoami: 현재 로그인된 유효한 사용자를 표시합니다.
who: 현재 모든 사용자 시스템 세션의 로그인
w: 시스템에서 수행되는 모든 현재 로그인 세션 및 작업
bash의 기본 기능(1):
(1) 명령 기록
history
환경 변수:
HISTSIZE: 명령 기록 레코드 수
HISTFILE: ~/.bash_history;
HISTFILESIZE: 명령 기록 파일 수
녹음되었습니다.
history -d OFFSET
-c
history #: 기록에 # 가장 최근 명령을 표시합니다.
-a: 현재 세션 버퍼의 명령 기록을 기록에 수동으로 추가합니다.
기록의 명령 호출:
!#: #번째 명령 반복
!!:
끝으로 전화하세요. 이전 명령 매개변수 1개:
ESC, .
Alt+.
명령 기록 기록 방법 제어:
환경 변수: H IST컨트롤
ignoredups: 중복된 명령을 무시합니다. 연속적이고 동일한 명령은 "중복"입니다.
ignorespace: 공백으로 시작하는 모든 명령을 무시합니다. 환경 변수 값 : 내보내기 변수 이름="value"
변수 할당: 메모리 공간을 가리키는 변수 이름에 할당 기호 뒤에 데이터를 저장합니다.
(2) 명령 완성
bash 실행 명령:
내부 명령:
외부 명령: bash는 PATH 환경 변수에 정의된 경로에 따라 왼쪽에서 오른쪽으로 각 경로에서 주어진 명령 이름으로 명명된 파일을 검색합니다. ;
직접 완성: Tab, 사용자가 지정한 문자열에는 해당 명령이 하나만 있습니다.
사용자가 지정한 문자열로 시작하는 해당 명령; 고유하지 않으면 Tab은 Out of the list를 제공합니다.
(3) 경로 완성
은 사용자가 지정한 문자열을 경로의 시작으로 처리하고
고유한 경우: 직접 완료합니다.
그렇지 않은 경우: 목록을 제공하려면 다시 탭하세요.
(4) 명령줄 확장: 사용자의 홈 디렉터리로 확장
~USERNAME: 지정된 사용자의 홈 디렉터리로 확장
{}: 쉼표로 구분된 목록을 호스팅하고 여러 경로로 확장 가능
/tmp/{ a,b} = /tmp /a, /tmp/b
/tmp/{톰,제리}/hi = /tmp/tom/hi, /tmp/jerry/hi
(5 ) 명령 실행 결과 상태
Success
Failure
bash는 특수 변수 $?를 사용하여 최신 명령의 실행 상태 결과를 저장합니다.
0: 성공
1-255: 실패
프로그램 실행 결과에는 두 가지 유형이 있습니다.
프로그램의 반환 값
프로그램의 실행 상태 결과
디렉토리 관리 명령:
cd, pwd, ls
mkdir, rmdir, tree
mkdir [옵션 ] /path/to/somewhere
-p: 오류 없이 존재하며 필요한 디렉터리를 자동으로 생성할 수 있습니다.
-v: 자세한 정보를 표시합니다
-m MODE: 디렉터리를 생성할 때 직접 권한을 지정합니다. ;
tree:
-d: 디렉토리만 표시
-L 레벨: 표시할 레벨 수 지정
-P 패턴: 지정된 패턴과 일치하는 항목만 표시 경로;
rmdir: 빈 디렉토리 삭제
rmdir [OPTION]... DIRECTORY...
-v: 프로세스 표시
텍스트 파일 보기 클래스 명령:
cat, tac
more, less, tail, head
more
more [OPTIONS...] FILE...
-d: 페이지 넘김 표시 및 종료 팁
less
less [옵션...] 파일...
head
head [옵션]... [파일]...
-c #:
-n을 얻기 전에 # 바이트를 지정하세요 #:
-#:
tail
tail [OPTION]... [ FILE]...
-c #: 획득 후 #바이트 지정
-n #: 획득 후 #라인 지정
-#:
-f: 추적 표시 파일 신규 추가된 콘텐츠;
파일 타임스탬프 관리 도구:
touch
파일: 메타데이터, 데이터
파일 상태 보기: stat
Thre e 타임스탬프 :
접속 시간: 접속 시간, 약칭 atime, 파일 내용 읽기
수정 시간: 수정 시간, mtime, 파일 내용 변경(데이터)
변경 시간: 변경 시간, ctime, yuan 데이터 변경
touch 명령:
touch [OPTION]... FILE...
-a: atime만
-m: mtime만
- t STAMP:
[[CC]YY]MMDDhhmm[.ss]
-c: 파일이 없으면 생성되지 않습니다
파일 시스템:
boot, bin , sbin, lib , lib64, dev, home, root, mnt, media, etc, proc, sys
usr
var
Bash의 기본 기능:
명령 완성
경로 완료
명령 기록
명령줄 확장:
~, {}
명령의 상태 결과
성공: 0
실패: 1-255
디렉토리 관리: mkdir, rmdir
파일 보기: more, less, tail, head
타임 스탬프 관리: touch
-a , - m, -t
-c
파일 관리:
cp, mv, rm
복사 명령: cp
cp [OPTION]... [-T] SOURCE DEST
> ...
CP SRC Dest
Src는 파일입니다.
대상이 존재하지 않는 경우: 에 새 DEST가 있습니다. ~
DEST가 디렉터리인 경우: DEST 아래에 새 파일을 만듭니다. 원본 파일과 동일한 이름으로 SRC의 콘텐츠를 새 파일에 입력합니다.
cp SRC... DEST
SRC...: 여러 파일
DEST는 반드시 존재해야 합니다. 그렇지 않으면 오류가 발생합니다.
지정된 디렉터리를 생성하고 SRC 디렉터리의 모든 파일을 DEST에 복사합니다.
-d:--no-dereference 서브 = links
---preserv [= attr_list] 모드 : 권한
소유자 : 소유자 그룹
theMeStamp :
링크
선박, 타임 스탬프 -v : --verbose
-f : --force
mv: 이동, 파일 이동 mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE. .. DIRECTORY mv [옵션]... -t 디렉토리 소스...
~ rm [옵션] ... 파일...
공통 옵션:
-i: Interactive
-f: 강제 삭제
-r: recursive
rm - rf
텍스트 편집기: nano
전체 화면 편집기
bash의 기본 기능(2):
1. 명령 별명(alias)
은 alias 명령을 통해 구현됩니다.
(1) alias
은 현재 쉘 프로세스 사용 가능한 명령 별칭
(2) 별칭 NAME='VALUE'
VALUE 명령을 실행하는 것과 동일한 별칭 NAME을 정의합니다. 명령줄은 현재 쉘 프로세스에만 유효합니다. 영구적으로 유효하려면 구성 파일에 정의해야 합니다.
현재 사용자에 대해서만: ~/.bashrc
유효합니다. 모든 사용자: /etc/bashrc
참고: 구성을 편집하여 지정된 새 구성은 즉시 적용되지 않습니다.
bash 프로세스는 구성 파일을 다시 읽습니다.
source / path/to/config_file
./path/to/config_file
별칭 실행 취소: unalias
unalias [-a] 이름 [이름 ...]
참고: 별칭이 원래 명령의 이름과 동일한 경우 원래 명령을 실행하려면 "COMMAND"를 사용하면 됩니다.
2, glob(globbing)
Bash를 사용합니다. 파일 이름 "wildcard" 구현
와일드카드 문자: *, ?, []
(1) *
모든 길이의 문자
a*b:
aab, ab, a123b,
abc
(2) ?
단일 문자
a?b:
aab
ab, a12b, abc
(3) []
은 지정된 범위 내의 단일 문자와 일치합니다.
[0-9]
[a-z]: 문자는 대소문자를 구분하지 않습니다
(4) [^]
지정된 범위 밖의 단일 문자와 일치합니다.
[^ 0-9]
특수 문자 집합:
[:숫자:]: 0-9
[:lower:]: 모든 소문자
[ :upper:]: 모든 대문자
[:alpha:]: 모든 대문자 및 소문자
[: alnum :] : 모든 숫자 또는 문자 [: space :] :
[: punct :] : 구두점 기호
3, bash 바로 가기 키
Ctrl+l: 화면 지우기,
Ctrl+a: 명령 시작 부분으로 이동
Ctrl+e: 명령 끝 부분으로 이동;
Ctrl+c: 명령 실행 취소
Ctrl+u: 명령줄 시작 부분 삭제 Guangcun 위치의 모든 콘텐츠; 커서부터 명령줄 끝까지의 모든 내용을 삭제합니다.
4. Bash의 I/O 리디렉션 및 파이프
프로그램: 명령 + 데이터
데이터 읽기: 입력
출력 데이터: Output
열린 파일에는 fd: 파일 설명자(파일 설명자)
표준 입력: keyborad, 0
표준 출력: 모니터, 1
이 있습니다. 표준 오류 출력: 모니터, 2
I/O 리디렉션: 표준 위치 변경
출력 리디렉션: COMMAND > NEW_POS, COMMAND >> 콘텐츠가 지워집니다.
>: 추가 리디렉션, 신규 콘텐츠는 대상 파일의 끝에 추가됩니다.
# set -C: 기존 파일에 콘텐츠를 덮어쓰는 것을 금지합니다.
강제 재정의: >|
# set +C; :
2>: 리디렉션 오류 출력 데이터 스트림 덮어쓰기
2>: 리디렉션 오류 출력 데이터 스트림 추가
표준 출력과 오류 출력은 각각 다른 위치로 전달됩니다. :
COMMAND > /path/to/file.out 2> /path/to/error.out
리디렉션을 위해 표준 출력과 오류 출력을 동일한 데이터 스트림으로 병합:
>: 리디렉션 재정의
&>>: 리디렉션 추가
COMMAND > /path/to /file.out 2>>> file.out 2>> &1
입력 리디렉션: <
tr 명령: 문자 변환 또는 삭제
tr [OPTION]... SET1 [SET2]
여기 문서: <<
# cat << EOF
# cat > ; /path/to/somefile << EOF
COMMAND1 | COMMAND3 |...
참고: 마지막 명령은 현재 쉘 프로세스에 있습니다.
tee 명령:
tee OPTION]... [FILE]...
텍스트 처리 도구: wc, cut, sort, uniq
wc 명령:
wc [OPTION]... [FILE]. ..
-l: 라인
-w: 단어
-c: 문자
cut 명령:
cut [OPTION]... [FILE]. ..
-d DELIMITER: 구분 기호 지정
-f FILEDS:
#: 번호 fields
#,#[,#]: 개별 다중 필드(예: 1, 3,6
#-#: 연속된 다중 필드(예: 1-6
혼합: 1-3,7
--output-delimiter=STRING
sort 명령:
sort [OPTION]... [FILE]...
- f: 대소문자 무시
-r: 역순
-t DELIMITER: 필드 구분 기호
-k #: 지정된 필드를 기준으로 정렬
-n: 숫자 크기로 정렬 정렬
-u: uniq, 정렬 후 중복 제거
uniq 명령:
uniq [OPTION]... [FILE]...
-c: 각 줄을 표시합니다. 반복되는 횟수
-d: 반복되는 줄만 표시합니다. : 반복되지 않는 줄만 표시합니다.
참고: 연속적이고 동일한 사각형은 중복됩니다.
사용자 및 그룹 관리
자원 할당:
인증: 인증
승인: 승인
회계: 감사
Audition
토큰, ID(사용자 이름/비밀번호)
Linux 사용자: 사용자 이름/UID
관리자: root, 0
일반 사용자: 1-65535
시스템 사용자: 1-499, 1-999
데몬 프로세스에 권한을 할당하여 리소스를 얻습니다.
로그인 사용자: 500+, 1000+
대화형 로그인
Linux 그룹: 그룹 이름/GID
관리자 그룹: 루트, 0
일반 그룹:
시스템 그룹: 1-499, 1-999
일반 그룹: 500+, 1000+
Linux 보안 컨텍스트:
실행 프로그램: process
다음 계정으로 실행 프로세스 개시자:
root: cat
tom: cat
프로세스가 액세스할 수 있는 모든 리소스의 권한은 프로세스 개시자의 신원에 따라 달라집니다.
Linux 그룹 카테고리:
사용자의 기본 그룹(기본 그룹):
그룹 이름은 사용자 이름과 동일하며 사용자는 한 명만 포함됩니다. 비공개 그룹
추가 사용자 그룹 (추가 그룹):
Linux 사용자 및 그룹 관련 구성 파일:
/etc/passwd: 사용자 및 해당 속성 정보(이름, UID, 기본 그룹 ID 등)
/etc/group: 그룹 및 해당 속성 정보
/etc/shadow: 사용자 비밀번호 및 관련 속성
/etc/gshadow: 그룹 비밀번호 및 관련 속성
/ etc/passwd:
이름:암호:UID:GID:GECOS:디렉토리:shell
사용자 이름:암호:UID:GID:GECOS:홈 디렉터리:기본 쉘
/etc /group:
group_name:password:GID:user_list
그룹 이름:그룹 비밀번호:GID:현재 그룹이 추가 그룹인 사용자 목록(구분 기호는 쉼표)
/etc/ Shadow
사용자 이름: 암호화된 비밀번호: 마지막 비밀번호 변경 날짜: 최소 비밀번호 사용 기간: 최대 비밀번호 사용 기간: 비밀번호 경고 기간: 비밀번호 금지 기간: 계정 만료 날짜: 예약 필드
암호화 메커니즘:
암호화: 일반 텍스트 --> 암호 텍스트
해독: 암호 텍스트 --> 일반 텍스트
단방향 암호화: 데이터 지문 추출
md5: 메시지 다이제스트 128bits
sha1: 보안 해시 알고리즘, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
눈사태 효과: 작음 초기 조건이 변경되면 결과가 크게 변경됩니다.
고정 길이 출력:
암호 복잡성 전략:
1. 최소 3가지 유형의 숫자, 대문자, 소문자를 사용하세요.
2. 충분히 긴
3.
4. 최근에 사용한 비밀번호를 사용하지 마세요.
사용자 생성: useradd
useradd [옵션] LOGIN
-u UID: [UID_MIN, UID_MAX], /etc/login.defs
-g에 정의됨 GID: 사용자가 속한 기본 그룹을 나타내며 그룹 이름 또는 GID일 수 있습니다.
-c " COMMENT": 사용자의 설명 정보
-d /PATH/TO/HOME_DIR: 지정된 경로를 홈 디렉터리로 사용합니다.
-s SHELL: 사용자의 기본 쉘 프로그램을 지정합니다. 사용 가능한 목록은 /etc/ 셸 파일에 있습니다.
-G GROUP1[,GROUP2,...[,GROUPN]]]: 사용자에 대한 추가 그룹을 지정해야 합니다.
-r: 시스템 사용자 생성
CentOS 6: ID<500
CentOS 7: ID<1000
기본값 설정: /etc/default/useradd 파일
useradd - 디
-s SHELL
그룹 생성: groupadd
groupadd [OPTION]... group_name
-g GID: GID 번호를 지정합니다. [GID_MIN, GID_MAX ]
-R : 시스템 그룹 6 : ID & LT; option] ... [user]
-U: UID:-G: GID
-G: Groups
-N: Name
사용자 전환 또는 명령 실행 다른 사용자로: SU
su [options...] [-] [user [args...]]
사용자 전환 방법:
su 사용자 이름: 비로그인 전환 즉, 대상은 사용자 구성 파일을 읽지 않습니다.
su - UserName: 로그인 전환, 대상 사용자의 구성 파일을 읽습니다.
루트에는 비밀번호가 필요하지 않습니다. 루트가 아닌 사용자로 전환 비밀번호 필요
다른 ID로 명령 실행:
su [-] UserName -c 'COMMAND'
옵션:
-l: "su -l UserName"은 "SU-Username"에서 동일합니다.
사용자 속성 수정: usermod
usermod [옵션] login
- uid: 새 uid
-g gID: 새 기본 그룹
-G GROUP1[,GROUP2,...[,GROUPN]]]: 새로 추가된 그룹, 원래 추가된 그룹을 덮어쓰게 됩니다. 추가를 의미하는 -a 옵션도 사용해야 합니다.
-s SHELL: 새로운 기본 SHELL
-c 'COMMENT': 새로운 주석 정보
-d HOME: 새로운 홈 디렉토리 ; 원래 홈 디렉토리의 파일은 동기화되지 않습니다. 이동하려면 -m 옵션을 동시에 사용하세요.
-L: 지정된 사용자 잠금
-U: 지정된 사용자 잠금 해제
-e YYYY-MM-DD: 사용자 계정 만료 날짜 지정
-f INACTIVE: 비활성 설정;
사용자에게 비밀번호 추가: passwd
passwd [옵션] UserName: 지정된 사용자의 비밀번호 수정, 루트 사용자 권한만 수정
passwd: 자신의 비밀번호 수정;
Common 옵션 :
-l : 지정된 사용자 잠금
-u : 지정된 사용자 잠금 해제
-n Mindays : 최소 사용 기간을 지정
-x maxdays : 최대 사용 기간
-w warningdays: 경고 시작 전 일수
-i inactivedays: 비활성 기간
--stdin: 표준 입력에서 사용자 비밀번호 수신; echo "PASSWORD" | passwd --stdin USERNAME
참고: /dev/null, bit buckets /dev/zero,
사용자 삭제: userdel userdel [OPTION].. login
-r: 사용자 홈 디렉토리 삭제
그룹 속성 수정: groupmodgroupmod [OPTION]... group
-n group_name : 새 이름
-g GID: 새 GID;
그룹 삭제: groupdelgroupdel GROUP
그룹 비밀번호: gpasswd gpasswd [옵션] 그룹
-a user: 지정된 그룹에 사용자를 추가합니다. -d user: 현재 그룹을 그룹 이름으로 사용하여 사용자 user의 추가 그룹을 삭제합니다.
-A user1,user2, ...: 관리 권한이 있는 사용자 목록 설정 newgrp 명령: 기본 그룹을 일시적으로 전환합니다.
사용자가 이 그룹에 속하지 않으면 그룹 비밀번호가 필요합니다.
사용자 속성 수정: chage
chage [OPTION]... LOGIN
-d LAST_DAY
-E, --expiredate EXPIRE_DATE
-I, --inactive INACTIVE
-m, --mindays MIN_DAYS
-M, --maxdays MAX_DAYS
-W, --warndays WARN_DAYS
기타 명령: chfn, chsh, Finger
명령 요약 :useradd, groupadd, su, id, usermod, userdel, groupmod, groupdel, passwd, newgrp, pwck, gpasswd, chage, chsh, chfn, Finger권한 관리:
파일 권한은 주로 세 가지 유형의 개체에 대한 것입니다. 정의: owner: owner, u
group: group, g
other, o
각 파일은 세 가지 유형을 정의합니다. 방문자 유형별 권한 유형:
r: 읽기 가능
w: 쓰기 가능
x: eXcutable
파일:
r: 파일 보기 도구를 사용할 수 있습니다. 에
w: 해당 콘텐츠를 수정할 수 있습니다.
x: 이 파일을 커널에 제출하여 프로세스로 시작할 수 있습니다. ls를 사용하여 이 디렉터리의 파일 목록을 볼 수 있습니다.
w: 이 디렉터리에서 파일을 생성하거나 삭제할 수 있습니다.
x: 이 디렉터리의 파일 목록을 보려면 ls -l을 사용할 수 있습니다. , 그리고 이 디렉토리에 들어가려면 cd를 사용할 수 있습니다.
r-- 100 4 r-x 101 5 rw- 110 6
rwx 111 7
예:
640: rw-r----
rwxr- xr-x: 755
파일 권한 수정: chmod
chmod [옵션]... OCTAL-MODE FILE...
-R: 재귀적으로 권한 수정
chmod [옵션]. .. . MODE[,MODE]... FILE...
MODE:
사용자 유형의 모든 권한 수정:
u=
g=
o=
ug=
a=
u=,g=
사용자 유형의 하나 이상의 권한 수정
u+
유-
chmod [OPTION]... --reference=RFILE FILE...
RFILE 파일의 권한을 참조하여 FILE을 RFILE과 동일하게 수정합니다.
파일 소유자 및 소유자 그룹 수정:
루트만 사용할 수 있습니다.
파일 소유자 수정: chown
chown [OPTION]... [OWNER][:[GROUP] ] FILE...
사용법:
OWNER
OWNER:GROUP
:GROUP
참고: 콜론
명령에서 바꿀 수 있습니다.
-r : recursive
chown [옵션] ...-reference = rfile 파일 ...
파일 그룹의 수정 : chgrp
chchgrp [옵션] ... GROUP FILE.. .
rChgrp [옵션] ...-Reference = rfile file ...
-R
파일 또는 마스크 코드 디렉터리: UMASK
파일: 666-umask
참고: 특정 유형의 사용자에 대한 권한 감소 결과 x 권한이 있는 경우 해당 권한은 +1
DIR: 777-umask
UMASK : VIEW ask
UMASK #: 설정
명령 요약 : CHMOD, Chown, CHGRP, UMASK
File Management, 사용자 관리, 권한 관리, Bash의 기본 기능 파일 관리: cp, mv, rm
사용자 관리:
useradd, usermod, chsh, chfn, chage, userdel
groupad, groupmod, groupdel
passwd, gpasswd, pwck
id , Finger, who, whoami, w
su
설정 파일 : /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow
권한 관리 :
권한: 모드(rwxrwxrwx), 소유권
chmod
chown
chgrp
-R, --reference=RFILE
파일: 666-umask
DIR: 777-umask
umask [UMASK]
bash 기본 기능:
명령줄 확장: ~, {}
명령 별칭: alias/unalias
명령 기록: 기록
명령 및 경로 완성: $PATH
glob: *, ?, [], [^]
단축 키: Ctrl+{a,e,l, c ,u,k}
명령 해시: hash
bash의 기본 기능(3)
1 프로그래밍 환경을 제공합니다
프로그램: 지침 + 데이터
절차적 프로그래밍 스타일:
절차적: 명령어 중심, 데이터는 명령어 제공
목표: 데이터 중심, 명령어는 데이터 제공
셸 프로그램: 프로그래밍 능력, 해석 및 실행 제공
프로그램 실행 방법:
컴퓨터: 바이너리 명령어 실행
프로그래밍 언어:
하위 수준: 어셈블리
고급:
컴파일 : 고급 언어-->컴파일러-->객체 코드
C, C++, java
설명: 고급 언어-->인터프리터-->기계 코드
shell, perl, python
절차적 프로그래밍:
순차 실행
루프 실행
선택된 실행
셸 프로그래밍: 절차적, 해석된 실행
프로그래밍 기본 구조 언어:
데이터 저장: 변수, 배열
표현식
명령문
셸 스크립트: 텍스트 파일
shebang:
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
매직 넘버: 매직 넘버
스크립트 실행:
1. 실행 권한을 부여하고 특정 파일 경로를 통해 파일 실행을 지정합니다.
2. 인터프리터를 직접 실행하고 스크립트를 인터프리터 프로그램의 매개변수로 실행합니다.
명명된 메모리 공간;
데이터 저장 방법: ASCII
문자: 110: 24
값: 110 --> 8
Integer
부동소수점 유형
변수 유형
기능:
1. 참여 작업;
종류 :
Character
값:
Integer
Floating
프로그래밍 프로그래밍 언어:
Str ong 유형:
약한 유형: bash
저장될 모든 데이터를 문자로 처리합니다.
논리 연산:
true, false
1 , 0
그리고 :
1 && 1 = 1
1 && 0 = 0
+ 0 || 1 = 1
0 || 0 = 0
아님:
! 1 = 0
!
첫 번째는 0이고 결과는 0이어야 합니다.
첫 번째는 1이고 두 번째는 작업에 참여해야 합니다.
첫 번째는 1입니다. 1이어야 합니다.
첫 번째는 0이고 두 번째는 작업에 참여해야 합니다.
grep:
Linux의 텍스트 처리 삼총사
grep: 텍스트 필터링(모드) : 패턴) 도구;
grep, egrep
sed: 스트림 편집기, 텍스트 편집 도구
awk: Linux에서의 gawk 구현, 텍스트 보고서 생성기
: 전역 검색 정규 표현식 및 줄 인쇄
기능: 텍스트 검색 도구, 사용자가 지정한 "패턴"에 따라 대상 텍스트를 한 줄씩 확인합니다.
패턴: 정규식 문자 및 텍스트 문자로 작성된 필터 조건
REGEXP: 특수 문자 및 텍스트 문자 유형으로 작성된 패턴. 이들 중 일부는 문자의 리터럴 의미를 나타내지 않지만 제어 또는 와일드카드 기능을 나타냅니다.
두 가지 범주로 구분:
기본 정규 표현식: BRE
확장 정규 표현식: ERE
grep -E, egrep
정규 표현식 엔진
grep [OPTIONS] PATTERN [FILE...]
옵션:
--color=auto: 일치하는 텍스트에 색상을 지정합니다.
-v: 일치할 수 있는 행이 아닌 항목을 표시합니다. 패턴;
-i: 대소문자 무시;
-o: 일치하는 문자열만 표시
-q: 자동 모드, 정보가 출력되지 않습니다. # 줄 뒤
-B #: 앞, # 줄 앞
-C #: 컨텍스트, # 줄 앞과 뒤
-E: ERE 사용
Basic; 정규식 메타 문자:
문자 일치:
.: 단일 문자와 일치합니다.
[]: 지정된 범위의 단일 문자와 일치
[^]: 외부의 단일 문자와 일치 지정된 범위
[:digit:], [:lower:], [:upper:], [:alpha:], [:alnum:], [: punct:], [:space:]
일치 횟수: 지정할 문자 뒤에 사용되며, 이전 문자가 나타날 횟수를 지정하는 데 사용됩니다.
*: 이전 문자와 임의의 횟수 일치;
예: grep "x*y"
abxy
xay
xxxxxxy
탐욕 모드
.*: 모든 길이의 문자 ;
?: 선행 문자와 0회 또는 1회 일치합니다. 즉, 선행 문자는 선택 사항입니다.
+: 선행 문자와 최소 1회 일치합니다.
{m}: 이전 문자를 m번 일치합니다.
{m,n}: 이전 문자를 최소 m번, 최대 n번 일치합니다.
{0,n}: 이전 문자 최대 n회
{m,}: 이전 문자를 최소 m회 일치합니다.
위치 고정:
^: 줄 앵커의 시작 부분에 사용됩니다.
$: 줄 끝 앵커; 패턴의 가장 오른쪽에 사용됨
^PATTERN$: 전체 줄과 일치하는 패턴에 사용됨; line;
^[ [:space:]]*$
< 또는 b: 단어 패턴의 왼쪽에 사용됨
> : 단어 끝 고정; 단어 패턴에 사용됨 오른쪽
그룹화:
(): 하나 이상의 문자를 묶습니다.
(xy)*ab
참고: 그룹화 괄호의 패턴과 일치하는 콘텐츠는 정규식 엔진에 의해 내부 변수에 기록됩니다. is: 1, 2, 3, ...
1: 왼쪽부터 시작하여 첫 번째 왼쪽 괄호와 일치하는 오른쪽 괄호 사이의 패턴과 일치하는 문자
(ab+(xy)*) :
1: ab+(xy)*
2: xy
역참조: 이전 그룹화 괄호의 패턴과 일치하는 문자를 나타냅니다. (패턴 자체는 아님)
사용자 루트가 존재하고 해당 기본 쉘 프로그램이 표시되는 경우
# id root &> /dev/null && grep "^root>" /etc/passwd |
/etc/passwd에서 두 자리 또는 세 자리 숫자를 알아보세요.
# grep "<[0-9]{2,3}>" /etc/passwd
show /etc /rc .d/rc.sysinit 파일에서 하나 이상의 공백 문자로 시작하고 뒤에 공백이 아닌 문자가 오는 줄
# grep "^[[:space:]]+[^[:space: ]]" /etc/grub2.cfg
"netstat -tan" 명령의 결과에서 'LISTEN' 뒤에 0, 1개 이상의 공백 문자가 오는 줄을 찾습니다.
# netstat -tan | grep "LISTEN[[:space:]]*$"
사용자 bash, testbash, basher 및 nologin을 추가합니다(해당 쉘은 /sbin/nologin입니다). etc/passwd 파일 이름 라인
grep "^([:alnum:]]+>).*1$" /etc/passwd
스크립트 작성 다음 기능
user1이 존재하면 그 존재가 표시되고, 그렇지 않으면 추가됩니다.
추가된 사용자의 ID 번호 및 기타 정보가 표시됩니다.
#!/bin/ bash
id user1 &> /dev/null && echo "user1이 존재합니다." || useradd user1
egrep 및 확장 정규 표현식
egrep
egrep [OPTIONS] PATTERN [ FILE...]
확장 정규 표현식용 메타 문자:
문자 일치:
.
[]
[^]
hartes :
*
? : 0 또는 1 회; ;
{m,n} : 최소 m, 최대 n 번;
앵커:
^
$
<, b
>, b
그룹:
()
돌아가기 참조: 1, 2, ...
또는:
a|b
C|cat: C 또는 cat
1. 현재 시스템 루트, centos 또는 The를 표시합니다. user1 사용자의 기본 쉘 및 UID
# grep -E '^(root|centos|user1)>' /etc/passwd | cut -d: -f1,3,7
2, /etc/rc.d/init.d/functions 파일(centos6)에서 뒤에 괄호가 오는 단어가 포함된 줄을 찾습니다.
# grep -E -o "^[_[:alpha: ]] +()" /etc/rc.d/init.d/functions
3. echo를 사용하여 절대 경로를 출력하고 egrep을 사용하여 기본 이름을 추출합니다.
# echo " /mnt/sdc" | grep -E -o "[^/]+/?$" | cut -d"/" -f1
추가: egrep을 사용하여 경로의 디렉터리 이름을 가져옵니다. dirname 명령의 결과;
4. ifconfig 명령 결과에서 1-255 사이의 값을 찾습니다.
5.
FGREP : 정규 표현식 표현식 검색을 지원하지 않습니다.
문자 유형
숫자 유형:
정수 유형
부동 소수점 유형
강한 유형 : 변수 정의 시 타입을 지정해야 하며, 참여하는 작업은 유형 요구 사항을 충족해야 합니다. 선언되지 않은 변수를 호출하면 오류가 발생합니다.
약한 유형: 유형을 지정할 필요가 없으며 기본값은 문자 유형입니다. 변수는 미리 정의하지 않고 직접 호출할 수 있습니다.
bash 변수 유형:
변수의 유효 범위와 같은 표준에 따름:
Local 변수: 유효 범위는 현재 셸 프로세스입니다. 현재 셸의 하위 셸 프로세스를 포함하여 다른 셸 프로세스의 경우 유효하지 않은 환경 변수: 유효 범위는 현재 셸 프로세스와 그 하위입니다.
로컬 변수: 유효 범위는 현재 셸 프로세스의 특정 코드 조각(일반적으로 함수)입니다.
위치 변수: $1, $2, ...는 스크립트가 스크립트 코드의 명령줄을 통해 전달된 매개변수
특수 변수: $?, $0, $*, $@, $#
로컬 변수:
변수 할당: 이름 ='value'
참조를 사용할 수 있습니다:
value:
(1) 직접 문자열일 수 있습니다. name="username "
(2) 변수 참조: name= "$username"
(3) 명령 참조: name=`COMMAND`, name=$(COMMAND)
변수 참조: ${name} , $name
"": 약한 참조, 변수 참조는 변수 값으로 대체됩니다.
'': 강력한 참조, 변수 참조는 변수 값으로 대체되지 않지만 원래 문자는 유지됩니다.
모든 정의된 변수 표시
set
파괴 변수:
unset name
환경 변수:
변수 선언 및 할당:
export name=VALUE
declare -x name=VALUE
변수 참조: $name, ${name}
모든 환경 변수 표시:
export
env
printenv
destroy:
unset name
bash에는 많은 내장 기능이 있습니다. 환경 변수 : PATH, SHELL, UID, HISTSIZE, HOME , PWD, OLD, HISTFILE, PS1
변수 명명 규칙:
1. if, for;와 같은 예약어는 사용할 수 없습니다. 밑줄을 그으며 숫자로 시작할 수 없습니다.
읽기 전용 변수:
declare -r name
위치 변수:
스크립트 코드의 명령줄을 통해 스크립트에 전달된 매개변수를 호출합니다.
$1, $2, ...: 첫 번째, 두 번째 및 기타 매개변수 호출에 해당합니다.
shift [n]
$0: 명령 자체
$*: 모든 매개변수가 스크립트에 전달됨;
$#: 스크립트에 전달된 매개변수 수
예: 주어진 파일의 줄 수 결정
#!/bin/bash
linecount="$( wc -l $1| cut -d' ' -f1)"
echo "$1에는 $linecount 줄이 있습니다."
bash 구성 파일:
효과에 따라 구분 범위에는 두 가지 범주가 있습니다.
전역 구성:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
개인 구성 :
~/.bash_profile
~/.bashrc
기능별로 구분하면 두 가지 범주가 있습니다.
프로필 클래스: 대화형 로그인 셸에 대한 구성 제공
글로벌 : /etc/profile, /etc/profile.d/*.sh
Personal: ~/.bash_profile
Function:
(1) 환경 변수를 정의하는 데 사용됩니다. 2) 명령 또는 스크립트 실행
bashrc 클래스: 비대화형 로그인 셸에 대한 구성 제공
글로벌: /etc/bashrc
개인: ~/.bashrc
기능:
(1) 명령 별칭 정의;
(2) 지역 변수 정의
쉘 로그인:
다음을 통해 직접 로그인 터미널 계정 비밀번호를 입력하여
사용자를 전환하려면 "su - UserName" 또는 "su -l UserName"을 사용하세요.
/etc/profile --> --> ~/.bash_profile - -> ~/.bashrc --> /etc/bashrc
비대화형 로그인:
su UserName
터미널 인터페이스
스크립트 실행
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh (1) 셸 프로세스를 다시 시작합니다.
(2) 소스 또는 .
질문:
1. 모든 사용자에게 효과적인 별칭을 정의하시겠습니까?
2. 사용자의 PATH 환경 변수 값에 /usr/local/apache2/bin
Administrator와 같은 경로가 하나 더 추가되도록 하시겠습니까?
모두요?
bash의 산술 연산
+, -, *, /, %, **
산술 연산 구현:
(1) let var=산술 표현식
(2) var=$[산술 표현식]
(3) var=$((산술 표현식))
(4) var=$(expr arg1 arg2 arg3 ... )
일부 시나리오에서는 곱셈 기호를 이스케이프해야 합니다.
bash에는 내장된 난수 생성기가 있습니다: $RANDOM
향상된 할당:
+= , -=, *=, /=, %=
let varOPERvalue
예: let count+=1
증가 및 감소:
let var+=1
렛 var++
let var-=1
let var--
/etc/passwd 파일에서 10번째 사용자와 20번째 사용자의 ID를 계산하고;
#!/bin/bash
userid1=$(head -n 10 /etc/passwd | tail -n 1 | cut -d: -f3)
userid2=$(head -n 20 / etc/passwd | tail -n 1 | 컷 -d: -f3)
useridsum=$[$userid1+$userid2]
echo "uid 합계: $useridsum "
두 개의 파일 경로를 스크립트에 매개변수로 전달하고 두 파일의 모든 빈 줄의 합을 계산합니다.
#!/bin/bash
spaceline1=$ (grep "^[[ :space:]]*$" $1 |
wc -l)
spaceline2=$(grep "^[[:space:]]*$" $2 |
wc -l )
echo "공백선의 합: $[$spaceline1+$spaceline2]"
/etc, /var, /usr 디렉토리에 있는 첫 번째 수준 하위 디렉토리 및 파일 수에 대한 통계
조건부 테스트:
특정 요구 사항이 충족되는지 확인하려면 테스트 메커니즘으로 구현해야 합니다.
참고: 완료하려면 테스트 명령의 지원을 받아야 합니다. 테스트 프로세스:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
참고: EXPRESSION이 앞에 오고 뒤에 와야 합니다.
bash 테스트 유형:
수치 테스트:
-gt:
-ge: 보다 크거나 같은지;
-eq: 같음 여부;
-ne: 같지 않음;
-lt:
-le: 같음 여부;
문자열 테스트:
==:
과 같음;
>: 보다 큰지 여부;
<: 보다 작은지 여부;
!=: 같지 않은지 여부; 왼쪽은 오른쪽의 PATTERN과 일치할 수 있습니다.
참고: 이 표현식은 일반적으로 [[ ]]에서 사용됩니다.
-z "STRING": 문자열이 비어 있는지 테스트합니다.
-n "STRING": 문자열이 비어 있지 않으면 true, 비어 있으면 false입니다. ;
참고: 문자열을 비교할 때 사용되는 모든 피연산자는 따옴표를 사용해야 합니다.
파일 테스트
bash 사용자 정의 종료 상태 코드
exit [n] 맞춤 이탈 상태 코드;
참고: 스크립트가 종료 명령을 만나면 즉시 종료됩니다. 종료 종료 상태는 종료 명령 뒤의 숫자에 따라 다릅니다. 스크립트에 대해 지정된 전체 스크립트의 종료 상태 코드는 스크립트에서 실행된 마지막 명령의 상태 코드에 따라 다릅니다. ;
매개변수로 파일 경로를 허용합니다.
매개변수 개수 1보다 작으면 "최소한 하나의 매개변수를 지정해야 합니다"라는 메시지가 표시되고 즉시 종료됩니다.
매개변수 수가 1보다 작으면 가리키는 파일의 빈 줄 수를 표시합니다. 첫 번째 매개변수
egrep, 확장 정규식, 변수, 구성 파일, 산술 연산, 조건 테스트, 종료 상태 코드
ERE:
문자 일치: ., [], [ ^]
일치 수: *, ?, +, {m,n}
위치 앵커링: ^, $, <, >, b
그룹화: (), 1, 2, ..
또는: a|b
변수:
지역 변수
환경 변수
지역 변수
위치변수
특별 변수
예약어를 사용할 수 없습니다.
명령: unset, 내보내기, 선언 -x, set, env, printenv, readonly
프로필:
프로필, bashrc
산술 연산:
let, $[], $(()), expr
+= , -=, *=, /=
+ +, --
조건부 테스트:
test, [], []]
세 가지 유형 :
값: -lt, -le, -gt, -ge, -ne, -eq
String: ==, !=, >, <, =~, -z, - n
File
사용자 정의 종료 코드 : exit [n]
[ $# -lt 1 ] && echo "적어도 하나의 인수." && 종료 1
vim editor
소개
vi: 비주얼 인터페이스, 텍스트 편집기
텍스트: ASCII, Unicode
텍스트 편집 유형:
라인 편집기: sed
전체 화면 편집기: nano, vi
VIM - Vi IMproved
vim 사용: 모달 편집
기본 모드:
편집 모드, 명령 모드
입력 모드
마지막 줄 모드:
내장 명령줄 인터페이스
파일 열기:
# vim [옵션] .. FILE...
+#: 파일을 연 후 # 줄의 시작 부분에 직접 커서를 놓습니다.
+/PATTERN: 파일을 연 후 첫 번째 줄에 커서를 직접 놓습니다. PATTERN과 일치하는 줄
모드 변환:
편집 모드 --> 입력 모드
i: 삽입, 커서 위치에 입력; a: 추가, 커서 위치 뒤에 입력
o: 현재 커서 위치 아래에 새 줄 열기
I: 현재 커서 위치의 시작 부분에 입력; 현재 커서 위치 아래에 새 줄 줄 끝을 입력합니다.
c
C
입력 모드 --> 편집 모드
파일을 닫습니다.
:q 종료
:wq 저장하고 종료합니다.
:x 저장하고 종료
:w /PATH + j, k, l
h: 왼쪽
l: 오른쪽
j: 아래쪽
k: 위쪽
#COMMAND: #으로 지정된 문자 수로 점프;
단어 사이 점프:
w: 다음 단어의 시작
e: 끝 현재 또는 다음 단어
b: 현재 또는 이전 단어의 시작
#COMMAND: 한 번에 점프할 단어 수는 #
Jump로 지정됩니다. 줄의 시작과 끝:
^: 줄의 시작 부분에 있는 공백이 아닌 첫 번째 문자로 이동합니다.
0: 줄의 시작 부분으로 이동합니다.
$: 이동; 줄 끝;
줄 사이 이동:
#G: #으로 지정된 줄로 이동;
G: 마지막 줄; 첫 번째 줄;
문장 사이 이동:
)
(
문단 사이 이동:
}
{
vim 편집 명령:
문자 편집:
x: 커서 위치의 문자 삭제
# x: 커서 위치에서 처음부터 #자 삭제
xp : 커서 위치의 문자와 그 뒤에 있는 문자의 위치를 바꿉니다.
교체 명령(r, 바꾸기)
r: 커서 위치의 문자 바꾸기
Delete 명령:
d: 삭제 명령. 이 명령은 커서와 결합하여 문자를 이동하여 범위 삭제를 수행할 수 있습니다. $:
d^:
d0:
dw
de
db
#COMMAND
dd: 삭제
#dd: 여러 줄 삭제
Paste 명령(p, put, 붙여넣기):
p: 버퍼가 전체 줄을 저장하는 경우 현재 커서가 있는 줄의 맨 아래, 그렇지 않으면 현재 커서 위치의 뒤쪽에 붙여넣습니다.
P: 버퍼에 전체 줄이 저장되어 있으면 현재 커서가 있는 줄 위에 붙여넣습니다.
복사 명령(y, yank):
y: 복사, 작업 동작은 d 명령과 유사합니다.
y0
y^
ye
yw
yb
#COMMAND
yy: 행 복사
#yy: 여러 행 복사
명령 변경(c, 변경)
c:
입력 모드 수정
c$
ㄷ^ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ cc: 삭제하고 새로 입력
#cc:
기타 편집 작업
시각화 모드:
v: 문자로 선택
V: 줄로 선택
참고: 종종 편집과 결합됩니다.
명령; d, c, y
이전 편집 취소:
u(undo): 이전 작업 취소
#u: 지정된 작업 수 취소; 이전 실행 취소 실행 취소:
Ctrl+r
이전 편집 작업 반복:
.
스크롤 작업:
Ctr l+f: 파일 끝으로 스크롤 ;
Ctrl+b: 한 화면을 파일의 시작 부분으로 돌립니다.
Ctrl+d: 화면의 절반을 파일의 끝으로 돌립니다.
vim 모드의 마지막 줄:
내장 명령줄 인터페이스
(1) 주소 구분
:start_pos, end_pos
#: 특정 라인 #, 예를 들어 2는 라인 2를 의미합니다.
#: 왼쪽에서 #은 라인의 시작을 나타내고 오른쪽으로 #은 라인의 끝을 나타냅니다.
#,+#: 왼쪽에서 #은 줄 시작을 나타내고 오른쪽 #은 행 수를 나타냅니다.
.: 현재 행
$: 마지막 행
.,$- 1
%: 1,$
/pat1/,/pat2/에 해당하는 전체 텍스트:
pat1 패턴과 일치하는 첫 번째 줄부터 시작하여 pat2와 일치하는 첫 번째 줄까지 일치하는 줄
#,/pat/
/pat/,$
사용법:
뒤에 편집 명령
d
y
w /PATH/TO/SOMEWHERE: 범위의 행을 지정된 파일에 저장합니다.
r /PATH/FROM/SOMEFILE: 지정된 위치에 지정된 파일의 모든 내용을 삽입합니다.
(2) 검색
/PATTERN: 현재 커서 위치부터 파일 끝까지 검색합니다.
?PATTERN: 현재 커서 위치부터 파일 시작 부분까지 검색합니다. : 명령과 동일 방향
N: 명령의 반대 방향;
(3) 찾기 및 바꾸기
s: 마지막 줄 모드에서 찾기 및 바꾸기 작업을 완료합니다. s/찾을 내용/다음으로 대체/수정자
찾을 내용: 패턴을 사용할 수 있음
다음으로 대체: 패턴을 사용할 수 없지만 1, 2, ...와 같은 역참조 기호를 사용할 수 있음; 또한 "&"를 사용하여 이전 검색에서 찾은 전체 내용을 참조할 수 있습니다.
i: 대소문자 무시
g: 기본적으로 전역 교체; 각 줄은 발생 횟수로 대체됩니다.
s@@
s###
과 같은 다른 문자로 대체할 수 있습니다. 1, /etc /grub2.cfg를 /tmp/ 디렉터리에 복사하고 찾기 및 바꾸기 명령을 사용하여 /tmp/grub2.cfg 파일의 줄 시작 부분에 있는 공백 문자를 삭제합니다.
%s/ ^[[:space:]]+//g
2. /etc/rc.d/init.d/functions 파일을 /tmp 디렉터리에 복사하고 찾기 및 바꾸기 명령을 사용하여 추가합니다. 공백 문자로 시작하는 /tmp/functions의 각 줄 시작 부분에 #이 있습니다. No.; 파일 모드:
vim FILE1 FILE2 FILE3...
:다음 다음
:이전 이전
:첫 번째 첫 번째
:마지막 마지막
: wall 모두 저장
:qall 모두 종료
창 분할 모드:
vim -o|-O FILE1 FILE2 ...
-o: 가로 분할
- O: 세로 분할
창 전환: Ctrl+w, 화살표
단일 파일 창 분할:
Ctrl+w,s: 분할, 가로 분할
Ctrl+w ,v: 수직, 수직 분할
사용자 정의 vim 작업 기능:
구성 파일: 영구적으로 유효함
전역: /etc/vimrc
개인: ~/.vimrc
마지막 줄: 현재 vim 프로세스가 유효합니다.
(1) 줄 번호
Display: set number, 축약형 set nu
Cancel 표시: set nonumber, 축약형 set nonu
(2) 대괄호 매칭
매칭: set showmatch, 줄여서 set sm
cancel: set nosm
(3) 자동 들여쓰기
활성화: set ai
비활성화: set noai
(4) 강조 검색
활성화: set hlsearch
비활성화: nohlsearch
설정
(5) 구문 강조
Enable: 구문 on
Disable: 구문 off
(6) 대소문자 무시
Enable: ic
설정
하지 마세요 무시: noic 설정
도움말 보기:
:help
:help subject
bash 조건 테스트:
테스트 방법:
테스트 EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
테스트 표현식 카테고리:
숫자 비교
문자열 테스트
파일 테스트 :
존재 테스트
-a FILE
-e FILE: 파일 존재 테스트, 존재하면 true, 그렇지 않으면 false
존재 및 카테고리 테스트
- b FILE : 존재 여부, 블록 장치 파일 여부,
-c FILE: 존재 여부, 문자 장치 파일 여부,
-d FILE: 존재 여부, 디렉터리 파일인지 여부;
-f FILE: 존재하고 일반 파일인지 여부
-h FILE 또는 -L FILE: 존재하고 심볼릭 링크 파일인지 여부
-p FILE: 존재하고 파일인지 여부
-S FILE: 존재하고 소켓 파일인지 여부
파일 권한 테스트:
-r FILE: 존재하고 읽을 수 있는지 여부 : 존재하고 쓰기 가능한지
-x FILE : 존재하고 실행 가능한지
파일 특수 권한 테스트:
-g FILE: 존재하고 sgid 권한이 있는지 여부
-u FILE: 존재 여부 및 suid 권한 여부;
- k FILE: 존재 여부 및 고정 권한 여부
파일 크기 테스트:
-s FILE: 존재 여부; 비어 있음;
파일이 열려 있는지 여부:
-t fd: fd는 파일 설명자가 열려 있고 터미널과 관련되어 있는지 여부를 의미합니다.
-N FILE: 파일이 열려 있는지 여부
-O FILE: 현재 유효 사용자가 파일 소유자인지 여부
-G FILE: 현재 유효 사용자가 파일 소유자 그룹인지 여부; 양안 테스트:
FILE1 -ef FILE2: FILE1과 FILE2가 동일한 장치 inode에서 동일한 파일을 가리키는지 여부
FILE1 -nt FILE2: FILE1이 FILE2보다 최신인지 여부
FILE1 -ot FILE2: FILE1이 FILE2보다 오래된지 여부
결합 테스트 조건:
논리 연산:
첫 번째 방법:
COMMAND1 && COMMAND2
COMMAND1 ||
! COMMAND
[ -e FILE ] && [ -r FILE ]
두 번째 방법:
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
! EXPRESSION
은 테스트 명령을 사용하여 수행해야 합니다.
# [ -z "$ 호스트이름" -o " $hostName "=="localhost.localdomain" ] && 호스트 이름 www.madu.com
# [ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab
vim:
편집 모드, 입력 모드, 마지막 줄 모드, 시각화 모드
Jump: h,j,k,l,w,b,e,),(,}, {, G , ^, 0, $
편집: x, r, c, d, y, p, u, ctrl+r
찾기: /, ?, n, N
찾기 바꾸기: s
s///
g:
i:
마지막 줄 구분 기호:
#
m,n
분, +#
.
$
/pat1/
/pat1/,/pat2/
%
파일 테스트:
단안 : -e, - f, -d, -b, -c, -L, -P, -S, -r, -w, -x, -s
바이너리: -nt, -ot
조합 테스트 : -a, -o, !
파일 검색:
파일 시스템에서 적합한 파일 찾기
파일 검색: 찾기, 찾기
비실시간 검색(데이터베이스 검색): Locate
실시간 검색: find
locate:
인덱스 구성은 시스템이 비교적 안정적일 때 자동으로 수행됩니다. 유휴(주기적인 작업), 데이터베이스 수동 업데이트(updatedb),
인덱스 구축 프로세스는 리소스를 많이 소모하는 전체 루트 파일 시스템을 통과해야 합니다.
빠른 검색 속도,
비실시간 검색,
키워드
찾기
실시간 검색 도구 , 지정된 경로를 탐색하여 파일 시스템이 파일 조회를 완료합니다.
약간 느린 검색 속도,
실시간 검색;
문법:
find .. [검색 경로] [검색 조건] [처리 작업]
검색 경로: 특정 대상 경로를 지정합니다. 기본값은 현재 디렉터리입니다.
검색 조건: 파일 이름, 크기, 유형, 권한 및 기타 표준이 될 수 있는 지정된 검색 기준; 기본값은 지정된 경로 아래의 모든 파일을 찾는 것입니다.
처리 작업: 충족하는 파일로 수행할 작업 조건은 기본 출력입니다.
검색 조건:
파일 이름 기준 검색:
-name "파일 이름": glob
*, ?, [], [^]
-iname "파일 이름": 대문자와 소문자를 구분하지 않습니다.
-regex "PATTERN": PATTERN을 사용하여 전체 파일 경로를 일치시킵니다. 파일 이름뿐만 아니라 문자열
소유자와 그룹을 기준으로 검색:
-user USERNAME: 소유자가 지정된 사용자인 파일을 검색합니다.
group GRPNAME: 그룹이 지정된 그룹인 파일을 검색합니다.
-uid UserID: 해당 사용자의 UID 번호를 검색합니다. 소유자는 지정된 그룹 파일입니다.
-gid GroupID: 그룹이 지정된 GID 번호인 파일을 찾습니다.
-nouser: 소유자가 없는 파일을 찾습니다. 그룹 파일
파일 유형에 따른 검색:
유형:
f: 일반 파일
d: 디렉토리 파일
l: 심볼릭 링크 파일
S: Putting File B: 블록 장치 파일
c: 문자 장치 파일
P: 파이프 파일
조합 조건:
및: -a
또는: -o
비: -not, !
!A -a !B = !(A -o B)
!A -o !B = !( A -a B)
/tmp 디렉터리에서 소유자가 루트가 아니고 파일 이름이 fstab이 아닌 파일을 찾습니다.
find /tmp ( -not -user root -a -not -name 'fstab ' ) -ls
find /tmp -not ( -user root -o -name 'fstab' ) -ls
파일 크기를 기준으로 찾기:
-size [+| -] #UNIT
공용 단위: k, M, G
#UNIT: (#-1, #]
-#UNIT: [0,#-1]
+ #UNIT: (#,oo)
타임스탬프에 따르면:
in "days";
-atime [+|-]#,
#: [#, #+1)
+#: [#+1,oo]
-#: [0,#)
-mtime
-ctime
In " 분":
-amin
-mmin
-cmin
권한에 따라 검색:
-perm [/|-]MODE
모드: 정확한 권한 일치
/MODE: 모든 유형의 (u, g, o) 개체에 대한 권한 중 하나가 일치할 수 있는 한
-MODE: 각 개체 유형이 동시에 일치해야 합니다. time 이에 대한 권한 표준이 지정되어 있습니다.
-print: 화면에 표시되는 기본 처리 작업입니다.
-ls: "ls"를 실행하는 것과 유사합니다. found file -l" 명령;
-delete: 발견된 파일 삭제;
-fls /path/to/somefile: 발견된 모든 파일의 긴 형식 정보를 지정된 파일에 저장;
-ok COMMAND {} ; 발견된 각 파일에 대해 COMMAND에 지정된 명령을 실행합니다.
각 파일에 대해 명령을 실행하기 전에 사용자에게 대화식으로 확인 메시지가 표시됩니다. 발견된 각 파일은 COMMAND에 지정된 명령을 실행합니다.
{}: 발견된 파일 이름 자체를 참조하는 데 사용됩니다.
find가 나중에 지정된 명령에 전달되면 모든 파일을 찾습니다. 조건을 충족하고 이를 후속 명령에 한 번에 전달합니다.
일부 명령은 너무 많은 매개변수를 허용하지 않으며 명령 실행이 실패할 수 있습니다. 이 문제를 방지하는 또 다른 방법은 다음과 같습니다.
find | 루트이고 그룹 메일에 속하는 모든 파일 또는 디렉터리; # find /var -user root -group mail
2. /usr 디렉토리에서 루트, bin 또는 hadoop 파일 또는 디렉토리에 속하지 않는 모든 파일을 찾습니다.
# find /usr -not -user root -a -not -user bin -a -not -user hadoop
# find /usr -not ( -user root -o -user bin -o -user hadoop )
3. 최근 주에 수정된 파일 또는 디렉토리를 찾으십시오. 소유자는 루트도 아니고 hadoop 파일 또는 디렉토리도 아닙니다.
# find / etc -mtime -7 -a - not -user root -a -not -user hadoop
# find /etc/ -mtime -7 -a -not ( -user root -o -user hadoop )
4. 현재 시스템에 소유자나 그룹이 없고 지난 주에 액세스한 경우
# find / -nouser -a -nogroup -a -atime -7
5에서 모든 파일을 찾습니다. 1M보다 크고 일반 파일 형식인 /etc 디렉토리
# find /etc -size +1M -type f
6. 파일에 대한 쓰기 권한이 없습니다.
# find /etc -not -perm /222
7. /etc 디렉토리에서 사용자에게 실행 권한이 없는 파일 유형을 하나 이상 찾습니다.
# find /etc -not -perm -111
8 모든 사용자에게 실행 권한이 있고 다른 사용자에게는 쓰기 권한이 있는 파일을 찾으세요. # find /etc/init.d -perm -113
Linux 파일 시스템에 대한 특수 권한
SUID, SGID, Sticky
1 권한
r, w, x
user, group, other
2 보안 컨텍스트
전제: 프로세스에는 소유자와 그룹이 있습니다.
(1 ) 실행 가능한 프로그램 파일을 프로세스로 시작할 수 있는지 여부는 개시자가 프로그램 파일에 대한 실행 권한을 가지고 있는지 여부에 따라 다릅니다.
(2) 프로세스로 시작된 후에는 프로세스의 소유자가 그룹입니다. 프로세스의 개시자는 개시자가 속한 그룹입니다.
(3) 파일에 액세스할 때 프로세스의 권한은 프로세스의 개시자에 따라 다릅니다.
(a) 프로세스의 개시자 파일 소유자와 동일합니다. 파일 소유자 권한이 적용됩니다.
(b) 프로세스 시작자는 파일 그룹에 속하고 파일의 그룹 권한을 적용합니다.
(c) 파일 "기타" 권한;
3 SUID
(1) 실행 가능한 프로그램 파일을 프로세스로 시작할 수 있는지 여부: 개시자가 프로그램 파일에 대한 실행 권한을 가지고 있는지 여부에 따라 다릅니다.
(2) 프로세스로 시작된 후 프로세스의 소유자는 원본 프로그램 파일 소유자입니다.
권한 설정:
chmod u+s FILE...
chmod u-s FILE...
4 SGID
기본적으로 사용자가 파일을 생성하면 해당 파일이 속한 그룹이 해당 사용자가 속한 기본 그룹이 됩니다. 디렉토리는 SGID로 설정되며, 이 디렉토리에 대한 쓰기 권한이 있는 사용자가 이 디렉토리에 생성한 파일이 속하는 그룹은 다음과 같습니다. 이 디렉토리의 그룹:
chmod g+ s DIR...
chmod g-s DIR...
5 Sticky
여러 사람이 쓸 수 있는 디렉토리의 경우 고정이 설정된 경우 각 사용자는 자신의 파일만 삭제할 수 있습니다.
권한 설정:
chmod o+t DIR...
chmod o-t DIR...
SUID SGID STICKY
000 0
001 1
010 2 3
100 4
101 5
110 6
111 7
chmod 4777 /tmp/a.txt
여러 권한 비트 매핑:
SUID: user , 소유자의 처형을 차지합니다. 권한 비트
s: 소유자에게 x 권한이 있음
S: 소유자에게 x 권한이 없음
SGID: 그룹, 그룹의 실행 권한 비트를 차지함
s: 그룹이 있음; x 권한
S: 그룹에 x 권한이 없음
Sticky: other, ohter의 실행 권한 비트를 차지함
t: 다른 그룹에 x 권한이 있음
T: 기타 아니요 x 권한
bash 스크립팅:
절차적 프로그래밍 언어:
순차 실행
선택된 실행
루프 실행
실행 선택:
if 판단 조건
then
조건이 참인 분기 코드
fi
if 조건이 참인 분기 코드
else
조건이 잘못된 분기 코드
fi
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
위 내용은 리눅스 시스템의 기초(1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
성명:본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.