bash script2020. 10. 26. 11:47

 

반달가면 이글루에서 백업 - bahndal.egloos.com/431802

 

sed를 이용해서 특정 문자열을 다른 문자열로 바꾸는 방법이다. 일단 아래의 예시를 보자.

 

# 처음 나오는 abc를 ABCD로 교체

echo "abc_abc_abc" | sed "s/abc/ABCD/"
ABCD_abc_abc

 

g 옵션을 추가하면 지정한 모든 문자열을 바꾼다.

 

# 모든 abc를 ABCD로 교체

echo "abc_abc_abc" | sed "s/abc/ABCD/g"
ABCD_ABCD_ABCD

 

grep에서 주로 사용하는 정규표현(regular expression)도 사용할 수 있다.

 

# abc로 끝나는 부분을 ABCD로 교체
echo "abc_abc_abc" | sed "s/abc$/ABCD/"
abc_abc_ABCD

 

파일에서 문자열을 바꾸고 다른 파일로 저장하려면 아래와 같이 하면 되겠다.

 

sed "s/abc/ABCD/" my_file.txt > my_file_modified.txt

 

또는

 

cat my_file.txt | sed "s/abc/ABCD/" > my_file_modified.txt

 

특정 문자열을 없앨 수도 있다. 아래의 예시를 참고하자.

 

# 처음 나오는 abc를 제거

echo "abc_abc_abc" | sed "s/abc//"

_abc_abc

 

728x90
Posted by 반달가면
샷컷(Shotcut) 기초2020. 10. 26. 11:40

 

무료 동영상 편집 프로그램인 샷컷(Shotcut)에서 타임라인(timeline)에 배치된 동영상/음성 등을 분할(split)하는 방법이다.

매우 간단한데, 분할하고자 하는 대상을 클릭하여 선택한 후에 분할하려는 지점을 클릭해서 재생위치(playhead)를 이동시킨다. 그런 후에 마우스 오른쪽 클릭으로 메뉴가 표시되도록 하여 "Split at Playhead"를 선택하면 분할된다.

 

겹침(오버랩, overlap)도 직관적이다. 대상을 클릭해서 겹치고자 하는 대상으로 드래그 하여 겹치면 서로 중첩되는 부분에 대해 겹침 효과가 적용된다.

 

728x90
Posted by 반달가면
bash script2020. 10. 23. 14:38

 

반달가면 이글루에서 백업 - bahndal.egloos.com/426420

 

텍스트 파일의 각 행을 무작위로 뒤섞거나 특정 범위의 수를 무작위로 뒤섞고 싶을 때는 shuf 명령을 사용하면 되겠다.

 

예를 들어 my_file.txt에서 무작위로 5개의 행을 뽑아서 화면에 출력하고 싶다면 아래와 같이 하면 되겠다.

 

shuf -n 5 my_file.txt

 

my_file.txt의 전체 행을 무작위로 재배열하고 싶다면, my_file.txt가 몇개의 행으로 이루어져 있는지 찾은 후 이 값을 -n 옵션에 넘겨주자.

 

shuf -n `cat my_file.txt | wc -l` my_file.txt

 

출력 결과를 다른 파일로 저장하고 싶다면 redirection을 이용하면 된다.

 

shuf -n `cat my_file.txt | wc -l` my_file.txt > my_file_shuffled.txt

 

만약 35이상 45이하의 수를 무작위 순서로 출력하고 싶다면 아래과 같이 -i 옵션을 사용하면 된다.

 

shuf -i 35-45

 

사무실에서 커피 내기 사다리 타기 대신으로도 활용할 수 있을 듯;;

 

 

728x90
Posted by 반달가면
bash script2020. 10. 23. 14:33

 

반달가면 이글루에서 백업 - bahndal.egloos.com/422524

 

리눅스에서 파일을 암호화하고 싶다면 openssl을 활용할 수 있다. 터미널창에서 아래와 같이 입력한다.

 

openssl aes-256-cbc -in my_file.txt -out my_file.enc

 

my_file.txt 파일을 미국의 암호화 표준인 AES로 암호화하여 my_file.enc라는 이름으로 저장하는 예이다. 위와 같이 실행하면 암호를 입력하라는 메시지가 나오는데, 암호를 정해서 넣어주면 되겠다. (대소문자, 수자, 특수기호 등을 섞어서 최소 15자 이상이 되도록 정하는 것을 추천)

 

암호화하면 암호화된 파일이 새로 생기고 원본 파일도 그대로 있으므로 원본 파일은 rm 명령으로 지워주자.

 

rm my_file.txt

 

아래와 같이 -d 옵션을 주면 원래 파일로 복원할 수 있다. 암호화된 my_file.enc를 복원하여 my_file.txt로 저장하는 예이다.

 

openssl aes-256-cbc -d -in my_file.enc -out my_file.txt

 

마찬가지로 복원을 위해서는 암호를 입력해 주면 된다. shell script에서 파일 암호화를 사용할 때, 암호를 특정 규칙에 의해 자동으로 생성하거나 한번 암호를 입력 받아서 여러개의 파일을 작업해야 할 상황이 있다면 아래와 같은 방식이 유용하다.

 

password_str="my_password"

echo -n "$password_str" | openssl aes-256-cbc -in my_file.txt -out my_file.enc -pass stdin

 

위의 예는 password_str 변수에 저장된 암호를 echo 명령으로 출력하고 openssl에서는 -pass stdin 옵션을 추가해서 암호가 자동으로 입력되도록 하는 것이다. 엔터가 포함되지 않도록 echo 명령에 -n 옵션을 사용했다. 암호는 파이프(|)에 의해 openssl 명령의 입력으로 넘어가기 때문에 암호가 실제로 터미널창 화면에 출력되지는 않는다.

 

복원은 앞에서 예시한 바와 같이 -d 옵션을 사용하면 된다.

 

echo -n "$password_str" | openssl aes-256-cbc -d -in my_file.enc -out my_file.txt -pass stdin

 

암호를 자동으로 입력하는 다른 방법으로 아래의 예시를 보자.

 

openssl aes-256-cbc -in my_file.txt -out my_file.enc -pass pass:my_password

 

위와 같은 방식은 비추천이다. 암호화가 진행되고 있는 도중에 ps 명령으로 프로세스 목록을 보면 암호가 그대로 드러나기 때문이다. echo 명령과 조합하는 방식이 더 낫다.

 

 

728x90
Posted by 반달가면