Командная строка для текущей директории, аналогичная ~ для домашней директории?
Когда я использую команду cp или move в окне терминала, я в настоящее время нахожусь с bash в определенной папке, подобной этой.
NES@server:~/Desktop/dir1$
И теперь я хочу скопировать файл отсюда ~/anotherdir/dir2 в текущую выбранную папку в bash (dir1) я бы использовал команду
cp ~/anotherdir/dir2/file ~/Desktop/dir1
существует ли строка быстрого доступа для ссылки на текущий выбранный каталог? Так что в этом примере мне не нужно указывать полный путь к целевому каталогу, но команда знает, что он должен использовать текущий выбранный каталог в bash? т.е. как ~ обозначает домашний каталог?
8 ответов
Ваш текущий каталог ., Так, cp /foo/fam/foo . копирует файл в ваш текущий каталог.
Аналогичная конструкция для "одного каталога вверх" или родительского каталога вашего текущего рабочего каталога состоит из двух точек, т. Е. .., (Спасибо @djeikyb .)
Итак, из /usr/house/firstfloor/basement, CD .. поднимает вас на один уровень до /usr/house/firstfloor,
В том же примере (начиная с /usr/house/firstfloor/basement, команда cd ../.. отвезет тебя в /usr/house,
Вы также можете использовать $PWD с echo чтобы получить ваш текущий каталог:
echo $PWD
Между прочим, $OLDPWD даст вам ваш предыдущий каталог. (Который в bash Вы также можете достичь, набрав cd -.)
Вы можете использовать $(pwd), он будет преобразован в вывод команды pwd.
Пример:
echo $(pwd)
./ представляет текущий каталог. Таким образом, вы можете использовать команду cp ~/anotherdir/dir2/file ./ Это скопирует файл "файл" в правильную рабочую директорию.
Чтобы использовать текущий каталог в качестве каталога назначения, используйте одну точку . '
Длинный ответ
Используя ваш пример, вы наберете: cp ~/anotherdir/dir2/file .
Чтобы увидеть точку ., .. а также ../../ имена каталогов в действии, скопируйте и вставьте следующие команды в свой терминал:
mkdir a && mkdir a/b && mkdir a/b/c && mkdir a/b/c2
cd a/b/c
cp /etc/default/grub .
cp /etc/default/grub ..
cp /etc/default/grub ../c2
cd ../../
tree
Вывод команды дерева выглядит так:
.
└── b
├── c
│ └── grub
├── c2
│ └── grub
└── grub
3 directories, 3 files
. в верхней части дерева выводит новый текущий каталог a который является прародителем a/b/c который мы перешли к использованию cd ../../ команда. Под a мы видим подкаталоги a/b, a/b/c а также a/b/c2
Построчный анализ
Сначала мы создали 4 каталога в одной строке, используя && объединить несколько строк вместе.
Затем мы перешли в каталог a/b/c, который является текущим каталогом для следующих команд копирования:
- В первой копии команды (
cp) мы устанавливаем пункт назначения в наш текущий каталог (с) с., - Во второй команде копирования мы устанавливаем место назначения в родительский каталог (b) с помощью
.., - В третьей команде копирования мы устанавливаем место назначения в каталог-родственник (c2) с помощью
../c2
Затем, как было сказано ранее, мы изменили текущий каталог на a и побежал tree команда для отображения всех каталогов и файлов под a,
уборка
По завершении мы удаляем три каталога и файлы с помощью:
cd ~/
rm -r tree
Вы можете использовать точку (.), то ~+ расширение тильды, pwd команда или переменная $PWD для представления текущего рабочего каталога (CWD). Все эти команды могут сделать это:
mv file_old_dir .mv file_old_dir ~+mv file_old_dir $(pwd)mv file_old_dir $PWD
cp ~/anotherdir/dir2/file `pwd`
Обратные галочки означают запуск команды, которая находится между ними, и замену всего полученным результатом, в данном случае рабочим каталогом («pwd» означает «распечатать рабочий каталог»).
Конечно, я предпочитаю "." версия. Добавил этот только для полноты.
Да (как отмечали другие), текущим каталогом является ".", Поэтому вы можете запускать программы / скрипт из текущего каталога с помощью./script (просто скрипт не будет работать, если только он не является частью PATH, что не рекомендуется хоть). Использование $PWD или $(pwd) немного излишне, даже если другие упоминали, что использование символа одной точки, безусловно, короче:) ".." является родительским каталогом, наверняка "/" является корневым каталогом. Также приятно упомянуть, что "cd -" поместит вас в предыдущий каталог, где вы были до того, как вы изменили cwd (текущий рабочий каталог). Это может быть также полезно в повседневной работе. Одна команда "cd" без какой-либо другой команды в командной строке переведет вас в "~" (ваш дом).