-
[42경산] 3기 1차 라피신 회고 - shell 명령어 (2)Linux Shell 2025. 3. 5. 11:43
오늘 포스팅은,
man ascii
cc
alias/export
tr
find
wc
ifconfig
awk
sed
cat /etc/passwd
sort
cut
paste
bc
gnome-terminal
linux shell 명령어를 다룬다.
1. 터미널상에서 아스키코드를 볼 수 있는 man ascii
42경산의 C 라피신은 ASCII(미국 정보 교환 표준 부호)를 봐야 하는 경우가 자주 생긴다.
이럴 때, 외부망과 연결이 차단되어 웹 검색이 불가한 리눅스 계열 환경의 시험에서 유용할 게 써먹을 수 있다.
C 코드 상에서는 char 형으로 선언된 변수를 문자 그대로 사용해서 연산을 하거나,
두 문자의 차이만큼 루프를 돌리는 로직을 자주 사용한다.
- A: 65
- Z: 90
- a: 97
- z: 122
- a - A == 32
man ascii
2. C 컴파일 명령어 cc
C 컴퍼일러를 사용해서 컴파일을 수행하고, 지정한 이름의 out 파일을 생성하는 명령어이다.
gcc 라는 명령어도 존재하지만, 나는 cc 명령어에 태그를 추가해 gcc로 별칭(alias)을 만들어 사용했다.
(alias 는 ~/.zshrc 파일에 정의해 뒀다.)
# alias gcc="cc -Wall -Wextra -Werror" gcc test.c -o test.out
3. alias와 export (환경변수)
alias 추가: alias [변수]='[명령어]'
alias 제거: unalias [등록별칭]
환경변수 설정: export [변수]='[값/경로]'
환경변수 확인: echo $[환경변수]
환경변수 제거: unset [환경변수]
4. 문자를 변환하거나 삭제하는 tr
tr [옵션]... SET1 [SET2]
문자를 변환하거나 삭제하는 데 사용되는 리눅스 명령어이다.
주로 표준 입력에서 문자를 읽어 변환한 후 표준 출력으로 내보낸다.
주요 옵션
- -d, --delete SET1에서 문자들을 삭제
- -s, --squeeze-repeats SET1의 연속된 중복 문자를 하나로 압축
- -c, -C, --complement SET1의 보수를 사용 (SET1에 없는 모든 문자에 대해 작업 수행)
# 1. 소문자를 대문자로 변환 echo "안녕하세요 hello" | tr 'a-z' 'A-Z' # 출력: 안녕하세요 HELLO # 2. 특정 문자 삭제 echo "Hello, World!" | tr -d ',!' # 출력: Hello World # 3. 연속된 문자 압축 echo "안녕하세요요요 세상아아" | tr -s '요 아' # 출력: 안녕하세요 세상아 # 4. 특정 문자 변환 echo "리눅스" | tr '리눅스' '윈도우' # 출력: 윈도우 # 5. 숫자만 남기기 echo "abc123def456" | tr -cd '0-9' # 출력: 123456
5. find
현재 디렉토리와 모든 하위 디렉토리에 있는 일반 파일과 디렉토리의 수를 세고 표시 (시작 디렉토리인 '.' 포함)
find . -type f,d | wc -l
find의 type 옵션
- 한 번에 여러 유형을 검색하려면 쉼표(,)로 구분하여 type 목록을 작성 (GNU 확장)
- `-type c` 파일은 c 유형이다.
- b: 블록(버퍼링됨) 특수
- c: 문자(버퍼링되지 않음) 특수
- d: 디렉토리
- p: 명명된 파이프(FIFO)
- f: 일반 파일 (regular file)
- l: 심폴릭 링크
- `-L` 옵션이나 `-follow` 옵션이 적용되는 경우 심볼릭 링크가 끊어지지 않고 유효해야 검색 작업이 제대로 수행될 수 있다. (끊어진 심볼릭 링크의 경우 find 명령은 무시되거나 오류 처리)
- `-L` 또는 `-follow` 옵션을 사용하면, 심볼릭 링크 자체를 검색하는 것이 아니라 링크가 가지리키는 실제 파일이나 디렉토리를 검색 대상으로 삼는다.
- `-L` 이 적용될 때 심볼릭 링크를 검색하려면 `-xtype`을 사용
- s: socket
- D: door (Solaris)
6. 줄이나 단어 수를 세는 wc
wc [옵션] [파일]
파일에 대한 줄바꿈, 단어, 바이트 수를 출력한다.
두 개 이상의 파일이 지정된 경우 전체 줄을 출력한다.
단어는 공백으로 구분된 0이 아닌 길이의 문자 시퀀스이다.
파일이 없거나 파일이 `-`일 경우 표준 입력을 읽는다.
주요 wd 옵션
항상 줄바꿈, 단어, 문자, 바이트, 최대 줄 길이 순서로 출력한다.
- -l, --lines 줄바꿈 수를 출력
- -w, --words 단어 수를 출력
- -m, --chars 문자 수를 출력
- -c, --bytes 바이트 수를 출력
- -L, --max-line-length 주어진 파일이나 입력에서 가장 긴 행의 문자 수를 출력
- 파일 내에서 가장 긴 줄의 길이를 확인하고자 할 때 유용
7. ifconfig
ifconfig [-v] [-a] [-s] [interface]
네트워크 인터페이스 정보를 출력
이 정보는 네트워크 인터페이스의 상태, 설정, 데이터 흐름 및 오류를 이해하는 데 유용합니다.
ifconfig
- 네트워크 인터페이스 이름: docker0, enp0s31f6, lo, virbr0
- docker0: Docker가 생성한 가상 네트워크 브리지
- enp0s31f6: 실제 물리적 이더넷 인터페이스
- lo: 루프백 인터페이스 (자기 자신과 통신)
- virbr0: 가상화(예: KVM)에서 생성된 가상 브리지
- flags (플래그): 네트워크 인터페이스 상태와 기능을 나타냄
- UP: 인터페이스가 활성화되어 있음.
- BROADCAST: 브로드캐스트 통신 가능
- MULTICAST: 멀티캐스트 통신 지원
- RUNNING: 인터페이스가 활성화되어 작동 중
- LOOPBACK: 루프백 인터페이스
- Maximum Transmission Unit
- 네트워크 인터페이스에서 보낼 수 있는 최대 패킷 크기(바이트).
- ex) mtu 1500은 패킷 크기가 최대 1500바이트임을 나타냅니다.
- 네트워크 인터페이스에서 보낼 수 있는 최대 패킷 크기(바이트).
- IP 주소
- inet: IPv4 주소. 예: 172.17.0.1, 10.12.18.4는 각각 docker0와 enp0s31f6의 IPv4 주소.
- netmask: 서브넷 마스크. 예: 255.255.0.0은 IPv4 서브넷 마스크를 나타냅니다.
- broadcast: 브로드캐스트 주소. 예: 172.17.255.255, 10.12.255.255는 각 인터페이스의 브로드캐스트 주소.
- MAC 주소
- ether: 인터페이스의 하드웨어(MAC) 주소. 예: 02:42:83:1d:54:63, 20:88:10:79:51:86 등.
- RX (수신) 및 TX (송신) 정보
- RX packets / TX packets: 수신/송신한 패킷 수.
- RX bytes / TX bytes: 수신/송신한 데이터 크기. 예: 18047954998 (18.0 GB)는 18GB 데이터를 수신했음을 나타냅니다.
- RX errors / TX errors: 수신/송신 중 발생한 오류 수.
- dropped: 네트워크 트래픽 중 손실된 패킷 수.
- overruns: 네트워크 버퍼 오버플로로 손실된 패킷 수.
- frame: 수신 프레임 오류.
- carrier: 송신 오류(전송 신호 문제).
- collisions: 네트워크 충돌 발생 수.
- inet6 (IPv6 주소)
- 예: fe80::2288:10ff:fe79:5186은 enp0s31f6의 IPv6 주소.
- prefixlen: IPv6 서브넷 크기.
- scopeid: IPv6 주소의 범위 (예: link는 로컬 네트워크를 의미).
- 루프백 인터페이스 (lo)
- 루프백 인터페이스는 시스템 자체와 통신할 때 사용됩니다:
- inet 127.0.0.1: 루프백의 IPv4 주소.
- inet6 ::1: 루프백의 IPv6 주소.
- 기타 정보
- device interrupt: 인터페이스와 연결된 하드웨어 인터럽트 번호 (예: device interrupt 19)
- txqueuelen: 송신 큐 길이. 예: txqueuelen 1000은 송신 대기열의 최대 길이를 나타냅니다.
예제 1. 모든 MAC 주소를 출력하는 방법
ifconfig | awk '/ether/ {print $2}'
- ether라는 문자열이 포함된 줄을 찾고, 두 번째 필드(필드 구분자 기본값: 공백 또는 탭)를 출력
- MAC 주소는 ether 문자가 포함된 줄의 두 번째 필드에 위치
- awk는 기본적으로 공백을 필드 구분자로 상용하므로 자연스럽게 공백이 무시됨
- 네트워크 인터페이스 중에서 MAC 주소와 관련된 정보만 선택적으로 출력
예제 2. 네트워크 인터페이스 이름과 함께 MAC 주소를 출력하는 방법
ifconfig | awk '/^[a-zA-Z0-9]/ {iface=$1} /ether/ {print iface, $2}'
- `/^[a-zA-Z0-9]/ {iface=$1}` 네트워크 인터페이스 이름(예: enp0s31f6, docker0)이 있는 줄을 찾고, 첫 번째 필드(인터페이스 이름)를 iface 변수에 저장
- `/ether/ {print iface, $2}` MAC 주소(ether가 포함된 줄)의 두 번째 필드(MAC 주소)를 출력하며, 인터페이스 이름(iface)과 함께 출력
8. awk
awk '패턴 {액션}' 파일
- 패턴: 특정 조건을 지정합니다. 생략 시 모든 행 선택(예: 특정 단어, 숫자 범위 등)
- 액션: 조건에 맞는 데이터를 처리하거나 출력하는 명령을 작성합니다. 중괄호 포함 생략 시 해당 줄 출력
- 파일: 입력 파일(혹은 명령어 결과)을 지정
awk는 텍스트 데이터를 처리하고 분석하는데 사용되는 텍스트 프로세싱 도구(명령어)이다.
주로 파일이나 명령어의 출력(입력 스트림)에서 특정 패턴을 검색하거나 데이터를 조작하는 데 사용된다.
awk는 입력 파일을 한 줄씩 읽어 각 줄을 필드(열) 단위로 분리, 조건(패턴)을 확인, 조건이 참인 경우 작업 실행한다.간결한 구문. 대용량 텍스트 파일 처리에 효율적이며 다양하 텍스트 형식을 지원한다. (CSV, 로그 등)
유용한 옵션
- -f script.awk 외부 파일에 저장된 스크립트를 실행
- -v 변수=값 awk 내부에서 사용할 변수를 외부에서 설정
(1) awk 기본 사용법
각 줄의 첫 번째 필드를 출력
`{}`를 생략하면 기본적으로 모든 내용을 출력 (= {print $0})awk '{ print $1 }' 파일
(2) 필드 구분자 변경
기본값은 공백이나 탭으로 나누지만, '-F' 옵션으로 변경 가능awk -F ',' '{ print $2 }' 파일.csv
(3) 조건 변경
세 번째 필드의 값이 100보다 큰 경우, 첫 번째와 세 번째 필드를 출력awk '$3 > 100 { print $1, $3 }' 파일
(4) 내장 변수 사용- NR: 현재 처리 중인 줄 번호
- NF: 현재 줄의 필드 개수
- $0: 현재 줄 전체
awk '{ print NR, NF, $0 }' 파일 # 첫 번째 줄부터 ls -l 명령에 대해 홀수번째 줄만 표시하는 명령줄 ls -l | awk 'NR%2==1'
(5) 패턴 사용# 특정 문자열이 포함된 줄 출력 awk '/keyword/ { print $0 }' 파일 # 특정 필드 값 비교 awk '$1 == "value" { print $0 }' 파일
(6) 실용적인 예시- END 블록: 파일을 모두 처리한 후 마지막 작업을 수행
# 로그 파일에서 특정 IP 출력 awk '/192.168.0.1/ { print $0 }' access.log # CSV 파일에서 합계 계산 awk -F ',' '{ sum += $3 } END { print "Total:", sum }' data.csv # 행 번호와 내용 출력 awk '{ print NR ": " $0 }' 파일
(7) ifconfig 예제
echo "MAC 주소 출력\n"; ifconfig | awk '/ether/ {print $2}'; echo "\n네트워크 인터페이스 이름과 MAC 주소 출력\n"; ifconfig | awk '/^[a-zA-Z0-9]/ {iface=$1} /ether/ {print iface, $2}'; echo "\n특정 이름을 제외한 네트워크 인터페이스 이름과 MAC 주소 출력\n"; ifconfig | awk '/^[a-zA-Z0-9]/ {iface=$1} /ether/ && iface !~ /^(lo|docker|virbr)/ {print iface, $2}';
9. sed
sed [옵션] '명령' [파일명]
Unix/Linux 시스템에서 자주 사용되는 스트림 편집기로, 텍스트 데이터를 처리하고 변환하는 데 사용한다.
주요기능으로는 텍스트 검색 및 치환, 특정 행 추가/삭제, 패턴 기반의 필터링, 텍스트 변환 (대소문자 변환 등)이 있다.
sed는 파일을 수정하지 않고, 입력 데이터를 읽어들여 결과를 출력한다.
물론 필요에 따라 파일을 직접 수정할 수도 있다.
주요 명령어 및 사용법
(1) 치환 (s 명령)
- `/g` 플래그: 모든 일치 항목을 변경 (기본적으로 첫 번째 일치 항목만 변경)
- `/i` 플래그: 대소문자를 구분하지 않음# 텍스트를 다른 텍스트로 대체 sed 's/찾을_문자열/바꿀_문자열/' 파일명 # 'hello'를 'hi'로 치환 sed 's/hello/hi/' file.txt # 파일 내 모든 'hello'를 'hi'로 치환 sed 's/hello/hi/g' file.txt
(2) 특정 행 삭제 (d 명령)
파일에서 특정 행을 삭제# 2번째 줄 삭제 sed '2d' 파일명 # 3~5번째 줄 삭제 sed '3,5d' 파일명
(3) 특정 행 추가 (a 명령)# 지정된 행 뒤에 새 텍스트를 추가 sed '2a\추가할 텍스트' 파일명 # 2번째 줄 뒤에 'New line' 추가 sed '2a\New line' file.txt
(4) 특정 행 변경 (c 명령)# 지정된 행을 새로운 텍스트로 대체 sed '3c\새로운 텍스트' 파일명
(5) 패턴 일치하는 행 출력 (p 명령)- 옵션 -n은 기본적으로 모든 출력을 억제하고, 명시적으로 지정한 출력만 표시한다.
- p는 해당 줄을 출력하라는 명령을 의미
# 특정 패턴과 일치하는 행만 출력 sed -n '/찾을_패턴/p' 파일명 # 'error'가 포함된 행 출력 sed -n '/error/p' file.txt
(6) 파일 직접 수정 (-i 옵션)# 결과를 파일에 저장 ((주의!) 원본 파일 덮어쓰기) sed -i 's/hello/hi/g' file.txt
(7) 실전 예제
# 1. 특정 단어 치환 echo "apple orange banana" | sed 's/orange/grape/' # 출력: apple grape banana # 2. 빈 줄 제거 sed '/^$/d' file.txt # 3. 특정 패턴으로 시작하는 행 삭제 sed '/^ERROR/d' file.txt # 4. 파일에서 라인 번호 추가 sed = file.txt | sed 'N;s/\n/\t/' # (1) = 명령은 각 행 줄 번호를 출력함 # 각 행 번호와 해당 행을 번갈아 출력합니다. # apple => 1 # apple # (2-1) N 명령: 다음 행을 읽어와 현재 처리 중인 행에 추가합니다. 결과적으로 한 번에 두 줄을 처리할 수 있습니다. # (2-2) s/\n/\t/ : 줄 바꿈 문자(\n)를 탭 문자(\t)로 바꿉니다. 즉, 라인 번호와 해당 행 사이를 탭으로 구분합니다. # apple => 1 apple # 5. 특정 줄만 출력 # 1번, 3번, 5번 줄 출력 ls -l | sed -n '1p;3p;5p' # 1번 ~ 3번 줄 출력 ls -l | sed -n '1,3p' # 첫 번째 줄부터 시작해서 2줄 간격으로 출력 (홀수 줄만 출력) ls -l | sed -n '1~2p'
언제 awk와 sed를 선택할까?
awk sed 목적 필드(열) 기반 작업, 조건부 처리, 계산 행(줄) 기반 작업, 문자열 대체, 범위 처리 강점 데이터 분석, 열 추출, 조건부 출력 문자열 치환, 정규식 기반 처리 복잡한 조건 처리 적합 (if, else, 연산 가능) 제한적 (패턴 중심) 속도 큰 데이터 처리에 유리 간단한 작업에서는 더 빠를 수 있음 구문 프로그램 스타일 (유연하고 구조화된 작업 가능) 간단한 명령어 스타일 (직관적이고 짧은 구문) 결론
- awk 선택
- 데이터를 열 중심 처리나 조건부 작업(계산, 필터링 등)이 필요한 경우
- 복잡한 논리가 요구되거나 데이터를 구조적으로 분석해야 할 때
- sed 선택
- 텍스트 파일의 행 중심 처리(특정 줄 삭제, 범위 처리, 문자열 치환 등)가 필요한 경우
- 간단한 텍스트 변환 작업(정규식 치환 등)이 필요한 경우
- 둘다 함께 선택: sed로 특정 행을 추출하고 awk로 데이터를 분석하는 방식으로 조합
추가 예제
각 단계는 /etc/passwd 파일을 정리, 필터링, 변환, 조합하여 최종 출력물을 생성
- 단계별 설명
- /etc/passwd 파일을 cat 명령어로 읽음
- 주석 제거: 6번 필드를 제거하고, 파일의 짝수 번째 줄만 출력
- -F 필드 식별자를 기본 설정인 공백에서 콜론으로 설정
- BEGIN {OFS=":"} 결과 출력 필드 구분자(OFS)를 콜론으로 설정
- 로그인 이름 추출: 구분자 콜론(:)을 기준으로 첫 번째 필드(로그인 이름)만 선택
- 로그인 이름의 텍스트 뒤집기
- 역알파벳 순으로 정렬 (sort -r): 역순 정렬 (내림차순)
- 범위 내 줄 선택
- awk를 사용해 FT_LINE1에서 FT_LINE2에 해당하는 줄만 선택
- l1과 l2는 환경 변수로 전달
- 선택된 사용자명을 쉼표와 공백(, )으로 연결해서 한 줄로 출력
- 마지막의 쉼표와 공백(, )을 마침표(.) 치환
- 환경 변수 설정
- export FT_LINE1=2
- export FT_LINE2=4
cat /etc/passwd | \ awk -F ':' 'BEGIN {OFS=":"} NR % 2 == 0 {$6=""; print}' | \ cut -d ":" -f1 | \ rev | sort -r | \ awk -v l1=$FT_LINE1 -v l2=$FT_LINE2 'NR==l1,NR==l2' | \ awk '{printf "%s, ", $0}' | \ sed 's/, $/./'
10. cat /etc/passwd
/etc/passwd 파일은 UNIX 및 Linux 시스템에서 사용자의 계정 정보를 저장하는 텍스트 파일입니다.
이 파일은 각 줄이 하나의 사용자 계정을 나타내며, 다음과 같은 형식으로 구성됩니다.
사용자이름:암호:사용자ID:그룹ID:설명:홈디렉토리:로그인쉘 $1 $2 $3 $4 $5 $6 $7
- 사용자 이름 (username) ($1 필드)
- 사용자의 계정 이름이며 로그인 시 입력하는 이름으로 시스템에서 고유함. (root, nobody 등)
- 암호(password): ($2 필드)
- 암호 필드는 원래 암호화된 사용자 암호를 저장했지만, 보안 문제로 인해 현재는 대부분 x 또는 *로 표시
- `x`: 암호화된 실제 암호는 `/etc/shadow` 파일에 저장됩니다.
- `*` 또는 빈 값: 계정 잠금 상태
- 사용자 ID (UID): ($3 필드)
- 사용자 계정을 식별하는 고유 숫자
- `0`: root (슈퍼유저)
- `1~99`: 시스템 계정 (예약된 계정)
- `1000 이상`: root (일반 사용자 계정, 일부 배포판은 500부터 시작)
- 그룹 ID (GID): ($4 필드)
- 사용자와 연관된 기본 그룹의 ID를 나타낸다.
- `/etc/group` 파일에서 GID를 참조하여 그룹 이름을 확인할 수 있다.
- 설명 (comment):($5 필드)
- 사용자를 설명하는 필드(보통 사용자 이름, 부서 등을 작성)
- 일반적으로 GECOS 필드라고 하며 쉼표로 구분된 여러 정보를 포함할 수 있음
- 사용자 전체 이름, 사무실 번호, 전화번호 등
- 홈 경로 (home directory): ($6 필드)
- 사용자의 홈 디렉토리 경로이며 사용자가 로그인 할 때 시작 디렉토리로 지정된다. (`/home/morkim`, `/root`)
- 로그인 셸 (login shell): ($7 필드)
- 사용자가 로그인 시 실행되는 기본 셸
- `/bin/bash`: Bash 셸
- `/bin/zsh`: Zsh 셸
- `/bin/sh`: POSIX 호환 셸
- `/sbin/nologin` 또는 `/bin/false`: 로그인을 비활성화하기 위해 설정
예시
root:x:0:0:root:/root:/bin/bash 사용자 이름: root 암호: x (/etc/shadow에서 암호 확인) UID: 0 (슈퍼유저) GID: 0 (슈퍼유저 그룹) 설명: root 홈 디렉토리: /root 로그인 셸: /bin/bash morkim:x:1000:1000:KimMorgan:/home/morkim:/bin/bash 사용자 이름: morkim UID: 1000 (일반 사용자) GID: 1000 (기본 그룹) 설명: KimMorgan 홈 디렉토리: /home/morkim 로그인 셸: /bin/bash
11. sort 명령어
sort [옵션] [파일]
텍스트 파일의 줄 들을 정렬하는 명령어
주요 옵션
- -r 역순 정렬 (내림차순)
# 오른차순 정렬 sort [파일] # 내림차순 정렬 (역순 정렬) sort -r [파일]
12. cut 명령어
cut [옵션] [파일]
파일의 각 줄에서 섹션을 제거하는 명령어
주요 옵션
- -d 필드 구분자 (delimiter) 선택 옵션
- -f 필드선택 옵션
cut -d ':' -f 1
13. paste 명령어paste [옵션] [파일]
파일의 줄들을 합치는 명령어주요 옵션
- -d, --delimiters=LIST 필드 구분자를 Tab 대신 LIST의 문자를 재사용
- -s, --serial 입력을 한 줄로 직렬화(줄바꿈을 제거하고 하나의 줄로 합침)
- - 표준 입력(stdin)을 처리하도록 지정하는 역할
- paste는 기본적으로 파일을 입력으로 받는다.
- 파일 입력이 없을 경우 명시적으로 표준 입력(-)을 지정해야 한다.
paste -sd ', ' -
14. 고급 계산기 프로그램 bc
Desk Calculator의 약자로, 유닉스 및 리눅스에서 사용되는 고급 계산기 프로그램입니다.
주로 다양한 수학적 계산을 수행하는 데 사용됩니다.
진법 연산을 위해 awk와 dc를 함께 사용하는 예제
입력받은 각 줄에 대해 계산을 수행
- `$0`: `awk`에서 `$0`은 현재 처리 중인 전체 입력 줄을 의미
- 이 코드에서 $0은 입력된 숫자나 문자열이 됩니다.
- `ibase=5`: `ibase`는 `bc`에서 입력 진법을 설정하는 옵션
- 여기서는 5진법으로 입력을 받겠다고 설정합니다.
- 즉, 후속 계산은 5진법 숫자들을 기반으로 처리됩니다.
- `obase=D`: `obase`는 `bc`에서 출력 진법을 설정하는 옵션
- 여기서는 16진법(D는 16을 의미)으로 출력을 하겠다고 설정합니다.
echo "13" | awk '{print("ibase=5;obase=D;"$0)}' | bc
dc는 후위 표기법 (Reverse Polish Notation, RPN)을 사용하는 계산기이며, 정수 계산을 주로 다룹니다.
- 후위표기법(RPN): 연산자가 피연산자 뒤에 오는 방식입니다. 예를 들어, 3 4 +는 3 + 4와 동일합니다.
- 소수점 계산(-l)은 기본적으로 지원하지 않지만, dc 내에서 소수점을 설정할 수도 있습니다.
dc는 스택 기반으로 작동합니다.
- 계산은 스택을 이용하여 이루어지며, 각 연산은 스택에 쌓인 값을 사용하여 수행됩니다.
터미널 상에서 사용법 (주요 스택 조작 명령어)
- p: 스택에서 가장 위의 값을 출력
- d: 스택에서 가장 위의 값을 복사
- c: 스택에서 가장 위의 값을 제거
- r: 스택에 값을 추가
- q: dc 종료
# dc를 실행하면 계산을 시작할 수 있는 대화형 환경에 들어갑니다. dc # p는 결과를 출력하는 명령어 3 4 + p # 소수점 계산 (l 명령어) 4 3 / p # 정수 계산, 결과는 1 l # 소수점 계산 활성화 4 3 / p # 결과는 1.33333 5 3 + p # 5 + 3 = 8 5 3 - p # 5 - 3 = 2 5 3 * p # 5 * 3 = 15 6 3 / p # 6 / 3 = 2 q # 종료 echo "3 4 +" | dc # 7 echo "10/3" | bc -l # 3.333...(20자리까지)
13. 우분투에서 기본 터미널, 크롬, 디스코드, 슬랙 실행 명령어 찾기
#(1) 기본 터미널 (Ctrl + Alt + T) # `.desktop` 파일에서 실행 명령어 찾기 cat /usr/share/applications/org.gnome.Terminal.desktop | grep Exec= # 터미널 실행 명령어 gnome-terminal # (2) Chrome 명령어 # 기본 브라우저의 `.desktop` 파일 확인 (시스템의 기본 웹 브라우저 설정을 확인) gio mime x-scheme-handler/http # chrome `.desktop` 파일 찾기 find / -name "com.google.Chrome.desktop" 2>/dev/null # chrome 실행 명령어 찾기 cat /var/lib/flatpak/exports/share/applications/cohttp://m.google.Chrome.desktop | grep Exec= # chrome 실행 명령어 /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=/app/bin/chrome cohttp://m.google.Chrome` # (3) Discord 명령어 # 디코 `.desktop` 파일 찾기 find / -name '*discord*' 2> /dev/null | grep ".desktop" # 디코 실행 명령어 찾기 cat /var/lib/flatpak/exports/share/applications/com.discordapp.Discord.desktop | grep Exec= # 디스코드 실행 명령어 /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=discord com.discordapp.Discord # (4) Slack 명령어 # 슬랙 `.desktop` 파일 찾기 find / -name '*slack*' 2> /dev/null | grep ".desktop" # 슬랙 실행 명령어 찾기 cat /var/lib/flatpak/app/cohttp://m.slack.Slack/x86_64/stable/d12f724a177af6efbfe977c934cca969c88f61c1410c4487e02d540c3a30bb49/files/share/applications/com.slack.Slack.desktop | grep Exec= # 슬랙 실행 명령어 /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=cohttp://m.slack.Slack --file-forwarding cohttp://m.slack.Slack @@u %U @@
'Linux Shell' 카테고리의 다른 글
[42경산] 3기 1차 라피신 회고 - shell 명령어 (3) (0) 2025.03.10 [42경산] 3기 1차 라피신 회고 - norminette 문서 핵심 내용 요약 (0) 2025.03.03 [42경산] 3기 1차 라피신 회고 - shell 명령어 (2) (0) 2025.03.03 [42경산] 3기 1차 라피신 회고 - shell 명령어 (1) (0) 2025.02.17