리눅스 배시 체크시트
일부 도구의 명령줄 매개변수
Page content
이 목록은 매우 포괄적이지 않으며, 저에게 유용한 것들만 포함되어 있습니다.
Linux Ubuntu 버전 확인
방법 1
lsb_release -a
다음과 같은 결과를 생성합니다.
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
방법 2
cat /etc/os-release
다음과 같은 결과를 생성합니다.
NAME="Linux Mint"
VERSION="22.1 (Xia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.1"
VERSION_ID="22.1"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=xia
UBUNTU_CODENAME=noble
아카이빙 및 언아카이빙
압축
tar -zcvf archive-name.tgz directory-name
압축 해제
tar -zxvf archive-name.tgz
원격 서버
원격 서버에 사용자 신원 전달
ssh-copy-id user@10.0.0.225
이렇게 하면 다음에 비밀번호 없이 로그인할 수 있습니다.
ssh user@10.0.0.225
파일 업로드
scp ~/file.ext user@host-ip:/home/user/file.ext
폴더와 내부 내용을 재귀적으로 다운로드
scp -r user@host-ip:/home/user/dir ~/dir
폴더 및 파일
존재 여부 확인
# 폴더가 존재하지 않으면 생성하고 중간 폴더도 함께 생성
[ -d $repdir ] || mkdir -p $repdir
# 또는
if [ -d $fname ]; then
echo "파일이 존재하지 않습니다: $fname"
return
fi
특정 사용자에게 폴더 생성
sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1
폴더 내 파일 반복
# 이 명령은 특정 폴더의 모든 jpg 파일을 fits로 변환합니다
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
모든 파일을 하나로 병합
cat ./* > merged.txt
crontab에 명령 실행 추가
(crontab -l 2>/dev/null | \
grep -v control-marker-1; \
echo '*/15 * * * * /bin/bash /home/user/stest/stest.sh /home/user/stest >> /home/user/stest/stest.log 2>&1 #control-marker-1') | \
crontab -
여기서:
- */15 - 15분마다 실행
- control-marker-1 - 이 명령을 cron 구성에서 업데이트할 때 사용하는 식별자
- /bin/bash - 실행할 명령
- /home/user/stest/stest.sh - bash 인수 - 이 스크립트를 실행할 bash
- /home/user/stest - 스크립트 인수 - $1로 액세스됨
- /home/user/stest/stest.log - stest.sh의 콘솔 출력을 기록하는 로그 파일
확인
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
로그
라이브 로그 파일 보기
sudo tail -f /var/log/megalog.log
curl의 상태 코드
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# 또는
url='http://localhost:8080/'
status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})
[[ $status == 500 ]] || [[ $status == 000 ]] && echo restarting ${url} # 시작/재시작 로직 수행
ssh 명령어를 로그오프 후에도 실행
프로세스가 전경에서 실행되고 있다고 가정하면, 다음을 수행합니다.
- ctrl-Z, 그리고:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
JSON 생성
jo 설치
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
다음과 같은 출력을 생성합니다.
{"model":"a", "prompt":"b", "stream":false}
조금 더 복잡한 예:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
JSON 포맷팅
다음 사용:
| jq .
위의 JSON을 포맷팅하려면:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
포맷팅된 JSON은 다음과 같습니다:
{
"model": 123,
"prompt": 456,
"stream": false
}
JSON 파싱 및 특정 필드 값 반환
먼저 jq 설치
sudo apt-get install jq
사용:
| jq -r '.fieldName'
예를 들어, Ollama에 대한 호출 결과를 파싱하는 방법:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
파일 내 단어 수 확인
단어 수:
wc -w filename.txt
다음과 같은 결과를 반환합니다.
261 filename.txt
정수만 반환하려면, 첫 번째 단어인 숫자를 잘라냅니다.
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
또는 다음과 같이 wc를 사용할 수 있습니다:
words=`wc -w < filename.txt`
echo "$words words"
디렉토리가 HDD에 차지하는 공간 확인
du ~/dirname
실행 중인 스크립트가 위치한 폴더 이름 확인
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
스크립트 실행 시간 측정
time 함수를 사용하는 방법:
time your_script.sh
다른 방법은 약간 더 복잡합니다:
start=`date +%s`
# 매우 중요한 코드
# 여기에 작성
end=`date +%s`
runtime=$((end-start))
두 파일을 VS Code로 비교
code -d <file 1> <file 2>
Ubuntu 저장소에 있는 사용 가능한 패키지 확인
sudo apt-cache policy <packageName>