Linux

Ubuntu 운영체제 명령어

LeeJaeJun 2024. 2. 21. 12:04
728x90
반응형

기본 명령어

  • ls: 현재 디렉토리나 지정된 디렉토리의 파일 및 디렉토리 목록을 출력
    • ls [옵션] [디렉토리 또는 파일 경로]
    • 기본 값은 현재 작업 중인 디렉토리
    • -a(-all): 숨김 파일 및 디렉토리를 모두 포함하여 출력
    • -l: 소유자 정보, 그룹 정보, 접근 권한 등 상세한 정보 출력
    • -h(--human-readable): 파일 크기를 MB, GB와 같은 형식으로 출력(그냥 ls만 사용 시 바이트 형식). h 옵션만 주면 파일 크기는 출력이 되지 않기에 l 옵션과 함께 사용하는 것이 좋음
    • -R(--recursion): 하위 디렉토리의 내용까지도 출력
    • -t: 수정시간이 최근인 것부터 출력(내림차순)
    • -s: 크기가 큰 것부터 내림차순 출력
    • -d(--directory): 디렉토리 자체의 정보에 대해서 출력. 하위 디렉토리 내용은 출력안함
$ ls -l
total 24
drwxr-xr-x  2 user user 4096 Feb 19 10:30 Desktop
drwxr-xr-x  2 user user 4096 Feb 19 10:30 Documents
drwxr-xr-x  2 user user 4096 Feb 19 10:30 Downloads
drwxr-xr-x  2 user user 4096 Feb 19 10:30 Music
drwxr-xr-x  2 user user 4096 Feb 19 10:30 Pictures
drwxr-xr-x  2 user user 4096 Feb 19 10:30 Videos
  1. 파일 유형 및 권한 정보(Ex. drwxr-xr-x)
    • 첫 번째 문자 [d] 또는 [-] : 디렉터리 or 파일 구분 ( 디렉터리 : "d", 파일 : "-" )
    • 첫 번째 그룹 [rwx] : 소유 사용자에 대한 read, write, execute 권한
    • 두 번째 그룹 [rwx] : 소유 그룹에 대한 read, write, execute 권한
    • 세 번째 그룹 [rwx] : 기타 사용자에 대한 read, write, execute 권한
    • 해당 문자가 있을 위치에 [-]가 표시되어 있으면 해당 권한이 없는 것을 의미
  2. 하드 링크 수
  3. 파일 소유자
  4. 파일 그룹 소유자
  5. 파일 크기(바이트)
  6. 마지막 수정 날짜 및 시간
  7. 파일 또는 폴더 이름
  • cd: 디렉토리 변경
  • echo: echo 명령어는 인수로 전달되는 텍스트 / 문자열을 표시하는 데 사용. 쉘 스크립트와 배치 파일에서 주로 현재 상태를 화면이나 파일로 출력하는데 사용되는 내장 명령어
    • echo [option] [string]
  • more: 파일 내용을 페이지별로 출력.
    • 매우 긴 파일의 내용을 효율적으로 확인 가능.
    • 위에서 아래로만 읽을 수 있음
    • more [filename]
    • ls -l /etc | more : ls 출력 결과가 길어서 끊어 읽어야할 때 파이프와 함께 사용 가능
  • less: 위에서 아래, 아래에서 위로 둘 다 이동하면서 읽을 수 있음.
    • 화살표키, Page Up, Page Down 모두 작동.
    • 다 읽고 나갈 때는 q를 눌러서 나감
    • less [filename]
  • cat: 파일의 내용을 출력. 2개 이상의 파일을 연결하여 출력할 때 용이
    • cat [filename]
    • cat [filename1, filename2]
  • head: 파일의 앞 부분을 출력 (기본 10줄)
    • head -n 수 [filename]
  • tail: 파일의 끝 부분을 출력 (기본 10줄)
    • tail [filename]
    • tail -f [filename] : f옵션을 사용하여 파일 내용을 실시간으로 감시 가능(로그 확인용)
  • mkdir: 디렉토리 생성
    • mkdir [option] [directory]
  • mv: 파일 또는 디렉토리 이동 또는 이름 변경
    • mv [file1] [file2]
    • mv file1 dir1/
    • 같은 폴더에서 파일, 디렉토리 이동 시 이름 변경
  • cp: 파일 또는 디렉토리 복사
    • cp [file1] [file2]: file1을 복사하여 file2 생성
  • rm: 파일 또는 디렉토리 삭제
    • rm [file]
    • 디렉토리 삭제시 -r 옵션 사용(recursive) -> rmdir과 달리 파일이 들어있는 디렉토리도 삭제
  • sudo: 관리자 권한으로 명령 실행
    • sudo [옵션] [명령어]
# 새로운 디렉토리 생성
mkdir my_directory

# 생성한 디렉토리로 이동
cd my_directory

