어떤 파일 있는지 확인하는 명령어 : ls -F
cd 가고싶은 디렉토리
cd /home/
ls | greb [ 찾고싶은 단어]
명령어 [옵션] [대상]
* 띄어쓰기 필수!!
- cd : 이동 명령어, 디렉터리 지정 대상으로
ex) cd /home
- 절대경로 : 파일의 전체 주소 / 부터 시작 /home/dbug/LABs/test1
=> 참조해야하는 변수위치, 대상 지정할 때 사용한다.
- 상대 경로 : 내가 있는 지점부터 주소를 시작한다.
./ - 로 나의 위치를 표시 => 디렉터리 단위로 개발할 때, 사용
현재 위치 labs - > test3 ==> cd ./test1/test2/test3
Q_/ var/ lib/ yum/ repos/ x86_64b 디렉터리 개수
==> 정답 :6개
- pwd : 현재 내 위치 (cd명령후 pwd 매번 습관처럼 해보자)
- mkdir : 디렉토리를 만든다 mk = make , dir = directory
mkdir [이름 혹은 경로]
mkdir test1 && cd $_ - 만들고 그 폴더로 바로 이동
- && ==> 앞의 명령어를 실행하고 이어서 다음 명령어 진행, 앞에 명령어가 실패하면 진행 x
- &_ ==> 직전에 사용했던 변수를 이어받음
- -p 옵션 => 1 test1]# mkdir -p test1_1/test1_1_1 종속적인 폴더를 만들어준다.
없는 경로가 중간에 껴있는 디렉터리를 만들때
[root@server1 LABs]# mkdir test2 test3
= > 폴더마다 구분해주면 각각의 디렉터리가 만들어진다.
# mkdir test2/{test2_1,test2_2}
= > 지정 디렉터리안에 여러개 한번에 만들때
- p 옵션 : 생성 시 경로에 기존에 생성되지 않을 디렉터리가 있으면 함께 생성
- m [부여할 권한 숫자] [생성 할 디렉터리 명] : 생성 시에 미리 권한부여 조정
- v : 디렉터리 생성 시 생성에 대한 메시지를 출력
[root@server1 LABs]# mkdir -m -v 700 test4
[root@server1 LABs]# ls -l
# ls => 디렉터리 보기 , 현재 위치, 혹은 대상의 위치에서 존재하는 파일들을 조회
- l 옵션 : 상세내용 출력
(파일의 성격, 권환 연관된 파일수 , 소유권자, 소유그룹, 용량, 생성일시, 파일이름)
drwxr-xr-x. 2 root root 6 Oct 8 13:45 test2_1 - a 옵션 : 숨김파일 출력, 리눅스의 숨김파일 = 파일이름 앞에 .이 붙으면 숨길파일로 지정
# ls -Sl 파일의 용량에 따라 내림차순
- i : inode 출력
- h : size를 사람이 보기 편하게 단위로 세팅
- S : size순으로 내림차순 정렬
- R : 재귀옵션 - 내 하위 파일들에 대해서도 해당 명령어 수행
# ls -Sila 많이 사용
# ps -ef | grep [찾을 단어] : 찾을 단어가 포함된 것을 지우는 것
yum install -y tree 설치 명령어
rm = remove 파일을 대상으로
- rm -r 디렉토리이름 = > 디렉토리 삭제
- rm -rf 강제지움 경로 내 비어있는 디렉터리 모두 삭제
- rmdir -p 한꺼번에 종속된 사항에 대해서도
# cat (catenate = 잇다, 연결하다)
- cat 을 이용한 파일 조회
cat /etc/servcies - cat > 을 이용한 새 파일 만들기
cat > services_5 - cat >>을 이용한 파일에 문장 첨부
cat /etc/services | tail -5 > servies_5 - 그럼 질문 services_5에 cat –n 옵션을 붙이면 어떻게 붙을까? 번호 그대로 붙습니다
cat -n /etc/services | tail ( => 끝에서 10개만 출력됨 - 파일 합병
cat file1 file2 file3 > file_integration
#옵션들
n: 줄번호를 화면 왼쪽에 나타낸다. 비어있는 행도 포함한다.
b: 줄번호를 화면 왼쪽에 나타낸다. 비어있는 행은 제외한다.
s: 연속되는 2개이상의 빈 행을 한 행으로 출력한다.
v: tab과 행 바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
E: 행마다 끝에 $ 문자를 출력한다.
T: 탭(tab) 문자를 출력한다.
A: -vET 옵션을 사용한 것과 같은 효과를 본다.
1. cat 파일명 => 파일의 내용을 조회할 때 사용함
2. cat => 조회 및 입출력 그냥 치면 바로 출력 컨트롤 c로 빠ㅣ져나옴
3. [root@server1 ~]# cat > service_txt
안녕하세요
리눅스 수업입니다.
끝 ^C
파
cat > [대상] = > 해당대상에 내용 기입
> : direction = > 꺽쇠 방향으로 내용을 엎어씀, 전달
>> : 내용 추가 (기존 내용유지)
4. cat -n [filename]
5. cat [1file] [2file] > [저장대상] : 파일 합치기
# more [옵션] [조회 할 대상]
more - 문서를 조회할때 명령어 조회할때
명령어 | more
| : 앞의 명령어 출력 결과를 뒤에 인자로 넘김
ex > cat etc/service | more
#more 검색후
- enter : 한 줄씩 이동
- space bar : 한 페이지 씩 이동
- q : 중단하기
- = : 현재 라인 확인
#more 옵션들
- -숫자 -> 숫자만큼 끊어서 조회
- +숫자 -> 입력한 행부터 출력
#텍스트 모드 단축키
- enter -> 한 줄씩
- space bar => 한 페이지 씩
- h => 명령어 상태에서 도움말 확인
- b => 이전 페이지로 이동
- ! => 다른 명령을 실행할 수 있는 상태로 전환
- :f => 현재 파일명과 줄 번호
- q => 명령 종료
- = => 현재 위치의 행 번호 표시
- /단어 => 지정한 문자열 검색
- v => 바로 vi 편집기로 전환
cat -n /etc/services | more(less)
번호가 없기 때문에 헷갈릴 수 있는 것 이렇게 해결
! 이 때는 문서가 아닌 결과를 조회하는 상황이기 때문에 v가 먹지 않음
# less [옵션] [조회 할 대상]
#less : 명령어 결과를 조회 - 얘는 앞뒤로 이동이 가능함
q 로 중단하면 결과가 남지 않는다.
# less 옵션들 :
- -? : less에서 사용할 수 있는 명령들에 대한 도움말 출력
- -i : 대소문자를 무시하고 탐색
- -s : 연속되는 공백 라인은 하나의 행으로 처리
- +행번호 : 지정된 행 다음부터의 내용을 출력
- #텍스트 모드 단축키
- q: 종료 후 쉘창으로 복귀
- enter: 1행 아래로 이동
- space bar: 아래로 1페이지 이동
- 위 방향키: 위로 1행 이동
- 아래 방향키: 아래로 1행 이동
- PageUp: 위로 1페이지 이동
- PageDown: 아래로 1페이지 이동
- v 바로 vi 편집기로 전환
- /단어 지정한 문자열 검색
- ! 다른 명령을 실행할 수 있는 상태로 전환
- = 현재 위치의 행 번호 표시
공통옵션
+번호 / : 시작라인 지정
-번호 : 한번에 출력할 줄 크기 지정
#tail, head [옵션] [출력 할 대상]
head ==> 앞에서 출력
tail ==> 뒷줄부터 출력
#옵션들:
-n : 뒷 번 n번째 출까지 출력(default 10)
-f : 종료되지 않은 상태에서 표준입력을 읽어들임
#head/tail [1번파일] [2번파일] 동시 출력
tail -f /var/log/secure
-f 옵션 : 해당 파일을 종료하지 않고 출력을 읽어드림
number옵션 특정 줄까지
[root@server1 ~]# tail -f /var/log/secure
#cp ==copy
cp [옵션] [복사 할 대상] [복사 할 위치]
- p : 파일의 소유자나, 권한 ,그룹 접근 시간 완벽한 복사본
- r : 파일이면 그냥 복사, 디렉터리일 떄는 하위 디렉터리까지
- i : 복사할 위치에 동일 명의 파일이 이미 있으면 한 번 물어보기
- R : 디렉터리를 복사할 경우 그 안에 포함된 모든 하위경로와 파일들을 모두 복사합니다.
==> 재귀명령(하위 개체에 대해서도 일괄적용)
복사, 백업 파일 이동
configure 나 수정안되는 파일들을 미리 백업개념으로 사용할 수 있다.
백업본을 미리 만들고 문제시 원본에 엎을 수 있도록 습관 .
** cp * 복사할장소 : 현재장소의 모든 파일을 복사할 장소로 복사시킴
** cp -r . :명령으로 숨김파일까지 모두 복사가능
cp -r . ./LABs ==> 현재위치의 숨김파일까지 LABs로 모두 복사
# cp service_txt service_2.txt => service_txt에서 service_2.txt로 복사
[root@server1 ~]# cat service_2.txt
안녕하세요
리눅스 수업입니다.
다시시작
cp service_.conf service_conft
# -R == > 재귀명령(하위개체에 대해서도 일괄 적용
[root@server1 ~]# cp LABs/ LABS/
cp: omitting directory ‘LABs/’ = > cp만 사용했을때는 디렉터리 복사는 되지 않는다.
[root@server1 ~]# cp -r LABs/ LABS/
==> -r 옵션 사용시 디렉터리 복사도 가능
[root@server1 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'a
lias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
rm -rf LABS
#mv [옵션] [이동시킬 대상] [이동할 위치] 복사 이동
보통은 이동보다는 이름을 변경할 때 많이 사용(깨지는 경우가 종종 있음)
-b : 이동할 위치에 동일 대상이 있다면 이름 끝에 ~를 붙여서 백업본을 생성
-f : 강제 옵션
[root@server1 LABs]# mv -f testtouch testfile
-i : 목적 경로에 같은 이름의 파일(혹은 디렉토리)가 존재하면, 덮을 지 질문(alias 설정 되어있음)
#sed ==> streamlined editor :문서를 추출하거나 편집하는 기능 ,
다만 결과를 바로 적용하지 않는다
#버퍼 : 데이터가 전송되는 동안 일시적으로 보관하는 메모리 영역
- - n :바뀐 내용만 보여줌
sed -n '[행번호]p' [대상파일] = p 는 출력
sed -n '[행번호][기능]' [대상파일] => 기능 - -p :출력
- -e :다중행 출력
- `/ssh/p' : 특정문자 검색
- -d : 화대
[root@server1 ~]# sed -n '25p' /etc/service => 특정 줄만 지정하여 출력
[root@server1 ~]# sed -n '3,25p' /etc/services => 일정 범위를 지정할 수 있다
[root@server1 ~]# sed -n -e '22p' -e '25p' /etc/services => 특정항을 지정하여 출력
(연속적이지 않은 항도 출력가능)
[root@server1 ~]# sed -n -e '22,25p' -e '30,35p' /etc/services
* 검색한 내용을 저장할 수 있다 : sed -n '3,25p' /etc/services > serv_3_25
* 출력시 내가 원하는 줄에서 : [root@server1 ~]# sed -n -e '1d' -e '1,2p' /etc/hosts
* 's/[바꿀 대상]/[바뀐 결과]/p' 단어 치환 : sed -n 's/tcp/icmp/p' tcp_txt
[root@server1 ~]# sed -n '15,25p' /etc/services > serv_15_25
특정 문자열 검색 출력
=> ex) ssh이 포함된 열 출력원할때 > sed -n '/ssh/p' /etc/services
삭제시 sed -n '1d' /etc/hosts
** 만약 수정후 원본에 반영을 하고 싶다면 sed -n -e '1d' -e '1,2p' /etc/hosts > /etc/hosts
결과를 원본으로 저장해 주어야 한다.
1./ etc/service 에서 tcp라는 단어를 포함하는 모든 행을 tcp 문서로 저장
2.tcp 문서에 1-25행까지 출력하되 2-10행은 출력하지 않음
sed -n '/tcp/p' /etc/services > tcp
sed -n -e '2,10d' -e '1,25p' /etc/service
# rm : remove 제거
rm * : 전체 삭제
- -r : 디렉터리도 제거가능
- -f : 강제로 삭제(확신이 있을때만 사용)
- rm -rf * = > 전체 강제 삭제 확신이 있는 경우만 사용 잘 사용하지 않는방법
# rmdir ==> 디렉터리 삭제 명령어
- -p : 해당 디렉터리 경로 내에 빈 디렉터리는 모두 삭제
의도치 않게 삭제되는 경우 많기 때문에 조심해야 한다.
#ln = > 링크파일 생성
- -s : 심볼릭 링크파일로 지정
- 링크파일? -> 바로가기와 비슷. 원본이 바뀌면 링크파일도 바뀌지만,
- 링크 파일이 바뀌면 원본도 바뀐다.
- 원본과 링크는 inode도 동일하다.
- 하드링크 : 원본과 아이노드가 동일, 원본이 삭제되도 본인의 역할 수행
- 심볼릭 링크 : 원본과 inode가 다름, 원본이 삭제되면 기능을 못함 대신 이름과 위치만 같으면 바로 대체가능
[root@server1 ~]# ln tcp tcp_ln
root@server1 ~]# ln -s tcp tcp_sln
-> 확인하는 방법 ls -li tcp_*
# touch --> 터치
1, 빈파일 생성 ( 내용이 없는 파일 생성
2. 파일의 접근 시간 변경
touch * => 작업 끝내고 모든 파일의 작업시간을 변경시켜줌
stat *
touch .autorelabel
#stat 파일의 정보를 알려줌
# grep [찾을 문자열][대상 파일] =>지정 문자열을 대상에서 찾아준다.
명령어 | grep [찾을 문자열] ==> 명령어 결과를 받아서 처리
- -i : ignore(대소문자 구별 x)
- -e : or (조건 추가)
- -v : not (제외시키기)
- -w : 완전일치
- -E : 확장된 정규표현식 적용
ve
ls | grep tcp
ls | grep -ie tcp -ie lab
ls | grep -v tcp => tcp 빼고 검색
lls | grep -vE "tcp|LAB" 한번에 여러개 검색
ls | grep '^serv' 시작하는 단어를 지정할때
cat | grep
[root@server1 ~]# ls | grep serv /etc/services
#echo ==> 해당하는 문자열을 출력
- 해당하는 문자열 출력
- 변수를 출력
- 입력한 명령어에 넘겨서 변수 입력
[root@server1 LABs]# echo "USER" => 문자열 출력
USER
[root@server1 LABs]# echo $USER => 변수출력
root
[root@server1 LABs]# echo Y | yum install tree ==> 입력한 명령어에 넘겨서 변수 입력
# 명령어 연결자 (다중명령어)
1. | (바, 파이프) -> 앞의 명령어 결과를 뒤의 명령어 입력으로 넘김(grep, echo..)
ex) ls | grep serv
2, ; (세미콜론) - > 명령어의 끝남을 알림,
touch txt; rm -rf LABs 두가지 명령어를 구분지어줌
3. & (엠퍼센트) - > 명령어를 동시실행, 앞에는 백그라운드, 뒤에는 포어그라운드
!! 동시실행이다보니까 명령어 간 상호의존성이 있는 명령어는 동시 수행 불가
mkdir LABs & cd LABs ( 에러) = > 이경우는 | 를 사용
4. &&( 더블 엠퍼센트) ==? 명령어를 순차진행, 앞에 결과가 성공하면 뒤에 명령어 진행
5, || (더블바 ) ==> 앞에 명령어가 실패해야 뒤에 명령어가 실행 , 주로 실패 가능성이 있는 작업과 그에 대한 대비팩을 동시에 타이핑
#diff = > 문서간 차이점 비교
diff [옵션] [대상1] [대상2]
-c : 두 파일 간 차이점 비교 출력
-d : 차이점만 출력
-u : 두 파일 변경점과 근처 내용까지 자세히 출력
-i : 대소문자 무시
-s : 동일하면 알림
주로 설정 관련 파일들, 원본이랑 비교할 때 사용 (troubleshooting용)
# diff tcp_ln tcp_sln
#split ==> 나누기, 파일을 나눔 (로그, 아카이브 == linux압축파일)
split [옵션] [대상] [분할후 파일명]
ex) split txt txt1 txt2 /...
- -a : 파일 뒤에 붙을 문자길이를 지정
- - additional suffix=붙일이름 : 분할파일 뒤에 추가적으로 붙을 이름을 지정
- -b : 분할 기준을 파일로 지정 (byte0
- -d : 분할 파일 이름 뒤에 숫자를 붙임
- -l : 라인 수 기준으로 파일을 분할
- -n 숫자 : 파일을 균등분할
- -numeric-suffixes=지정날짜
split service_txt service_txt_
==> service _txt_aa 가 생성
[root@server1 LABs]# split --additional-suffix=.zip services services_
[root@server1 LABs]# ls
services services_af.zip services_al.zip
services_aa.zip services_ag.zip test1
services_ab.zip services_ah.zip test2
services_ac.zip services_ai.zip test3
services_ad.zip services_aj.zip
services_ae.zip services_ak.zip
[root@server1 LABs]# rm -f services_*
[root@server1 LABs]# split -b 10m services services_
[root@server1 LABs]# split -l 1000 -d services services_
[root@server1 LABs]# ls
services services_03 services_07 services_11
services_00 services_04 services_08
services_01 services_05 services_09
services_02 services_06 services_10
[root@server1 LABs]# split -a 6 -l 10000 --numeric-suffixes=221009 services services_
[root@server1 LABs]# ls
services services_221009 services_221010
[root@server1 LABs]# split -l 1000 -d services services_
[root@server1 LABs]# ls
services services_03 services_07 services_11
services_00 services_04 services_08
services_01 services_05 services_09
services_02 services_06 services_10
[root@server1 LABs]# rm -f services_*
services 파일을 나누는데 나눈 파일들은 221001부터 시작값을 지정해 주고
총 30개 파일이 나올 수 있도록 균등하게 나누어 주세요
split -a 6 -n 30 --numeric-suffixes=221001 services services_
root@server1 LABs]# split -a 6 -n 30 --numeric-suffixes=221001 services services_
[root@server1 LABs]# ls
services services_221008 services_221016 services_221024
services_221001 services_221009 services_221017 services_221025
services_221002 services_221010 services_221018 services_221026
services_221003 services_221011 services_221019 services_221027
services_221004 services_221012 services_221020 services_221028
services_221005 services_221013 services_221021 services_221029
services_221006 services_221014 services_221022 services_221030
services_221007 services_221015 services_221023
#cut == 추출
cut [옵션] [파일명]
-d : 구분자를 지정
-f : 그 구분자를 통해 가른 각각의 필드 추출
#awk : 데이터를 조회, 가공할 수 있도록 만드는 프로그래밍 언어, 원하는 특정 열, 패턴에 맞는 값만 추가
보통은 스크립트화 시켜서 사용
-F : 필드 구분자를 지정해서 사용 " :|//"
-f : awk 스크립트가 있을 시 해당 스크립트 실행
#필드랑 레코드
NR == 레코드 == 행 == 가로== 'NR=숫자'
NF == 필드 ==열 == 세로 == '$숫자'
NF 1 2 3 4
NR =1 손 차 박 이
NR=2 김 조 신 추
NR=3 티 야 베 요
검색 결과
NR==1 NF==1 - > 손
NR ==1 -> 손 차 박 이
awk [옵션] '찾을 조건 {print}' [대상파일]
awk [옵션] '찾을 조건 {액션}' [대상파일]
명령어 | awk [옵션] '찾을 조건 {액션}'
액션 = sum, print, ../
awk 'NR==4 {print $1,$2}' /var/log/secure
awk '$3>=10:00'
awk 명령어로 /var/log/secure 에서 10:10분 이후에 들어온 로그만 출력해 보세요.
[root@server1 ~]# awk '$3>="10:10" {print}' /var/log/secure
#find :찾기
find [시작위치] [조건] [옵션]
*조건
- -name :파일명으로 찾기
- -type : 파일의 타입으로 찾기
- -perm : 파일의 권한으로 찾기
- -size : 용량으로 찾기 (+ 붙이면 이상, - 붙이면 이하)
- -user,group : 유저 혹은 그룹을 기준으로 (소유권자)
옵션
- -ls: ls -l 명령어로 보여줌
- -exec : 명령조건, 후술되는 명령어를 실행 (끝에 \, 명령어가 끝났음을 명시해줘야함)
- -ok : 명령어 실행 여부를 묻지 말고 진행
[root@server1 ~]# find / -name *.conf -user root -size -10k
find / -type f -exec rm '{}' /; (x) 사용하면 안좋아
find / -type f\ ( -perm -4000 -o -perm
#와일드 카드 값
* 모든 해당 위치부터 문자열과 문자열 개수 상광벗이 모든값
? : 문자 하나의 자리 차지
[ ] : [ ]안에 있는 모든 문자중 하나
[a-z]rv ==> arv brv crv ....
{} : {}안에 있는 모든 한단어,( 아무것도 적지 않으면 모든 결과 값)
# 이스케이프문자
본래 의미에서 탈락시켜서 활용할 때 사용.
; => 명령어를 끊냄 | \; => ' 세미콜론
a => 문자 a|\a => 경고
\n : 줄가름
\t : 탭
\v : 수직 탭
( )
#whereis [옵션] 명령 : 명령어 관련 파일, 소스들의 위치 출력
#wc : 대상 파일이나 명령어 결과의 라인, 문자, 글자 수 출력
[root@server1 ~]# wc -l /etc/services
11176 /etc/services
[root@server1 ~]# wc -c /etc/services
670293 /etc/services
[root@server1 ~]# wc -w /etc/services
61033 /etc/services
#vi 리눅스 문서편집기
- 모드형 편집기, 화면단위 출력
모드 4가지 = 입력,명령, 마지막행, 비주얼
[root@server1 ~]# pwd
/root
[root@server1 ~]# vi .bashrc
# .bashrc
-----------------------------------------
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim' ==> vi 를 불러와도 vim 으로 불러온다.
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
---------------------
shift : wq enter
---------------
[root@server1 ~]# source .bashrc
e, i a,l O,A ==> 입력모드로 전환
r == > 현재 위치 글자를 입력한 값으로 수정
dd == > 현재 행을 잘라내기
dw ==> 한단어 삭제
d < == 삭제
x ==> 한글자씩 삭제
yy ==> 복제
~ y는 복제구나!
똑같은 기능을 두번치면 행단위로 처리
p ==> 복제 혹은 잘라내기 한 결과 값을 붙여넣기
u ==> 직전 명령 취소
g = > 맨 앞으로 이동
G = > 맨아래로 이동
숫자G = > 해당 라인으로 이동
^==> 행의 맨 앞으로
$ -- > 행의 맨 뒤로
/문자열 ==> 해당 문자열 검색
숫자% ==> 해당 문서의 비율 위치로 이동
ctrl + a/x : 숫자를 올림 /내림
더 자세한 내용은
2023.03.15 - [Linux] - [Linux] vi 명령어
'Linux' 카테고리의 다른 글
[Linux] Linux 환경 (0) | 2023.03.18 |
---|---|
[Linux] vi 명령어 (0) | 2023.03.15 |
[Linux] 명령어 (0) | 2023.03.14 |
댓글