Командная строка для текущей директории, аналогичная ~ для домашней директории?
Когда я использую команду 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" без какой-либо другой команды в командной строке переведет вас в "~" (ваш дом).