# 텍스트 파일 생성 및 텍스트 입력
echo "This is a sample text file." > sample.txt

# 파일 내용 확인
cat sample.txt

# 파일에 추가 텍스트 입력
echo "It contains some sample text for demonstration." >> sample.txt

# 수정된 파일 내용 확인
cat sample.txt

# 파일의 첫 번째 줄 출력
# head -n N: 파일의 첫 N줄을 출력
head -n 1 sample.txt

# 파일의 마지막 줄 출력
# tail -n N: 파일의 마지막 N줄을 출력
tail -n 1 sample.txt

# 파일 복사
cp sample.txt sample_copy.txt

# 복사된 파일 내용 확인
cat sample_copy.txt

# 파일 및 디렉토리 삭제
# rm -r directory_name: directory_name 디렉토리를 재귀적으로 삭제
rm sample.txt sample_copy.txt
cd ..
rm -r my_directory
  • touch: 파일 생성 또는 파일의 최근 수정 시간 변경
    • touch [filename]
    • 파일 크기가 0 Byte인 빈 파일 생성
    • 파일 접근시간, 수정시간, 변경시간 등을 수정
# 새로운 파일 생성
touch new_file.txt

# 파일의 최근 수정 시간 변경
# -d 옵션은 파일의 최근 수정 시간을 직접 지정할 때 사용
touch -d "yesterday" new_file.txt
  • ifconfig: 네트워크 인터페이스 정보 확인
  • grep: 파일 내에서 패턴을 검색
# grep 명령어를 통해 검색된 결과는 기본적으로 해당 패턴을 포함하는 줄이 출력됩니다.

# 파일 내에서 "keyword"라는 단어가 포함된 모든 줄을 출력
grep "keyword" file.txt

# 대소문자 구분 없이 검색
grep -i "keyword" file.txt

# 정규 표현식을 사용한 검색
grep "^start" file.txt

# 특정 디렉토리 내의 모든 파일에서 패턴을 검색
grep -r "keyword" directory/

# "file.txt" 파일에서 "keyword"를 검색한 결과를 "result.txt" 파일에 저장
grep "keyword" file.txt > result.txt
  • chown: 사용자 소유권을 변경
    • chown [옵션] 사용자:그룹 파일 또는 디렉토리
# 파일 "example.txt"의 소유자를 "user1"로, 그룹을 "group1"로 변경
sudo chown user1:group1 example.txt
  • find: 파일 시스템에서 파일을 검색하는데 사용
    • find [시작 디렉토리] [옵션] [검색 조건]
    • -name 옵션: 파일 이름으로 검색합니다.
    • -type 옵션: 파일 타입으로 검색합니다 (f: 일반 파일, d: 디렉토리).
    • -size 옵션: 파일 크기로 검색합니다 (+는 초과, -는 미만).
    • -user-group옵션: 파일 소유자 또는 그룹으로 검색합니다.
    • -mtime-atime 옵션: 파일 수정 시간 또는 액세스 시간으로 검색합니다.
    • -exec 옵션: 찾은 파일에 대해 특정 명령을 실행합니다.
    • -print 옵션: 찾은 파일 경로를 출력합니다 (기본 동작).
find /path/to/search -name "filename"

find /path/to/search -type f

find /path/to/search -size +1M

find /path/to/search -user username

find /path/to/search -mtime -7

find /path/to/search -name "*.txt" -exec rm {} \;

find /path/to/search -name "*.txt" -print

find . -name "file*" -type d -delete
# 이 명령어는 find 명령어를 사용하여 이름이 "file"로 시작하는 디렉토리를 찾고, -delete 옵션을 통해 해당 디렉토리를 삭제합니다. 이는 가장 간단하고 직관적인 방법입니다.
find . -type d -name "file*" -exec sh -c 'rm -r "$0"' {} \;
# 이 명령어는 find 명령어를 사용하여 이름이 "file"로 시작하는 디렉토리를 찾고, -exec 옵션을 통해 각 디렉토리를 순회하면서 셸 스크립트를 실행하여 삭제합니다. 이 스크립트는 해당 디렉토리를 -r 옵션을 사용하여 재귀적으로 삭제합니다.
find . -type d -name "file*" -exec rm -r {} +
# 이 명령어는 -exec 옵션에 +를 사용하여 한 번에 여러 디렉토리를 삭제합니다. find 명령어에 의해 찾은 디렉토리들을 rm 명령어에 한 번에 전달하여 처리합니다.

 

다중 명령어

여러 개의 명령어를 결합하여 한 줄에 작성하여 실행할 수 있는 기능

  • | (Pipe): 한 명령어의 출력을 다른 명령어의 입력으로 전달
# 현재 디렉토리의 파일 목록을 출력한 후, 그 중에서 특정한 파일 이름을 필터링하여 출력합니다.
ls | grep "example"
  • ; (Semicolon): 여러 개의 명령어를 순차적으로 실행. 앞선 명령어의 성공, 실패와 관련없이 전부 실행
