## home directory에서 실행
$ pwd
/home/ubuntu
경로 이동
예시
절대 경로
$ cd /home/ubuntu/workspace/user/joy
$ pwd
/home/ubuntu/workspace/user/joy
상대 경로
$ pwd
/home/ubuntu/workspace/user/joy
$ cd ..
$ pwd
/home/ubuntu/workspace/user/
$ ls [옵션] [파일명 혹은 폴더명]
$ ls
file1 joyBoard
$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu 0 Oct 22 16:21 file1
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 22 01:46 joyBoard
$ ls -a
. .. file1 joyBoard
$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Oct 22 16:21 ./
drwxrwxr-x 6 ubuntu ubuntu 4096 Oct 19 10:30 ../
-rw-rw-r-- 1 ubuntu ubuntu 0 Oct 22 16:21 file1
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 22 01:46 joyBoard/
파일 또는 디렉토리 복사
디렉토리 복사 시 -r
옵션 지정 필요
예시
파일 복사(file1 → joyfile)
$ ls
file1
$ cp file1 joyfile
$ ls
file1 joyfile
디렉토리 복사(testdir → joydir)
$ ls
testdir
$ cp -r testdir joydir
$ ls
joydir testdir
파일 또는 디렉토리를 원하는 위치로 이동
이름을 변경하는 용도로도 사용
기본 Syntax
$ mv [-option] [sources] [target]
예시
파일 이동
$ ls
joyfile testdir
$ mv joyfile testdir
$ ls
testdir
$ ls testdir
joyfile
디렉토리 이동
$ ls
testdir joydir
$ mv joydir testdir
$ ls
testdir
$ ls testdir
joydir
$ mkdir [-m mode] [-p] [디렉토리명]
-p
: 하위 디렉토리까지 한 번에 생성기본
$ mkdir testdir
$ ls
testdir
하위 디렉토리까지 생성
$ mkdir -p testdir/innerdir/
$ ls
testdir
$ ls testdir
innerdir
$ rm [옵션] [파일명 / 디렉토리명]
-r
: 디렉토리 삭제 시 지정-f
: 삭제 여부를 묻지 않고 바로 삭제파일 삭제
$ ls
file1 joyfile
$ rm file1
$ ls
joyfile
삭제 여부 묻지 않고 디렉토리 삭제
$ ls
joydir testdir
$ rm -rf testdir
$ ls
joydir
$ touch [OPTION] [파일이름]
$ touch testfile
$ ll
-rw-rw-r-- 1 ubuntu ubuntu 0 Oct 31 21:01 testfile
$ touch -a test.txt
$ touch -t 201306141200 test.txt
$ cat [옵션] [파일명]
파일 내용 출력
$ cat testfile
hello, world!
여러 개의 파일을 합쳐 하나의 파일로 생성
$ ls
file1 file2
$ cat file1 file2 > file3
$ ls
file1 file2 file3
기존 한 파일의 내용을 다른 파일에 덧붙임
## file1, file2의 내용 확인
$ cat file1
my name is revit.
$ cat file2
Nice to meet you!
$ cat file1 >> file2
$ cat file2
Nice to meet you!
my name is revit.
새로운 파일 생성
$ ls
file1 file2
$ cat > testfile
this is testfile. # 내용 작성, 종료 시 ctrl + d 로 내용 저장
$ ls
file1 file2 testfile
$ cat testfile
this is testfile.
$ tail [옵션] [파일]
-[숫자]
: 지정한 숫자만큼 행 출력-f
$ tail loggr-syslog-agent.stderr.log
2021/10/25 09:24:22 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:24:44 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:25:05 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:25:27 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:25:49 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:26:10 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:26:32 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:26:54 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:27:15 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:27:37 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
## 3줄 출력
$ tail -3 loggr-syslog-agent.stderr.log
2021/10/25 09:26:54 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:27:15 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:27:37 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
$ tail -f loggr-syslog-agent.stderr.log
2021/10/25 09:24:22 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:24:44 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:25:05 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
2021/10/25 09:25:27 failed to fetch bindings: Get "https://q-s0.scheduler.default.paasta.bosh:9000/bindings": dial tcp xxx.xxx.xxx.xxx:9000: connect: connection refused
...(생략)...
특정 파일이나 디렉토리 검색
기본 Syntax
$ find [검색 경로] -name [파일명]
옵션
-exec
: 명령어 실행-type
: 디렉토리나 파일만 지정하여 검색예시
확장자명 검색
$ find /home/ubuntu/workspace/user/joy/joyBoard -name '*.war'
/home/ubuntu/workspace/user/joy/joyBoard/demo-0.0.1-SNAPSHOT.war
확장자가 .PNG인 파일만 찾아 삭제
$ ls
testfile.txt error1.PNG
$ find ./ -name "*.PNG" -exec rm {} \;
$ ls
testfile.txt
확장자가 .txt인 파일만 찾아 파일 내용 수정
$ cat testfile.txt
Hi, my name is revit.
$ find ./ -name "*.txt" -exec sed -i 's/Hi/Hello/g' {} \;
$ cat testfile.txt
Hello, my name is revit.
파일만 검색
$ find ./ -type f
./file2
./file1
./joyBoard/demo-0.0.1-SNAPSHOT.war
./file33
./testfile.txt
./testfile
파일명 검색
$ find /home/ubuntu/workspace/user/joy/ -name 'file1'
/home/ubuntu/workspace/user/joy/file1
파일 이름에 특정 문자열이 포함된 파일 검색
$ find -name "*git*"
./.gradle/wrapper/dists/gradle-7.2-bin/dfsdf93dsdfsdf33gg/gradle-7.2/lib/plugins/org.eclipse.jgit-5.7.0.202003110725-r.jar
./workspace/user/joy/BACKUP/20210510_paasta_deployment_backup/.git
./workspace/user/joy/BACKUP/20210510_paasta_deployment_backup/deployment/paasta-deployment/bosh/tests/.gitignore
./workspace/user/joy/BACKUP/20210510_paasta_deployment_backup/deployment/paasta-deployment/bosh/.gitignore
./workspace/user/joy/BACKUP/20210510_paasta_deployment_backup/deployment/paasta-deployment/paasta/units/vendor/github.com
./workspace/user/joy/BACKUP/20210510_paasta_deployment_backup/deployment/paasta-deployment/paasta/.gitignore
./workspace/user/joy/BACKUP/20211018-joy-paasta-5.5.2/deployment/paasta-deployment/bosh/tests/.gitignore
...
$ chmod [OPTION] [MODE] [FILE]
현재 경로에 있는 모든 .sh 파일에 실행 권한 부여
$ ll
-rw-rw-r-- 1 ubuntu ubuntu 251 Oct 25 15:26 deploy-gcp.sh
-rw-rw-r-- 1 ubuntu ubuntu 270 Oct 25 15:26 deploy-openstack.sh
$ chmod +x ./*.sh
$ ll
-rwxrwxr-x 1 ubuntu ubuntu 251 Oct 25 15:26 deploy-gcp.sh*
-rwxrwxr-x 1 ubuntu ubuntu 270 Oct 25 15:26 deploy-openstack.sh*
파일을 소유한 그룹과 그 외 사용자의 모든 권한 제거
$ ll
-rw-rw-r-- 1 ubuntu ubuntu 18 Oct 31 21:04 file1
$ chmod go-rwx file1
$ ll
-rw------- 1 ubuntu ubuntu 18 Oct 31 21:04 file1
$ ifconfig [interface] [option] [address] [up/down]
IP 주소 확인
$ ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1400
inet xxx.xxx.xxx.xxx netmask 255.255.255.0 broadcast 10.200.4.255
inet6 ge80::d816:3eff:fed2:fd53 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:d2:fd:53 txqueuelen 1000 (Ethernet)
RX packets 228713 bytes 2067431097 (2.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 263617 bytes 1978677503 (1.9 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1202 bytes 96240 (96.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1202 bytes 96240 (96.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0이라는 이더넷에 아이피 192.168.0.9를 설정하고, 서브넷마스크를 255.255.255.224로 설정
## ifconfig 이더넷명 주소 netmask 주소 broadcast 주소
$ ifconfig enp0 xxx.xxx.xxx.xxx netmask 255.255.255.224
이더넷(네트워크 인터페이스) 활성화/비활성화
## ifconfig 이더넷명 [up/down]
$ ifconfig enp0 up
전송 제어 프로토콜, 라우팅 테이블, 네트워크 인터페이스, 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 도구
기본 Syntax
$ netstat [-m] [-n] [-s] [-i | -r] [-f address-family]
예시
연결을 기다리는 목록과 프로그램 출력
$ netstat -nap
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
...(생략)...
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ] DGRAM 69776 9627/systemd /run/user/1000/systemd/notify
unix 2 [ ACC ] SEQPACKET LISTENING 13007 - /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 69779 9627/systemd /run/user/1000/systemd/private
...(생략)...
unix 3 [ ] DGRAM 12981 -
unix 3 [ ] STREAM CONNECTED 17984 -
unix 3 [ ] STREAM CONNECTED 16429 - /run/systemd/journal/stdout
특정 포트가 사용 중인지 확인
$ netstat -an | grep 6010
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN
tcp6 0 0 ::1:6010 :::* LISTEN
라우팅 정보 출력
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 xxx.xxx.xxx.1 0.0.0.0 UG 0 0 0 ens3
xxx.xxx.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
xxx.xxx.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
xxx.xxx.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
xxx.xxx.3.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
xxx.xxx.4.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
xxx.xxx.5.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
xxx.xxx.6.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
169.254.169.254 xxx.xxx.2 255.255.255.255 UGH 0 0 0 ens3
TCP listening 상태의 포트와 프로그램 출력
$ netstat -lnpt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:6010 :::* LISTEN -
Tip
$ netstat -antplF
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9050 0.0.0.0:* LISTEN -
Local Address
: 현재 열려 있거나 listening 하고 있는 ip, port0.0.0.0
: all interface를 받음127.0.0.1
: 자기자신만 호출 가능(loopback)$ ping [목적지] [옵션]
target 호스트 연결 가능 여부 확인
$ ping www.google.com
PING www.google.com (142.251.42.164) 56(84) bytes of data.
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=1 ttl=111 time=40.0 ms
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=2 ttl=111 time=39.8 m
...
$ ping 20.20.1.22
PING 20.20.1.22 (20.20.1.22) 56(84) bytes of data.
64 bytes from 20.20.1.22: icmp_seq=1 ttl=64 time=0.611 ms
64 bytes from 20.20.1.22: icmp_seq=2 ttl=64 time=0.233 ms
...
ping이 종료된 후 보낼 ECHO_REQUEST 수 지정
$ ping -c 5 www.google.com
PING www.google.com (142.251.42.164) 56(84) bytes of data.
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=1 ttl=111 time=39.9 ms
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=2 ttl=111 time=40.0 ms
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=3 ttl=111 time=40.2 ms
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=4 ttl=111 time=40.0 ms
64 bytes from nrt12s46-in-f4.1e100.net (142.251.42.164): icmp_seq=5 ttl=111 time=40.1 ms
--- www.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 39.958/40.098/40.293/0.211 ms
디렉토리의 구조, 파일의 속성들을 보존하면서 여러 개의 파일을 하나의 큰 파일로 묶기 위해 주로 사용
기본 Syntax
$ tar [옵션] [경로]
예시
tar로 압축하기
$ tar -cvf [파일명.tar] [폴더명]
## ex) abc 폴더를 aaa.tar로 압축
$ tar -cvf aaa.tar abc
abc/
abc/test.txt
abc/test2.txt
$ ll
total 5892
drwxr-xr-x 3 ubuntu ubuntu 4096 Nov 1 09:47 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Nov 1 09:43 ../
-rw-rw-r-- 1 ubuntu ubuntu 10240 Nov 1 09:47 aaa.tar
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 1 09:46 abc/
-rw-rw-r-- 1 ubuntu ubuntu 6006320 Sep 28 07:37 credhub-linux-2.9.1.tgz
tar 압축 풀기
$ tar -xvf [파일명.tar]
## ex) aaa.tar 파일 압축해제
$ tar -xvf aaa.tar
abc/
abc/test.txt
abc/test2.txt
$ ll
total 5892
drwxr-xr-x 3 ubuntu ubuntu 4096 Nov 1 09:48 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Nov 1 09:43 ../
-rw-rw-r-- 1 ubuntu ubuntu 10240 Nov 1 09:47 aaa.tar
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 1 09:46 abc/
-rw-rw-r-- 1 ubuntu ubuntu 6006320 Sep 28 07:37 credhub-linux-2.9.1.tgz
tar.gz로 압축하기
$ tar -zcvf [파일명.tar.gz] [폴더명]
## ex) abc 폴더를 aaa.tar.gz로 압축
$ tar -zcvf aaa.tar.gz abc
abc/
abc/test.txt
abc/test2.txt
$ ll
total 5884
drwxr-xr-x 3 ubuntu ubuntu 4096 Nov 1 09:49 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Nov 1 09:43 ../
-rw-rw-r-- 1 ubuntu ubuntu 186 Nov 1 09:49 aaa.tar.gz
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 1 09:46 abc/
-rw-rw-r-- 1 ubuntu ubuntu 6006320 Sep 28 07:37 credhub-linux-2.9.1.tgz
tar.gz 압축 풀기
$ tar -zxvf [파일명.tar.gz]
## ex) aaa.tar.gz 압축파일 해제
$ tar -xzf aaa.tar.gz
$ ll
total 5884
drwxr-xr-x 3 ubuntu ubuntu 4096 Nov 1 09:50 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Nov 1 09:43 ../
-rw-rw-r-- 1 ubuntu ubuntu 186 Nov 1 09:49 aaa.tar.gz
drwxrwxr-x 2 ubuntu ubuntu 4096 Nov 1 09:46 abc/
-rw-rw-r-- 1 ubuntu ubuntu 6006320 Sep 28 07:37 credhub-linux-2.9.1.tgz
$ scp [options ...] [source] [target]
$ scp /home/example.txt test@141.211.xx.xxx:/home/test
$ scp -r scp_directory scp_test ubuntu@10.20.1.110:/tmp
$ scp test@141.211.xx.xxx:/home/test.txt /home/example
$ scp test@141.211.xx.xxx:/home/test.txt gildong@141.223.xx.xxx:/home/example
$ ssh [host주소] -i [key file]
```shell
$ ssh ubuntu@20.20.1.22 -i joy-key.ppk
```
+ port를 지정하여 접속
```shell
$ ssh -p 12022 ubuntu@20.20.1.22
```
+ ssh 접속 후 명령어 수행
```shell
$ ssh ubuntu@20.20.1.22 ps -ef
```
명령에 대한 매뉴얼 확인
예시
$ man ls
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
...
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Oct27 ? 00:00:03 /sbin/init
root 2 0 0 Oct27 ? 00:00:00 [kthreadd]
root 4 2 0 Oct27 ? 00:00:00 [kworker/0:0H]
root 6 2 0 Oct27 ? 00:00:00 [mm_percpu_wq]
root 7 2 0 Oct27 ? 00:00:00 [ksoftirqd/0]
root 8 2 0 Oct27 ? 00:00:01 [rcu_sched]
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 225188 8572 ? Ss 09:02 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 09:02 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I 09:02 0:00 [kworker/0:0]
$ ps -U root -u root
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 mm_percpu_wq
7 ? 00:00:00 ksoftirqd/0
프로세스에 특정한 signal을 보내는 명령어
종료되지 않는 프로세스를 종료 시킬 때 많이 사용
기본 Syntax
$ kill [options or 시그널 (번호 또는 이름) ] <pid>
예시
signal의 종류 출력
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
안전하게 종료
$ kill -INT 123
or
$ kill -2 123
강제 종료
$ kill -9 123
이전에 입력한 명령어 및 고유 식별 번호 출력
예시
이전에 입력한 명령어 조회
$ history
998 ll
999 cf apps
1000 cf create-buildpack java_buildpack_pinpoint java-buildpack-pinpoint-monitoring-offline-745b745.zip 12
1001 bosh vms
1002 cf buildpacks
history 번호로 명령어 실행
$ history
...
135 ls -al bin\
136 cd ..
137 ls
138 cat company.json
...
$ !137
AdventureWorks.xlsx company.json Sales.xlsx
바로 직전 명령어를 실행
## 이전 명령어에 추가해서 실행
$ !! | grep Linux
## 이전 명령어를 sudo로 실행
$ sudo !!
## 출력 결과를 파일이나 스크립트로 저장
$ echo !! >> script.sh
$ source /etc/profile
파일을 다운로드하기 위한 명령어
기본 Syntax
$ wget -O [저장할 파일명] [다운로드 url]
예시
다른 이름으로 다운로드
$ wget -O sample.zip https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
--2021-12-02 14:46:09-- https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
Resolving nextcloud.paas-ta.org (nextcloud.paas-ta.org)... xxx.xxx.255.116
Connecting to nextcloud.paas-ta.org (nextcloud.paas-ta.org)|xxx.xxx.255.116|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 316727369 (302M) [application/zip]
Saving to: ‘sample.zip’
sample.zip 100%[======================================================================================================================>] 302.05M 312MB/s in 1.0s
2021-12-02 14:46:10 (312 MB/s) - ‘sample.zip’ saved [316727369/316727369]
$ ll
total 309316
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 2 14:46 ./
drwxr-xr-x 10 ubuntu ubuntu 4096 Dec 2 14:44 ../
-rw-rw-r-- 1 ubuntu ubuntu 316727369 Dec 2 14:46 sample.zip
백그라운드로 다운로드
$ wget -b sample.zip https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
Continuing in background, pid 5922.
Output will be written to ‘wget-log’.
$ ll
total 309316
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 2 14:48 ./
drwxr-xr-x 10 ubuntu ubuntu 4096 Dec 2 14:44 ../
-rw-rw-r-- 1 ubuntu ubuntu 316727369 Dec 2 14:48 download
-rw-rw-r-- 1 ubuntu ubuntu 0 Dec 2 14:48 wget-log
중단된 다운로드 이어받기
$ wget -c https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
--2021-12-02 14:52:03-- https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
Resolving nextcloud.paas-ta.org (nextcloud.paas-ta.org)... 203.255.255.116
Connecting to nextcloud.paas-ta.org (nextcloud.paas-ta.org)|203.255.255.116|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 316727369 (302M), 237949001 (227M) remaining [application/zip]
Saving to: ‘download’
download 100%[+++++++++++++++++++++++++++++=========================================================================================>] 302.05M 332MB/s in 0.7s
2021-12-02 14:52:04 (332 MB/s) - ‘download’ saved [316727369/316727369]
$ ll
total 309316
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 2 14:51 ./
drwxr-xr-x 10 ubuntu ubuntu 4096 Dec 2 14:44 ../
-rw-rw-r-- 1 ubuntu ubuntu 316727369 Dec 2 14:52 download
다운로드 가능 여부 확인
$ wget --spider https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
Spider mode enabled. Check if remote file exists.
--2021-12-02 14:57:44-- https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
Resolving nextcloud.paas-ta.org (nextcloud.paas-ta.org)... 203.255.255.116
Connecting to nextcloud.paas-ta.org (nextcloud.paas-ta.org)|203.255.255.116|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 316727369 (302M) [application/zip]
Remote file exists.
다운로드 폴더 지정 (해당 폴더 없을 시 자동 생성)
$ wget -P download_test https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
--2021-12-02 15:02:28-- https://nextcloud.paas-ta.org/index.php/s/x8Tg37WDFiL5ZDi/download
Resolving nextcloud.paas-ta.org (nextcloud.paas-ta.org)... xxx.xxx.255.116
Connecting to nextcloud.paas-ta.org (nextcloud.paas-ta.org)|xxx.xxx.255.116|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 316727369 (302M) [application/zip]
Saving to: ‘download_test/download’
download 100%[======================================================================================================================>] 302.05M 329MB/s in 0.9s
2021-12-02 15:02:29 (329 MB/s) - ‘download_test/download’ saved [316727369/316727369]
$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Dec 2 15:02 ./
drwxr-xr-x 10 ubuntu ubuntu 4096 Dec 2 14:44 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 2 15:02 download_test/
명령어의 연결
예시
파이프(|
)를 사용하여 명령어의 결과를 |
다음으로 전달할 수 있음
## ls --help에서 sort가 포함된 행을 출력
$ ls --help | grep sort
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
-c with -lt: sort by, and show, ctime (time of last
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
-f do not sort, enable -aU, disable -ls --color
can be augmented with a --sort option, but any
use of --sort=none (-U) disables grouping
...
## ls --help에서 sort와 file이 포함된 행을 출력
$ ls --help | grep sort | grep file
-S sort by file size, largest first
성공한 후에 다음 명령어 실행
## mkdir test 명령어가 성공해야 뒤에 명령어도 실행
$ mkdir test && cd test && touch abc
성공 여부와 상관없이 다음 명령어 실행
## mkdir test 명령어가 실패하더라도 cd 명령어, touch 명령어는 실행
$ mkdir test(실패); cd test; touch abc
텍스트 파일에서 원하는 문자열이 들어간 행을 찾아 출력하는 명령어
주로 log 파일에서 특정 날짜, error 메세지를 찾는데 유용하게 사용
기본 Syntax
$ grep "문자열" [파일 이름][파일 이름]
예시
tomcat이 포함된 프로세스 출력
$ ps -ef | grep tomcat
22180 22151 0 10:19 pts/0 00:00:00 grep --color=auto tomcat
$ su [사용자]
$ su user01
$ su - user01
패키지 설치/ 삭제 도구
데비안, 우분투 계열에서 사용
예시
패키지 업그레이드
$ apt-get upgrade
$ apt-get upgrade [패키지명]
패키지 삭제
$ apt-get remove [패키지명]
$ sudo apt-get remove openjdk*
패키지 및 패키지의 환경설정 모두 삭제
$ apt-get purge [패키지명]
$ sudo apt-get purge openjdk*
remove 또는 purge 명령어로 다른 패키지 삭제 시 --auto-remove 옵션을 주면 패키지를 삭제하면서 불필요한 의존성 패키지들도 함께 삭제
$ sudo apt-get remove --auto-remove openjdk*
$ sudo apt-get purge --auto-remove openjdk*
패키지 설치
$ apt-get install
$ yum install 패키지
$ yum list installed 패키지명
$ yum list all
# 터미널 종료 시 설정 초기화 (일시적)
$ alias [별칭]='명령어'
$ alias pf='ps -ef'
alias pf='ps -ef'
# 현재 계정에 영구적으로 alias 설정
$ vi ~/.bashrc
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias pf='ps -ef'
$ source ~/.bashrc
$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
$ unalias [별칭]
$ unalias pf