Командная строка для текущей директории, аналогичная ~ для домашней директории?

Когда я использую команду 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). Все эти команды могут сделать это:

  1. mv file_old_dir .
  2. mv file_old_dir ~+
  3. mv file_old_dir $(pwd)
  4. mv file_old_dir $PWD

Переменная окружения для текущего каталога - $PWD

echo $PWD
      cp ~/anotherdir/dir2/file `pwd`

Обратные галочки означают запуск команды, которая находится между ними, и замену всего полученным результатом, в данном случае рабочим каталогом («pwd» означает «распечатать рабочий каталог»).
Конечно, я предпочитаю "." версия. Добавил этот только для полноты.

Да (как отмечали другие), текущим каталогом является ".", Поэтому вы можете запускать программы / скрипт из текущего каталога с помощью./script (просто скрипт не будет работать, если только он не является частью PATH, что не рекомендуется хоть). Использование $PWD или $(pwd) немного излишне, даже если другие упоминали, что использование символа одной точки, безусловно, короче:) ".." является родительским каталогом, наверняка "/" является корневым каталогом. Также приятно упомянуть, что "cd -" поместит вас в предыдущий каталог, где вы были до того, как вы изменили cwd (текущий рабочий каталог). Это может быть также полезно в повседневной работе. Одна команда "cd" без какой-либо другой команды в командной строке переведет вас в "~" (ваш дом).

Другие вопросы по тегам