Gdybym zobaczył tę sytuację jako jednorazową, mógłbym:
a=`pwd`
cd /somewhere/else
cp "$a/myfile" .
Gdyby istniały katalogi, z których kopiowałem pliki częściowo, prawdopodobnie zdefiniowałbym dla nich pewne zmienne mnemoniczne w moim .profile.
Edytowano, aby dodać:
Po spaniu zastanawiałem się, jak blisko mogę dotrzeć do innych zachowań GUI / OS, w których wybierasz pewną liczbę plików, „wycinasz” lub „kopiujesz” je, a następnie „wklejasz” gdzie indziej. Najlepszym mechanizmem selekcji, jaki mogłem wymyślić, był twój mózg / preferencje plus funkcja globowania powłoki. Nie jestem bardzo kreatywny w nazywaniu, ale to jest podstawowy pomysł (w składni Bash):
function copyfiles {
_copypastefiles=("$@")
_copypastesrc="$PWD"
_copypastemode=copy
}
function cutfiles {
_copypastefiles=("$@")
_copypastesrc="$PWD"
_copypastemode=cut
}
function pastefiles {
for f in "${_copypastefiles[@]}"
do
cp "${_copypastesrc}/$f" .
if [[ ${_copypastemode} = "cut" ]]
then
rm "${_copypastesrc}/$f"
fi
done
}
Aby z niego skorzystać, należy umieścić kod do ~ / .bash_profile, następnie cddo katalogu źródłowego i metę albo copyfiles glob*herealbo cutfiles glob*here. Wszystko, co się dzieje, to to, że twoja powłoka rozszerza globusy i umieszcza te nazwy plików w tablicy. Następnie cdprzejdź do katalogu docelowego i uruchom pastefiles, który wykonuje cppolecenie dla każdego pliku źródłowego. Jeśli pliki zostały wcześniej „wycięte”, pliki pastefile również usuwają plik źródłowy (lub próbuje to zrobić). Nie wykonuje to żadnego sprawdzania błędów (istniejących plików, przed potencjalnym zatkaniem ich za pomocą cp; lub czy masz uprawnienia do usuwania plików podczas „wycinania” lub że możesz ponownie uzyskać dostęp do katalogu źródłowego po przeprowadzce) tego).
cdpolecenie, abyś mógł po prostucd -wrócić do poprzedniego katalogu, strzałka w górę, aby przywołaćcdpolecenie, i edytować wierszcpzamiastcd. (ctrl-a (początek linii), alt-d (słowo-zabójca)cp -a,, ctrl-e (koniec linii)).