나는 때때로 다음과 같은 일을 하게 됩니다.
예:
~에서~/blah
$ mkdir ~/test-tmp
$ cp * ~/test-tmp
$ cd ~/test-tmp
대상 디렉터리를 연속 3회 사용합니다. 이것을 한 줄 명령으로 바꾸는 방법이 있습니까?
답변1
이게 네가 말하는거야?
mkdir ~/test-tmp && cp * ~/test-tmp && cd ~/test-tmp
또는
function mm() {
local dir=$1
if [ ! -z "$dir" ]
then
mkdir ~/${dir} && cp * ~/${dir} && cd ~/${dir}
fi
}
답변2
Bash에서는 마지막으로 실행한 명령에 대한 인수가 다음 파일 에 !$
기록됩니다.man bash
! Start a history substitution, except when followed by a blank,
newline, carriage return, = or ( (when the extglob shell option
is enabled using the shopt builtin).
[...]
$ The last argument.
그래서, 당신은 이것을 할 수 있습니다
$ mkdir ~/test-tmp ; cp * !$ ; cd !$
아니면 간단히
$ mkdir ~/test-tmp
$ cp * !$
$ cd !$
답변3
문제가 다시 입력되는 경우 ~/test-tmp
다음을 수행하여 명령을 단축하고 한 줄로 결합할 수 있습니다.
D=~/test-tmp; mkdir $D; cp * $D; cd $D
경로에 공백이 포함되어 있으면 작업을 인용해야 합니다.그리고변수를 사용하는 위치:
D="~/test tmp"; mkdir "$D" ; cp * "$D"; cd "$D"