개요
리눅스 시스템에 대한 이해를 높일 수 있는 프로젝트인 Linux From Scratch - Version 10.1에서 사용된 많은 리눅스 명령어 및 프로그램을 정리하였습니다.
※ 특정 명령어들은 아직 이해되지 않아 정리 못하였습니다.
명령어 및 프로그램
blkid
블록디바이스의 속성을 획득하는 데 사용합니다.
특정 장치의 UUID (universally unique identifier)를 획득할 경우 다음과 같은 옵션을 사용할 수 있습니다.
# blkid -s <tag> -o <format> <dev>
$ sudo blkid -s UUID -o value /dev/sdb3
-s <tag>
: show specified tags(s)-o <foramt>
: 출력형식을 지정하는 데 사용합니다.
tee
표준 입력을 받아들여, 표준출력과 파일 양측으로 동시에 출력하는 데 사용하는 명령어입니다.
# tee [OPTION] ... [FILE]
$ echo `hello` | tee -a temp.txt
-a
: 파일을 덮어쓰지 않고, 덧붙입니다.
wget
웹서버에서 콘텐츠를 가져오는 리눅스 명령어입니다.
# wget [OPTIONS] ... [URL] ...
$ wget --input-file=wget-list --continue --directory-prefix=$LFS/sources
-i <FILE>
: <FILE>
에 기술되어 있는 URL에서 다운로드합니다.-c
: resume getting a partially-downloaded file-P <PREFIX>
: <PREFIX>
폴더에 파일을 저장합니다.
참고
grep
텍스트를 검색하여 정규표현식과 일치하는 라인을 출력하는 명령어입니다.
$ grep -oP "([^\/]+$)" wget-list | sort -f > manifest
-o
:-P
: Perl 호환 정규식(PCRE)을 사용한다.-nrI
:
wget-list 파일에서 패턴()과 일치하는 라인을 검색, 해당 검색 결과를 sort 한 후 manifest 파일로 저장
참고 : 특정 텍스트가 포함된 모든 파일 출력하기
$ grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
: Recursive-n
: 라인 번호-w
: 전체 단어-l
: (소문자 L) 파일 이름만 필요한 경우 사용-e
: 검색할 패턴
효율적인 검색을 위해 다음과 같이 --exclude
, --include
, --excluede-dir
플래그를 사용할 수도 있습니다.
.c
나.h
확장자의 파일만 검색합니다.
$ grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
.o
확장자의 파일은 검색에서 제외합니다.
$ grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
더 상세한 내용은 man grep
을 참고합니다.
출처 : How do I find all files containing specific text on Linux? - Stackoverflow.com
sort
입력을 옵션에 따라 텍스트 파일에 줄단위로 정렬하는 명령어입니다.
# sort [OPTION] ... [FILE]
$ ls /mnt/lfs/sources | sort -f > downloaded
-f
: 대소문자 구별 없이 정렬합니다.
diff
줄 단위로 두 개의 파일을 비교하는 명령어입니다.
# diff [OPTION] ... FILES
$ diff manifest downloaded
ln
파일의 링크를 생성하는 명령어입니다.
# ln [OPTION] ... TARGET ... DIRECTORY
$ sudo ln -sv $LFS/tools /
-s
: 심볼릭 링크를 생성합니다.-v
: 상세(verbose)
심볼릭링크 : 윈도우의 바로가기와 같은 개념
하드 링크 : 원본의 복제본 (mirror backup)
groupadd
그룹을 생성합니다.
# groupadd [options] group
useradd
신규 사용자를 생성하거나, 신규 사용자의 기본정보를 갱신합니다.
# useradd [OPTIONS] LOGIN
$ sudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs
-s <shell>
: 사용자가 사용할 쉘을 지정합니다.-g <group>
: 신규 사용자의 초기 그룹을 지정합니다.-m
: 홈 디렉터리를 /home/username
으로 생성합니다.-k <SKEL_DIR>
: -m
옵션과 함께 사용합니다. 홈 디렉터리에 복사할 파일 및 디렉터리를 지정합니다.
passwd
사용자의 암호를 변경합니다.
# passwd [OPTION] [USER]
$ sudo passwd lfs # set password
chown
파일의 소유자와 그룹을 변경합니다.
$ sudo chown -v lfs $LFS/tools
$ sudo chown -v lfs $LFS/sources
su
명령어를 다른 사용자 및 그룹의 권한으로 실행합니다.
# su [OPTIONS] [-] [USER [ARGMENT...]]
$ su - lfs #switch to lfs login shellstac
-
: 로그인 쉘을 시작합니다.
cat
tar
압축 유틸리티입니다.
# tar [OPTIONS] [ARCHIVE]
$ tar -xf binutils-2.36.1.tar.xz && cd binutils-2.36.1
-x
: 아카이브에서 파일을 추출 (extract) 합니다.-f
: 아카이브 파일의 이름을 지정합니다.
time
프로그램을 실행하고 시스템 자원 사용을 측정합니다.
time { ../configure --prefix=$LFS/tools \
--with-sysroot=$LFS \
--target=$LFS_TGT \
--disable-nls \
--disable-werror && \
make -j$(nproc) && \
case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac && \
make install; }
configure
여러분의 시스템에서 소프트웨어를 빌드하는데 필요한 것(컴파일러, 라이브러리 등)들을 확인하여 makefile
을 만들어주는 스크립트입니다. 많은 응용프로그램 소스코드에 함께 포함되어 있습니다.
../configure
make
makefile
에 기술되어 있는 절차에 따라 소프트웨어를 빌드하는 프로그램입니다.
$ make
$ make DESTDIR=$LFS install
-j
: 빌드 작성 시 사용할 cpu core의 개수입니다.
DESTDIR
sed
에디터
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
;;
esac
-e <script>
:-i.orig
:
pushd
디렉터리경로를 스택에 보관(pushd)하고 인출(popd)하는 리눅스 명령어입니다.
patch
$ patch -Np1 -i
-Np1
:-i
:
install
파일을 복사하고 속성(attirbutes)을 설정합니다.
# install [OPTION] ...
install -dv -m 0750 /root
-d
: 모든 인자를 디렉토리 명으로 취급합니다.-m
: 권한을 설정합니다.-v
: 상세 모드(verbose)
cut
touch
파일의 접근, 수정 타임스탬프를 현재로 변경합니다. (빈 파일을 만드는데 주로 사용됩니다.)
touch /var/log/{btmp,lastlog,faillog,wtmp}
strip
expect
install
이상 LFS 프로젝트 수행 시 사용했던 명령어였습니다.
추가
소프트웨어 개발 중 필요에 의해 학습하게 된 명령에 대한 메모입니다.
history
$ history | grep ''
ps
실행 중인 프로세스의 thread 정보를 확인하려면 ps -T
를 사용합니다.
'개발도구 > 기타' 카테고리의 다른 글
[powerShell] "ssh-copy-id" 대등 명령어 (0) | 2021.06.03 |
---|---|
[Doxygen] 설치 및 한글 인코딩 오류 해결 (0) | 2021.05.17 |
[VMware] 공유폴더 사용하기 (0) | 2021.04.17 |
[Ubuntu] 구버전 gcc, g++ 설치 및 기본버전 선택 (0) | 2021.04.17 |
[Makefile] Warning: File 'FileName' has modification time 47475481 s in the future (0) | 2021.04.17 |