Linux 명령 테크닉 30가지 필수 명령 테크닉

유닉스/Linux에서 효율적인 작업 방식은 그래픽 페이지를 조작하는 것이 아니라 명령행을 조작하는 것이다. 명령행은 더욱 자동화되기 쉽다는 것을 의미한다.Linux 시스템을 사용한 친구들은 명령줄이 강한 점을 알고 있을 것이다.본고는 Linux에서 검색, 삭제, 포장, 압축 해제, 조회 및 VIM 등 30개의 상용 명령 기교를 다루고 있다
1. Vim 자동 주석 추가 및 스마트 줄 바꿈

# vi ~/.vimrc 
set autoindent
set tabstop=4
set shiftwidth=4
function AddTitle()
call setline(1,"#!/bin/bash")
call append(1,"#====================================================")
call append(2,"# Author: lizhenliang")
call append(3,"# Create Date: " . strftime("%Y-%m-%d"))
call append(4,"# Description: ")
call append(5,"#====================================================")
endf
map <F4> :call AddTitle()<cr>
파일을 열면 F4를 누르면 자동으로 주석이 추가되어 많은 시간을 절약할 수 있습니다!
2./data 디렉터리 찾기 및 삭제 7일 전에 만든 파일

# find /data -ctime +7 -exec rm -rf {} \;
# find /data -ctime +7 | xargs rm -rf
3. tar 명령 압축 제거 디렉터리

# tar zcvf data.tar.gz /data --exclude=tmp  #--exclude , 
4. tar 패키지 압축 파일을 보고 압축을 풀지 않음

# tar tf data.tar.gz #t ,f 
5. stat 명령을 사용하여 파일의 속성을 보기
액세스 시간(Access), 수정 시간(modify), 상태 변경 시간(Change)

stat index.php
Access: 2018-05-10 02:37:44.169014602 -0500
Modify: 2018-05-09 10:53:14.395999032 -0400
Change: 2018-05-09 10:53:38.855999002 -0400
6. 대량 해압 tar.gz
방법 1:

# find . -name "*.tar.gz" -exec tar zxf {} \;
방법 2:

# for tar in *.tar.gz; do tar zxvf $tar; done
방법 3:

# ls *.tar.gz | xargs -i tar zxvf {} 
7, 파일에서 메모 및 공백 필터링
방법 1:

# grep -v "^#" httpd.conf |grep -v "^$"
방법 2:

# sed -e ‘/^$/d' -e ‘/^#/d' httpd.conf > http.conf
혹은

# sed -e '/^#/d;/^$/d'   #-e  sed 
방법 3:

# awk '/^[^#]/|/"^$"' httpd.conf 
혹은

# awk '!/^#|^$/' httpd.conf
8./etc/passwd 파일의 모든 사용자 필터링
방법 1:

# cat /etc/passwd |cut -d: -f1
방법 2:

# awk -F ":" '{print $1}' /etc/passwd
9. iptables 사이트 이동
라우팅 전달 먼저 켜기:

echo "1" > /proc/sys/net/ipv4/ip_forward # 
내부 네트워크 액세스 외부 네트워크(SNAT):iptables Ct nat -A POSTROUTING -s [ IP ] -j SNAT --to [ IP]# 네트워킹 서버는 방화벽 네트워킹 IP를 게이트웨이로 지정합니다.
네트워킹 액세스 네트워킹(DNAT)(네트워킹 포트 매핑 네트워킹 포트):iptables Ct nat -A PREROUTING -d [ IP] -p tcp --dport [ ] -j DNAT --to [ IP: ]# 인트라넷 서버는 방화벽 인트라넷 IP를 게이트웨이로 구성해야 합니다. 그렇지 않으면 패킷이 반환되지 않습니다.또한 시스템 서비스가 패키지 소스에 따라 다시 돌아오기 때문에 SNAT를 설정할 필요가 없습니다.
10. iptables는 본 컴퓨터의 80 포트를 로컬 8080 포트로 전송합니다

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
11. find 명령은 파일을 찾아서/opt 디렉터리로 복사합니다
방법 1:

# find /etc -name httpd.conf -exec cp -rf {} /opt/ \;:  #-exec ,{} ,\; 

방법 2:

# find /etc -name httpd.conf |xargs -i cp {} /opt   #-i {} 
12. 루트 디렉토리에서 1G 이상의 파일 보기

# find / -size +1024M 
기본 단위는 b입니다. C, K, M 등 다른 단위를 사용할 수 있습니다.
13. 서버 IP 접속 보기

# netstat -tun | awk '{print $5}' | cut -d: -f1 |sort | uniq -c | sort -n
-tun: -tu는 tcp와udp 연결을 표시하고, n은 IP 주소로 표시합니다.
cut-d:-f1:cut는 선택적으로 한 줄을 표시하는 내용 명령입니다. -d는 구분자, f1은 구분자를 표시하는 첫 번째 필드를 지정합니다.
uniq-c: 문장의 중복 줄을 보고하거나 삭제하고, 출력 줄 앞에 나타나는 횟수를 추가합니다.
sort-n: 서로 다른 유형에 따라 정렬합니다. 기본 정렬은 오름차순이고, -r 매개 변수는 내림차순이며, -n은 수치의 크기에 따라 정렬합니다.
14. 특수 기호 "/"를 포함하여 391행에 한 줄 삽입

