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 cd
do katalogu źródłowego i metę albo copyfiles glob*here
albo 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 cd
przejdź do katalogu docelowego i uruchom pastefiles
, który wykonuje cp
polecenie 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).
cd
polecenie, abyś mógł po prostucd -
wrócić do poprzedniego katalogu, strzałka w górę, aby przywołaćcd
polecenie, i edytować wierszcp
zamiastcd
. (ctrl-a (początek linii), alt-d (słowo-zabójca)cp -a
,, ctrl-e (koniec linii)).