반응형
1. 현재 날짜로 파일 만들기
#!/bin/bash
vi $(date '+%Y-%m-%d').txt
2. 현재 날짜로 디렉토리를 만들고 현재날짜로 파일 만들기
#!/bin/bash
# 사용자 홈 디렉토리 아래 dir 폴더 생성을 위한 변수 선언
dir="${HOME}/dir"
# 디렉토리가 없으면 생성
if [ ! -d "$dir" ]; then
mkdir "$dir"
fi
# 디렉토리 아래 현재날짜 파일명으로 vi 실행
vi "${dir}/$(date '+%Y-%m-%d').txt"
3. 절대경로에서 파일이름 추출하기
##*/ 명령어로 전체의 / 앞 부분을 삭제 (패턴 : */)
$ filepath=/home/hitomis/script/test.sh
$ echo "${filepath##*/}"
#출력결과
test.sh
bash 파라메터 전개
${변수명#패턴} | 전방 최단 매치 패턴 일치 부분제거 |
${변수명##패턴} | 전방 최장 매치 패턴 일치 부분제거 |
${변수명%패턴} | 후방 최단 매치 패턴 일치부분 제거 |
${변수명%%패턴} | 후방 최장 매치 패턴 일치부분 제거 |
4. 특정 디렉토리를 단계별로 출력하는 프로그램
#!/bin/bash
list_recursive()
{
# 첫번째 인자를 filepath라는 로컬 변수에 대입
local filepath=$1
local indent=$2
#echo "$filepath"
# 들여쓰기 및 파일이름만 추출
echo "${indent}${filepath##*/}"
#디렉토리일 경우 안에 포함하는 파일/디렉토리 출력
if [ -d "$filepath" ]; then
local fname
# 공백도 문자로 인식하므로 공백제거
#IFS=$'\n'
# ls 명령으로 결과를 fname 변수에 대입하여 for문으로 출력
for fname in $(ls "$filepath")
do
#디렉토리 내 파일 출력
#echo "${filepath}/${fname}"
#재귀 호출을 통한 파일 출력
#들여쓰기를 위해 2번째 인자에 공백을 추가하여 재귀호출
list_recursive "${filepath}/${fname}" " $indent"
done
fi
}
list_recursive "$1"
5. find , xargs와 grep 명령어를 사용하여 특정 경로의 파일을 대상으로 특정 문자열 검색
#!/bin/bash
# 인자값 첫번째(검색어) 두번째(경로) 세번째(파일명)를 변수에 대입
pattern=$1
dir=$2
name=$3
# 세번재 인자(파일명) 빈 문자열이면 기본으로 전체 파일 대상지정
if [ -z "$name" ]; then
name='*'
fi
# find 명령으로 타입이 파일 전체 파일을 가져와 xargs로 리스트를 받은 후 grep 문자열로 검색
find "$dir" -type f -name "$name" | xargs grep -nH "$pattern"
반응형
'개발 > linux' 카테고리의 다른 글
아카이브 (archive) (0) | 2023.04.08 |
---|---|
쉘 스크립트 괄호확장 (1) | 2023.04.08 |
쉘 스크립트 문법 (0) | 2023.03.13 |
bash 기초 - tar (0) | 2022.08.24 |
bash 기초 - du (disk usage) (0) | 2022.08.24 |
댓글