리눅스를 공부하며 해당 내용에 대해 기록하고자 명령어를 모아 정리해보려고 한다.
현재 로그인한 사용자의 사용자명 출력
# whoami
root
현재 로그인한 사용자의 이름(실질적으로 활성화된 유저 이름 출력)
참고적으로 공부하기 위해 현재 root 계정을 사용하고 있지만 실무에서는 root 계정을 사용하는건 매우 위험해서 지양된다고 한다. 실무에선 해당 업무를 할 수 있는 새로운 계정을 요청하여 받은 계정을 통해 업무를 수행한다.
최초로 로그인한 계정
중간에 su 명령으로 중도 사용자를 전환했을 때도 최초의 로그인 계정을 출력한다
# logname
user1
# sudo -root
# logname
root
# who
root tty1 2023-01-31 17:35
user1 pts/0 2023-01-31 17:36 (gateway)
로그인한 사용자 계정들
모든 사용자 정보 자세히 출력 (터미널 종류, 로그인 시각 등 정보 출력)
#users
root root
로그인한 사용자 계정의 접속 정보
$who
$w [options] user [...]
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 09:43 1:57m 0.01s 0.01s -bash
root pts/0 gateway 09:43 24:11 0.18s 0.18s -bash
root pts/1 gateway 11:40 3.00s 0.03s 0.02s w
현재 로그인한 사용자 정보와 그 사용자가 실행시킨 프로세스들의 정보 조회
유저 명 / 터미널명 / 호스트명 / 로그인 시간 /IDLE ( 터미널과 상호작용한 시간 )/ JCPU (ty에 연결된 모든 프로세스에서 사용하는 시간) / PCPU (사용자의 현재 프로세스에 사용되는 시간)
시스템 정보
#uname
Linux
#uname-a # 프로세스와 하드웨어 플랫폼을 제외한 모든 정보 출력
Linux [호스트네임] 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
#uname-n # 호스트 이름 출력
#uname-v # 커널의 버전 출력 #1 SMP Tue Jun 28 15:37:28 UTC 2022
#uname-m # 시스템 하드웨어 타입 출력 86_64
#uname-i # 하드웨어 플랫폼 출력 x86_64
호스트 정보
$hostname localhost.localdomain
해당 명령어에 대한 도움말
명령어에 대한 도움말이 조회 가능하다.
리눅스의 매뉴얼 확인 가능
해당 명령어의 사용법이 조회되는데 키보드를 통해 내용을 조회할 수 있다. 이 매뉴얼을 종료하기 위해 키보드 q를 입력하면 종료된다.
#man ls
GNU 프로젝트에서 배포되는 온라인 매뉴얼
man과 유사하게 사용되지만 제공되지 않는 명령어가 많지 않다.
#info ls
현재 어떤 디렉토리 경로에 있는지를 절대 경로로 표시
#pwd
/root
디렉토리에 있는 내용(디렉토리, 파일) 리스트 조회
#ls
a.txt aa.txt b.txt index.html sample.tar.gz test.tar
#ls -al
-rw-------. 1 root root 3513 2월 1 14:09 .bash_history
-rw-r--r--. 1 root root 176 12월 29 2013 .bash_profile
#ls -lh
-rw-r--r--. 1 root root 70 1월 31 11:02 a.txt
-rw-r--r--. 1 root root 57 1월 31 11:21 aa.txt
실무에서 매우 자주 쓰는 명령어라고 한다. 실제로 연습하면서 가장 많이 쓴 명령어이기도 했다.
옵션 | 설명 |
---|---|
-a | all의 줄입말. 모든 숨김 파일 보여줌. 숨김 파일의 경우 파일앞에 .(마침표)로 표시 |
-l | 파일에 대한 상세 정보 출력 |
-r | reverse 줄임말. 출력결과 내림차 순 |
-t | 출력 결과를 파일이 수정된 시간을 기준으로 정렬 |
[입력받은 경로]로 현재 작업하고 있는 디렉토리의 위치를 이동
#cd / # root 디렉토리로 이동
#pwd
/
#cd ~ # 홈 디렉토리로 이동
#pwd
/home/foouser
파일이나 디렉토리를 복사할 때 사용
copy의 줄임말
#cp test.txt copy_test.txt #현재 디렉토리의 test파일을 현 위치에 copy_test.txt로 복사
옵션 | 설명 |
---|---|
-f | 복사 대상 파일이 있을 경우 사용자에게 확인 없이 강제로 복사 |
-R / -r | 디렉토리를 복사할 경우 하위 디렉토리/파일 모두 복사 |
-v | 복사 진행 상태 출력 |
-a | 원본 파일의 속성, 링크 모두 복사 |
-v | 복사 진행 상태 출력 |
파일이나 디렉토리를 이동 시킬 때 사용
move의 줄임말
#mv mv test.txt test_folder # test.txt 파일을 test_folder 디렉토리로 이동
#mv test.txt copy_test.txt #cp처럼 해당 파일을 copy_test.txt 로 이름 바꾸기
실무에서는 기존 것을 삭제하는 것이 아니라 mv를 통해 파일명만 변경하여 사용한다.
새로운 디렉토리 생성
make directory 의 약어
경로를 지정하지 않을 경우 현재 위치에 디렉토리를 생성한다.
#mkdir test
#ls -al
drwxr-xr-x. 2 root root 6 2월 5 15:16 test
#mkdir -p a/test2 #상위 디렉토리도 함께 생성
디렉토리를 지우는 명령어 (지우려고 하는 디렉토리가 비어있지 않으면 삭제 되지 않는다)
remove directories 의 약어
#rmdir test3/ # 해당 디렉토리가 비어있다면 삭제 됨
#rmdir test2/ # 디렉토리가 비어있지 않을 경우 오류 발생
디렉토리가 비어있지 않아 발생한 오류
파일이나 디렉토리 삭제
remove의 약어
#rm /home/test/test1.txt #test1.txt 파일 삭제
#rm -r /home/test
#rm -rf * #현재 위치의 모든 파일 제거
#rm *.txt #현재 위치의 .txt로 끝나는 모든 파일 삭제
-r 옵션 : 디렉토리 내부의 모든 내용 삭제
-f 옵션 : 강제로 파일이나 디렉토리를 삭제
특히나 rm-rf 명령어는 조심해야 한다.
=> 실수로 모든 파일과 디렉토리가 강제로 삭제되는 일이 생길 수 있으므로 조심해야 한다. 실무에서는 특히 더 조심히 써야한다. 지양하는 게 제일 좋을 것 같다.
파일 소유권 변경. 파일과 디렉토리의 사용자, 그룹을 변경 가능
#chown -r user1 file1.txt # 경로와 그 하위 파일들 모두 변경
#그룹을 입력하지 않으면 소유자만 변경
옵션 | 설명 |
---|---|
-c | 수정된 파일들만 상세 표시 옵션 |
-t | 간략한 정보 표시 |
-R | 지정한 디렉토리 포함하여 하위파일까지 변경 |
파일 / 디렉토리 권한(허가권) 변경
#chmod -r 777 file1.txt # 경로와 그 하위 파일들 모두 변경
리다이렉션을 이용하여 명령의 출력을 변경할 수 있다
Redirection | 설명 |
---|---|
> | 해당 파일이 없을 경우 새로 생성. 기존의 내용을 덮어쓰고 입력 |
>> | 입력한 내용을 기존의 내용에 추가함 |
각기 다른 명령어를 |(파이프)를 통해 연결하여 사용 가능
파일 내용을 단순 출력하거나 파일 생성/저장
cat 명령어는 concatenate 에서 따온 이름. 일반적으로 CAT 명령어와 pipe 를 함께 사용하여 가독성을 높이는 방식으로 사용한다
#cat > file.txt # 내용을 입력할 수 있도록 입력창이 활성화 됨
HELLO
#cat file.txt # 파일 내용을 화면에 출력
HELLO
#cat >> file.txt
GOOD BYE
#cat > file.txt
HELLO GOOD BYE # 기존 내용이 삭제되지 않고 출력 됨
#cat .bash_history | more
#cat .bash_history | less
.bash_history | more 엔터를 통해 일부씩 추가하여 확인 가능
.bash_history | less 파일의 내용을 vim 편집기로 확인
특정 파일에서 지정한 문자열이나 정규 표현식을 포함한 행을 출력
실무에서 검색을 위해 사용한다.
#ps -ef #실제로 실행중인 모둔 프로세스의 정보를 모두 출력
#ps -ef | grep ssh # ssh를 포함한 프로세스의 정보를 출력
파일의 마지막 부분 출력
#tail -f 파일명 |grep '키워드'
실제로 실무에서는 grep 명령어와 함께 사용하고 오류나 파일 로그를 실시간으로 확인할 때 사용한다
#tail -f test.log | grep 'Exception' # 로그가 많을 경우 특정 키워드로 검색 시 사용
명령어 자동 완성
#/etc/sysconfig/network-scripts 경로로 이동시
#cd /e #e까지만 쓰고 tab키를 누르면 etc 자동 완성
여러개가 있을 때는 자동완성이 되지 않는다.
#/etc/s #tab을 두 번 누르면 동일한 단어로 시작화는 디렉토리 명 모두 조회 가능하다. 아래는 tab 두번을 눌렀을 때 실행 예시이다.