# 파일을 복사한 후, 복사된 파일의 내용을 출력합니다.
cp source.txt destination.txt; cat destination.txt
  • & (Background): 명령어를 백그라운드에서 실행
# 긴 시간이 걸리는 작업을 백그라운드에서 실행합니다.
long_running_task &
  • && (AND): 첫 번째 명령어가 성공한 경우에만 두 번째 명령어 실행
# 파일을 복사한 후, 성공적으로 복사되었는지 확인하기 위해 해당 파일이 존재하는지 확인합니다.
cp source.txt destination.txt && echo "File copied successfully"
  • ||(OR): 앞선 명령어가 성공하면 뒤의 명령어를 실행하지 않음
#  파일을 복사하려고 시도하고, 만약 파일이 없거나 복사에 실패하면 백업 파일을 생성
cp example.txt backup.txt || touch backup.txt

 

주석

  • 한 줄 주석: # 사용
  • 여러 줄 주석:
    • 주석 시작 부분에 <<'END'
    • 주석 종료 지점에 END

 

SHELL

  • 운영 체제의 사용자와 컴퓨터 자원 간 상호 작용을 중재하는 프로그램 또는 인터페이스
  • 사용자가 키보드로 명령을 입력하고, 그에 대한 결과를 화면에 출력하며, 파일이나 프로그램을 실행하는 등의 기능을 수행
  • 즉, 사용자의 명령어를 운영체제가 알아들을 수 있도록 해석하고 커널에게 전달하고, 커널은 해석된 명령어를 받아 하드웨어에 직접적으로 명령을 내림
  • 명령 해석 (Command Interpretation): 사용자가 입력한 명령을 읽고 해석하여 이를 실행할 수 있는 형태로 변환합니다. 이때 명령은 실행 파일, 내장 명령, 또는 다른 스크립트 파일일 수 있습니다.
  • 프로그램 실행: 사용자가 명령을 입력하면, 셸은 해당 명령을 실행하여 프로그램을 실행하거나 스크립트 파일을 실행합니다.
  • 파일 시스템 관리: 셸은 파일 및 디렉토리를 생성, 삭제, 이동, 복사 등의 작업을 수행할 수 있습니다. 이를 통해 사용자는 파일 시스템을 조작하여 파일을 관리할 수 있습니다.
  • 환경 변수 및 설정 관리: 셸은 환경 변수를 설정하고 관리하여 사용자가 작업하는 환경을 제어합니다. 이를 통해 사용자는 시스템 동작을 조정하고 스크립트 및 프로그램의 실행 방식을 변경할 수 있습니다.
  • 자동화 및 스크립팅: 셸은 여러 명령을 결합하여 스크립트를 작성하고 실행할 수 있습니다. 이를 통해 사용자는 반복적인 작업을 자동화하거나 복잡한 작업을 스크립트로 처리할 수 있습니다.
  • 프로세스 제어: 셸은 백그라운드 및 포그라운드 프로세스를 관리하고, 프로세스 간 통신을 통해 프로세스 간 상호작용을 지원합니다.
  • Bash(Bourne Again SHell), Zsh(Z shell), Ksh(Korn Shell), Csh(C Shell) 등

 

/bin/bash와 /bin/sh 차이

/bin/sh/bin/bash 모두 셸(Shell)을 나타내는 경로입니다. 이 두 가지는 Unix 및 Unix 계열 시스템에서 사용되는 다른 셸 프로그램을 가리킵니다. /bin/sh는 Bourne shell의 경로를 가리키며, Bourne shell은 초기 Unix 시스템에서 사용되던 셸로, 쉘 스크립트 작성의 기본을 제공했습니다. 그러나 기능적으로는 제한적이었습니다. /bin/bash는 Bourne Again shell의 경로를 가리키며, 이는 Bourne shell의 확장 버전입니다. bash는 Bourne shell의 기능을 모두 포함하면서도 추가적인 기능과 향상된 사용자 경험을 제공합니다. 이에는 명령 줄 편집, 명령 히스토리, 직접 실행 가능한 함수 등이 포함됩니다. 따라서, /bin/bash는 더 다양한 기능을 제공하며, 특히 복잡한 스크립트 작성에 더 적합합니다. 하지만 모든 시스템에서 bash가 기본적으로 설치되어 있지는 않으므로, 호환성이 중요한 경우에는 /bin/sh를 사용하는 것이 좋을 수 있습니다.

728x90
반응형

'Linux' 카테고리의 다른 글

Ubuntu 운영체제의 패키지  (0) 2024.02.22
Linux 디렉토리 구조  (0) 2024.02.22
"chmod: changing permissions of 'file': Operation not permitted" 오류  (0) 2024.02.22
Redirect  (0) 2024.02.22
Linux 운영체제  (0) 2024.02.20