Update @12/7/2020
•
실제로 쓰다가 약간의 버그가 있어 안 쓰는 중...
Function 선언
function mv() ⇒ function mv
bash 와 fish 문법이 살짝 다르다.
조건문
if [ "$#" -ne 1 ] || [ ! -f "$1" ]; then
if A or B 라는 뜻이다. 이때 A 는 "$#" -ne 1이다. $#는 number of arguments를 뜻한다. -ne는 not equal을 이므로, 곧 if A는 'number of arguments is not equal to 1'이라는 뜻이다. A를 fish 에서는 이렇게 표현한다. test (count $argv) -ne 1
B는 'first argument($1) is not(!) file(-f)'이라는 뜻이다. test ! -f $argv[1]이라고 할 수 있다.
본래 command 실행
command mv "$@" 는 본래의 command 를 실행한다는 뜻이다. $@는 all arguments이기 때문이다. fish 에서는 command mv $argv라고 하면 된다.
키보드 입력
read -ei "$1" newfilename는 다음과 같이 해석한다. read는 input 을 받기 위한 명령어이다. -ei "$1"는 새로운 라인을 받되(-e), 초기값(-i)으로 첫번째 argument($1)를 쓰겠다는 뜻이다. 그러니까 첫번째 argument 를 초기값으로 user 에게 주고, user 가 line delimiter(쉽게 말해 엔터)를 입력하면 그 값을 newfilename이라는 변수에 담겠다는 뜻이다.
fish 에서는 vared라는 함수가 제공되는데, 이를 이용하면 조금 더 간편하게 표현할 수 있다. vared newfilename이 때 초기값을 주고 싶다면, set newfilename $argv[1]을 이전에 선언하면 된다.