Рассмотрим cp a b/c .
- Если - cне существует (а- bсуществует), оно будет интерпретировано как имя для копии- a, поэтому вы закончите с- b/c.
 
- С другой стороны, если - cсуществует и это каталог, он будет интерпретирован как путь, в котором нужно поместить- aпод неизменным именем- a, поэтому вы закончите с- b/c/a.
 
Я предполагаю, что в начале /home/jake/project/__workspace/scalaProjects/scalaML/src/main/scala не существует, есть только /home/jake/project/__workspace/scalaProjects/scalaML/src/main/ .
Ваша первая команда создает scala действуя как (1). Это может несколько сбивать с толку, потому что вместо scala и a вас есть c , поэтому не очевидно, что происходит какое-то тривиальное переименование (от scala до scala). Тогда вторая команда действует как (2).
Эта команда будет работать как ваша первая, независимо от того, существует ли целевая scala , если существует только /home/jake/project/__workspace/scalaProjects/scalaML/src/main/ :
cp -av  /home/jake/transit/scalaProjects/scalaML/src/main/scala /home/jake/project/__workspace/scalaProjects/scalaML/src/main/
Но если /home/jake/project/__workspace/scalaProjects/scalaML/src/main/ не существует и /home/jake/project/__workspace/scalaProjects/scalaML/src/ , ваша scala будет помещена туда под именем main Это снова поведение (1).
Чтобы избавиться от этой неоднозначности, используйте -t:
cp -av  /home/jake/transit/scalaProjects/scalaML/src/main/scala -t /home/jake/project/__workspace/scalaProjects/scalaML/src/main/
Это делает cp интерпретировать main как каталог, в который вы хотите поместить scala . Переименование не будет. Если /home/jake/project/__workspace/scalaProjects/scalaML/src/main/ не существует, cp выдаст ошибку.