uniq : 중복된 내용의 행이 연속으로 있으면 중복없이 하나의 행으로 만들어주는 명령어다. sort 명령어와 주로 사용한다.
option
-c : --count 중복 횟수를 적어준다. -c옵션은 앞에 -u, -d 옵션이 적용되었더라도 무시
-d : --repeated 중복 라인 중 한 번만 표시, -u와 반대 개념
-D : print all duplicate line 중복되는 모든 라인 표시
-u : only print unique lines 중복되지 않는 라인 표시, -d와 반대
-i : 중복 라인을 한 라인으로 간주하고 출력
(밑에 세 가지는 많이 안 쓰임)
-w : N N 번째 문자까지만 비교
-s : N N 번째 문자까지는 비교대상에서 제외
-f : N N 번째 필드를 비교대상에서 제외
shuf(Shuffle) : 값을 섞어 줌.(사다리 게임 할 때 사용, 로또 번호 당첨 기원)
option
-e : argument를 입력라인으로 취급
-i :--input -range(범위 지정)=L0-HI
-n : COUNT 출력 개수
-o : --output=FILE 파일로 출력
-r : --repeat 반복
tr : 문자 변경 및 삭제
-d : delete {문자만 지울 때 소문자'a-z'(or 대문자 'A-Z' or 대소문자 'A-Z' 'a-z')로 범위 지정해주고, 숫자만 지울 때 '0-9'로 지정해준다.}
※정규식 표현 : 대문자 세트 [:upper:], 소문자 세트 [:lower:], 숫자 세트 [:digit:]
-s : squeeze 반복되는 한 개의 문자 삭제(공백 삭제도 가능하다 -> " " )
-t : truncate
-c : --complement 보수 연산 (거의 사용 하지 않음)
expand : 탭을 공백으로 변환
unexpand : 공백을 탭으로 변환
> : 우측방향에 저장
>> : append 개념 (기존 파일에 추가 됨. 덮어쓰기 X)
touch : 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어 입니다
option
-m : 파일의 생성, 수정 시간을 서버 시간으로 변경할 경우 사용되는 옵션입니다.
-t : 파일의 생성, 수정 시간을 사용자가 원하는 시간으로 변경할 경우 사용되는 옵션입니다.
mkdir : 디렉토리 생성할 경우 사용되는 명령어
rmdir : 디렉토리를 삭제할 수 있는 명령어 -> rmdir 명령어보단 rm -r 명령어를 더 많이 사용함.
※' . ' : 자기 자신 디렉토리 , ' .. ' : 부모 디렉토리
-p : 여러 덱스의 하위 디렉토리를 생성시에 사용한다.
cp : copy의 줄임말로 파일이나 디렉토리를 복사할 때 사용하는 명령어 -> cp명령어는 rename 기능을 포함한다.
option
-i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻습니다.(사용시 여부를 묻기에 안전함.)
-f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 합니다.(사용시 조심해서 사용.)
-r : 하위 디렉토리 까지 모두 복사합니다
rm : remove의 약자로 파일이나 디렉토리( -r 옵션시 삭제가능)를 삭제 시킬때 사용하는 명령어
option
-f : 강제로 파일이나 디렉토리를 삭제하고 대상이 없는 경우에는 메시지를 출력하지 않습니다..
-r : 디렉토리 내부의 모든 내용을 삭제합니다.
-rf : 현재 디렉토리에 속한 모든 파일과 디렉토리를 삭제할 때 가끔 -rf 옵션을 함께 사용함. 이 경우 삭제 여부를 묻지 않고 즉시 삭제하기에 주의해서 사용해야 함.
rename : 하나 혹은 하나 이상의 파일명을 일괄 변경할 때 사용하는 명령어이다. 특정 파일들의 확장자를 동일하게 수정할 때 많이 사용된다.
※사용형식 : rename 변경 전 파일명 변경 후 파일명 대상파일
.txt .backup bb
mv : move의 약자로서 파일이나 디렉토리를 다른 위치로 이동시키거나 파일명(한 개)을 변경하고자 할 때 사용한다. -> mv명령어는 rename 기능을 포함한다.
※사용형식 : mv 파일명1 파일명2
seq : 연속된 숫자를 나열해 주는 명령어, hell script 에서 for 루프 등을 돌기 위한 조건을 만들 때 유용함.
option
-s : string을 사용하여 구분자를 지정함 (' ')
-w : 제일 큰 숫자의 너비를 기준으로 0으로 자릿수를 맞춰줌(큰 숫자가 100이면 1표시를 -> 001 바꿔줌)
factor : 인수분해
numfmt : 숫자를 사람이 읽을 수 있는 문자 형태로 변환해주는 명령어.(거의 사용하지 않음.)
expr : 3+5만 적용하면 인식X, expr 3 + 5로 적용해야 인식O
※expr 사용시 제약사항
1. 전체 문장은 ` 로 묶여야 합니다.
2. * 와 ( ) 는 특수기호로 인식되므로 연산자로 인식하기 위해서는 \를 앞에 붙여야 합니다.
3. 연산에 들어간 모든 변수, 숫자, 기호 사이에는 공백이 있어야 합니다.
4. = 에는 공백이 없어야 합니다.
※출력 시 1은 참이고, 0은 거짓이다.
let : 내부 명령어란?
1. 쉘은 우리가 입력한 명령어를 해석하며 sh, ksh, csh, tcsh, bash, zsh, dash등이 있다.
우분투는 기본적으로 bash를 이용하며 내부 명령어들이 bin/bash 안에 들어있어 이를 이용해 명령한다.
※쉘 이스케이프 문자
\f : 앞 문자열만큼 열을 밀어서 이동
\n : 새로운 줄로 바꾼다
\r : 앞 문자열의 앞부분부터 뒷 문자열 만큼 대체하고 반환한다.
\t : 탭 만큼 띄운다.
2. 명령어위치
which expr
-> /usr/bin/expr
외부 명령어를 볼 때 which를 이용
which let
-> 안된다.
let은 내부명령어이므로 enable을 이용
enable | grep let
-> enable let
※ let b=++a && echo $b
-> a값을 1 증가시킨후, b에 대입, b 출력
let b=3>5?100:200 && echo $b
-> 200 (삼항 연산자)
Ubuntu : sudo -i, su - root
useradd -m -b /home/ace ace
passwd ace
CentOS : su - root
useradd
passwd ace
id : 특정 사용자의 user, group 정보를 출력하는 명령어
ex)uid=1920(user1) gid=500(group1) groups=500(group1),11102(group2)
logname : 사용자의 로그인 계정을 출력하는 명령어
who(가장 많이 사용함) : 시스템에 로그인 된 사용자들을 로그인 정보와 같이 출력해주는 명령어
w : 시스템에 로그인 되어있는 사용자들과 사용자들이 수행 중인 작업 종보를 출력해주는 명령어
whoami : 자신이 누구인지 실질적인 사용자 아이디(계정)를 출력해주는 명령어
users : 현재 시스템에 로그인한 사용자 계정들을 출력해주는 명령어
groups : 현재 그룹 명을 볼 수 있는 명령어
Ctrl+w를 입력하고, 검색어 입력 후 , 엔터를 입력하면 매칭되는 위치로 커서가 이동한다. 매칭되는 다음 위치를 찾기위해서는 Ctrl+w 입력 후 바로 엔터를 누르면 된다.