linuxfromscratch:shellcommand

alias dirfind="find -mindepth 1 -maxdepth 1 -type d | sed 's@^./@@'"
dirfind | wc -l    ## 디렉토리 갯수 확인
rm -rf $(dirfind)  ## 설치 완료된 소스 디렉토리 삭제
## 설치 완료된 패키지 디렉토리만 삭제할거면 다음과 같이
alias SearchAndDestroy='find -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \;'

## 현재 디렉토리+생성시간을 추가해서 로그파일 작성
alias lfslog='tee ~/lfs-log/$(case $(basename $(pwd)) in build) echo $(basename $(dirname $(pwd))); ;; *) echo $(basename $(pwd)); ;; esac).$(date "+%Y%m%d_%H%M%S").log' 
time { ./configure .... && make && make install; } | lfslog 

<a href=""></a>                                           ## 현재 창 또는 탭에서 링크 열기
<a target="_blank" rel="noopener noreferrer" href=""></a> ## 새로운 창 또는 탭에서 링크 열기

./configure --prefix=/usr        \
            --bindir=/usr/bin    \
            --localstatedir=/var \
            --disable-logger     \
            --disable-whois      \
            --disable-rcp        \
            --disable-rexec      \
            --disable-rlogin     \
            --disable-rsh        \
            --disable-servers

## Same Command 

./configure --prefix=/usr --bindir=/usr/bin --localstatedir=/var \
            --disable-{logger,whois,r{cp,exec,login,sh},servers}

tar -cf - . | tar -xvf - -C /target_directory

## 크기가 50M 이상이면서 .deb, .vmdk 확장자가 아닌 파일 
## Operator AND = -and,-a, OR= -or = -o, NOT = !
find /media/d/ -type f -size +50M -and ! -name "*deb" -and ! -name "*vmdk"

## 일반적인 grep 으로 다음과 같은 결과가 나왔다.
$ grep 'printf' fileio.c   
                printf("FILE open Error\n");
                printf("chi = %c\n", chi);
                printf("cho = %c\n", cho);
                printf("FILE open Error\n");
                printf("chi = %c\n", chi);
                printf("cho = %c\n", cho);

## -n 옵션을 통해 line 을 볼수 있다.
$ grep -n 'printf' fileio.c 
11:             printf("FILE open Error\n");
18:             printf("chi = %c\n", chi);
19:             printf("cho = %c\n", cho);
25:             printf("FILE open Error\n");
31:             printf("chi = %c\n", chi);
32:             printf("cho = %c\n", cho);

## -v 옵션을 통해 'chi' 문자열이 들어간걸 제외하고 print 했다.
$ grep -n 'printf' fileio.c | grep -v 'chi'
11:             printf("FILE open Error\n");
19:             printf("cho = %c\n", cho);
25:             printf("FILE open Error\n");
32:             printf("cho = %c\n", cho);

## grep 을 두번 사용해서 보고싶은것만 print 했다.
$ grep -n 'printf' fileio.c | grep -v 'chi' | grep -v 'cho'
11:             printf("FILE open Error\n");
25:             printf("FILE open Error\n");

## -Ev 옵션을 통해 여러번 grep 하는것을 파이프(|)로 작성할 수 있다.
$ grep -n 'printf' fileio.c | grep -Ev 'chi|cho'           
11:             printf("FILE open Error\n");
25:             printf("FILE open Error\n");

grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'

// 하위 디렉토리의 모든 파일에서 1행이 #!로 시작해서 python을 끝나는 파일을 찾아서 python을 python3로 변경
#!/usr/bin/env python     # 원본
#!/usr/bin/env python3    # 변경 

df -ht ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        40G   11G   27G  29% /
/dev/sde1       173M   95M   65M  60% /boot
/dev/sde2        19G  1.5G   16G   9% /mnt/debian
/dev/sda1       1.8T  9.7G  1.7T   1% /mnt/1st-bay
/dev/sdb1       1.8T  1.1G  1.7T   1% /mnt/2nd-bay
/dev/sdc1       1.8T   28K  1.7T   1% /mnt/3rd-bay
/dev/sdd1       1.8T   32K  1.7T   1% /mnt/4th-bay

# 읽어들인 NR 레코드(여기서는 Filesystem과 Size) 갯수가 2 이하일때는 awk에서 바로 출력하고 
# 이후에는 출력결과를 sort를 거쳐서 출력
df -ht ext4 | awk 'NR<2{print $0;next}{print $0| "sort"}'
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        40G   11G   27G  29% /
/dev/sda1       1.8T  9.7G  1.7T   1% /mnt/1st-bay
/dev/sdb1       1.8T  1.1G  1.7T   1% /mnt/2nd-bay
/dev/sdc1       1.8T   28K  1.7T   1% /mnt/3rd-bay
/dev/sdd1       1.8T   32K  1.7T   1% /mnt/4th-bay
/dev/sde1       173M   95M   65M  60% /boot
/dev/sde2        19G  1.5G   16G   9% /mnt/debian

참고

# 1q로 한줄만 sed에서 처리하고 종료 나머지는 sort가 처리
df -ht ext4 | { sed -u 1q; sort; }

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        40G   11G   27G  29% /
/dev/sda1       1.8T  9.7G  1.7T   1% /mnt/1st-bay
/dev/sdb1       1.8T  1.1G  1.7T   1% /mnt/2nd-bay
/dev/sdc1       1.8T   28K  1.7T   1% /mnt/3rd-bay
/dev/sdd1       1.8T   32K  1.7T   1% /mnt/4th-bay
/dev/sde1       173M   95M   65M  60% /boot
/dev/sde2        19G  1.5G   16G   9% /mnt/debian

# -r / --recursive : 디렉토리 대상
# -np / --no-parent : 상위 제외
# -R / --reject : 해당 파일 제외
# -P / --directory-prefix=PREFIX : PREFIX/.. 에 파일 저장
wget -r -np -R "index.html*" -P <DIR> lfs/ https://ftp.osuosl.org/pub/lfs/lfs-packages/12.1/

echo CONFIG_EXTRA_FIRMWARE='" '$({ cd /lib/firmware; echo amd-ucode/*; echo amdgpu/re*; echo rtl_nic/*; echo regulatory*; })'"' >> .config
make oldconfig

  • linuxfromscratch/shellcommand.txt
  • 마지막으로 수정됨: 2024/04/29 15:28
  • 저자 baecy