# sed -i "391 s/^/AddType application\/x-httpd-php .php .html/" httpd.conf
15. nginx 로그에 가장 많이 액세스하는 IP 10개 나열
방법 1:

# awk '{print $1}' access.log |sort |uniq -c|sort -nr |head -n 10
sort: 정렬
uniq-c: 반복 행 병합 및 반복 횟수 기록
sort-nr: 숫자에 따라 내림차순 정렬
방법 2:

# awk '{a[$1]++}END{for(v in a)print v,a[v] |"sort -k2 -nr |head -10"}' access.log
16.nginx 로그 하루 액세스량이 가장 많은 상위 10비트 IP 표시

# awk '$4>="[16/May/2017:00:00:01" && $4<="[16/May/2017:23:59:59"' access_test.log |sort |uniq -c |sort-nr |head -n 10

# awk '$4>="[16/Oct/2017:00:00:01" && $4<="[16/Oct/2017:23:59:59"{a[$1]++}END{for(i in a){print a[i],i|"sort -k1 -nr |head -n 10"}}' access.log
17. 현재 시간 1분 전 로그 접근량 얻기

# date=`date +%d/%b/%Y:%H:%M --date="-1 minute"` ; awk -vd=$date '$0~d{c++}END{print c}' access.log
# date=`date +%d/%b/%Y:%H:%M --date="-1 minute"`; awk -vd=$date '$4>="["d":00" && $4<="["d":59"{c++}END{print c}' access.log 
# grep `date +%d/%b/%Y:%H:%M --date="-1 minute"` access.log |awk 'END{print NR}'
# start_time=`date +%d/%b/%Y:%H:%M:%S --date="-5 minute"`;end_time=`date +%d/%b/%Y:%H:%M:%S`;awk -vstart_time="[$start_time" -vend_time="[$end_time" '$4>=start_time && $4<=end_time{count++}END{print count}' access.log
18. 1-255 사이의 정수 찾기
방법 1:

# ifconfig |grep -o '[0-9]\+' #+ 
방법 2:

# ifconfig |egrep -o '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
19. IP 주소 찾기

# ifconfig |grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' #-o 
20. 문서에 시작 및 끝 설명 정보 추가

# awk ‘BEGIN{print " "}{print $1,$NF} END{print " "}'/etc/passwd
# awk 'BEGIN{printf " date   ip
------------------
"} {print $3,$4} END{printf "------------------
end...
"}' /var/log/messages date ip ------------------ 03:13:01 localhost 10:51:45 localhost ------------------ end...
21. 네트워크 상태 보기 명령

# netstat -antp # 
# netstat -lntp # 
# lsof -p pid # 
# lsof -i:80 # 
22, 8비트 무작위 문자열 생성
방법 1:

# echo $RANDOM |md5sum |cut -c 1-8
방법 2:

# openssl rand -base64 4
방법 3:

# cat /proc/sys/kernel/random/uuid | cut -c 1-8
23.while 사순환

while true; do # , [ "1" == "1" ], 

   ping -c 2 www.baidu.com

done
24.awk 포맷 출력
텍스트 열을 왼쪽 또는 오른쪽 정렬합니다.
왼쪽 정렬:

# awk '{printf "%-15s %-10s %-20s
",$1,$2,$3}' test.txt
오른쪽 정렬:

# awk '{printf "%15s %10s %20s
",$1,$2,$3}' test.txt
25. 정수 연산 보류 소수점
방법 1:

# echo 'scale=2; 10/3;'|bc #scale 
방법 2:

# awk BEGIN'{printf "%.2f
",10/3}'
26. 숫자 구화

# cat a.txt
10
23
53
56
 1:
#!/bin/bash
while read num;
    do
    sum=`expr $sum + $num`
done < a.txt
    echo $sum
방법 2:

# cat a.txt |awk '{sum+=$1}END{print sum}'
27, 숫자인지 아닌지 판단(문자열 판단도 마찬가지)

# [[ $num =~ ^[0-9]+$ ]] && echo yes || echo no  #[[]] [] , =~ `
^$: 처음부터 끝까지 숫자가 충족되어야
=~: 왼쪽이 오른쪽 정규 표현식을 충족시키는지 여부를 나타내는 조작부호
28. 줄 바꿈 문자를 삭제하고 공백을 다른 문자로 바꿉니다

# cat a.txt |xargs echo -n |sed 's/[ ]/|/g' #-n  
# cat a.txt |tr -d '
' #
29. 텍스트의 20~30줄 내용 보기(총 100줄)
방법 1:

# awk '{if(NR > 20 && NR < 31) print $0}' test.txt
방법 2:

# sed -n '20,30p' test.txt 
방법 3:

# head -30 test.txt |tail
30. 텍스트의 두 열 위치 바꾸기

# cat a.txt
60.35.1.15   www.baidu.com
45.46.26.85   www.sina.com.cn
# awk '{print $2"\t"$1}' a.txt
Linux 명령의 사용은 기교를 매우 중시하고 적절하게 사용하면 업무 효율을 크게 높일 수 있다. 학생들은 모든 명령의 사용 방법을 진지하게 배우고 명령 간의 조합 사용 방법을 생각해야 한다.

좋은 웹페이지 즐겨찾기