Cd команда не найдена linux

Обновлено: 01.07.2024

Я пытаюсь написать небольшой скрипт, чтобы изменить текущий каталог в каталог моего проекта:

Я сохранил этот файл как proj, добавил разрешение на выполнение с chmod , и скопировал его в /usr/bin . Когда я называю его: proj , он ничего не делает. Что я делаю не так?

сценарии оболочки выполняются внутри подрешетки, и каждая подрешетка имеет свое собственное представление о том, что такое текущий каталог. Элемент cd успешно, но как только подрешетка выйдет, вы вернетесь в интерактивную оболочку, и там ничего не изменится.

один из способов обойти это использовать псевдоним:

вы не делаете ничего плохого! Вы изменили каталог, но только в пределах подобласти, которая запускает сценарий.

вы можете запустить скрипт в текущем процессе с помощью команды" dot":

но я бы предпочел предложение Грега использовать псевдоним в этом простом случае.

The cd в вашем скрипте технически работала как он изменил каталог оболочки, которая запускала скрипт, но это был отдельный процесс, разветвленный от вашей интерактивной оболочки.

Posix-совместимый способ решить эту проблему-определить процедура раковины, а не оболочки-вызывается команды скрипта.

Вы можете просто ввести это или поместить его в один из различных файлов запуска оболочки.

The cd выполняется в оболочке скрипта. Когда сценарий заканчивается, эта оболочка выходит, а затем вы остаетесь в каталоге, в котором вы были. "Исходный" скрипт, не запускайте его. Вместо:

do

(обратите внимание на точку и пробел перед именем сценария.)

чтобы сделать сценарий bash, который будет cd в выбранном каталоге:

  • Я создал загрузочный файл, где я дамп все мои псевдонимы и пользовательские функции.
  • затем я отправляю этот файл в свой .bashrc, чтобы он был установлен на каждой загрузке.

идея Джереми Рутена использовать символическую ссылку вызвала мысль, которая не пересекала никакого другого ответа. Использование:

ведущий двоеточие важно; это означает, что если есть каталог ' dir 'в текущем каталоге, то' cd dir ' изменится на это, а не прыгать где-то еще. С установленным значением, как показано на рисунке, вы можете сделать:

и, если в текущем каталоге нет подкаталога с именем java, то он приведет вас непосредственно к $HOME / projects / java - никаких псевдонимов, никаких скриптов, никаких сомнительных исполнителей или точечных команд.

Мой $дома /пользователи/jleffler; мой $переменную окружения cdpath это:

можно использовать . для выполнения скрипта в текущей среде оболочки:

или, альтернативно, его более читаемый, но конкретный псевдоним оболочки source :

это позволяет избежать подобласти и позволяет использовать любые переменные или встроенные элементы (включая cd ), чтобы повлиять на текущую оболочку вместо этого.

Я получил код для работы с помощью . <your file name>

./<your file name> доза не работает, потому что она не изменяет ваш каталог в терминале, он просто изменяет каталог, специфичный для этого сценария.

вот моя программа

вот мой терминал

скрипт bash работает в своей текущей среде или на своей дети, но никогда не на своей родительской среде.

однако этот вопрос часто задается, потому что один хочет остаться в приглашении bash в определенном каталоге после выполнения сценария bash из другого каталога.

если это так, просто выполните дочерний экземпляр bash в конце скрипта:

когда вы запустите скрипт, он работает новая экземпляр этой оболочки ( /bin/bash ). Таким образом, ваш скрипт просто запускает оболочку, изменяет каталог и выходы. Иначе говоря, cd (и другие подобные команды) в сценарии оболочки не влияют и не имеют доступа к оболочке, из которой они были запущены.

в моем конкретном случае мне нужно было слишком много раз менять один и тот же каталог. Так что по моему .bashrc (я использую ubuntu) я добавил

1 -

$ nano

непосредственно это будет делать: cd / home / tree / projects / java

надеюсь, что это поможет!

он только изменяет каталог для самого скрипта, в то время как ваш текущий каталог остается прежним.

вы можете использовать символическую ссылку вместо. Это позволяет сделать "ярлык" для файла или каталога, так что вам нужно будет только ввести что-то вроде cd my-project .

Вы можете сделать следующее:

EDIT: это также может быть "пунктиром", чтобы предотвратить создание последующих оболочек.

пример:

Вы можете комбинировать псевдоним и скрипт

при условии, что сценарий повторяет путь назначения. Обратите внимание, что это обратные ссылки, окружающие имя сценария.

например, ваш скрипт может быть

преимущество этого метода заключается в том, что скрипт может принимать любое количество параметров командной строки и выдавать различные назначения, рассчитанные, возможно, сложной логикой.

вы можете объединить псевдоним Адама и Грега и точечные подходы, чтобы сделать что-то более динамичное -

теперь запуск псевдонима проекта будет выполнять сценарий проекта в текущей оболочке, а не в подрешетке.

вы можете использовать оператор && :

cd myDirectory & & ls

/.файл bash_profile. добавьте следующую функцию

перезагрузите терминал, и вы можете ввести

и вы будете перемещены в папку назначения.

Это должно делать то, что вы хотите. Перейдите в интересующий каталог (из сценария), а затем создайте новую оболочку bash.

Если вы запустите это, он приведет вас к интересующему каталогу, и когда вы выйдете из него, он вернет вас в исходное место.

это даже приведет вас обратно в исходный каталог при выходе ( CTRL + d )

LOOOOOng время после, но я сделал следующее:

создайте файл с именем case

вставьте в файл следующее:

сохраните его, а затем:

Я создал псевдоним в моем .bashrc :

теперь, когда я типа:

по существу я печатаю:

вы можете ввести любую папку после 'case':

это как набрав:

соответственно

в моем случае путь намного длиннее - эти ребята суммировали его с

вы можете создать функцию, как показано ниже в вашем .bash_profile и это будет работать гладко.

следующая функция принимает необязательный параметр, который является проектом. Например, вы можете просто запустить

или

вот определение функции.

Не забудьте источник .bash_profile

Если вы используете рыбное как ваша оболочка, лучшим решением является создание функции. В качестве примера, учитывая исходный вопрос, вы можете скопировать 4 строки ниже и вставить их в командную строку fish:

это создаст функцию и сохранить его для использования позже. Если ваш проект изменяется, просто повторите процесс, используя новый путь.

Если вы предпочитаете, вы можете вручную добавить файл функции, делая следующее:

и введите текст:

и, наконец, нажмите ctrl+x для выхода и y с последующим возвратом, чтобы сохранить изменения.

(Примечание: первый метод использования funcsave создает proj.рыбный файл для вас).

вам не нужен скрипт, только установите правильный параметр и создайте переменную среды.

в своем

/.bashrc позволяет cd к содержанию переменных окружения.

создать такую переменную среды:

и вы можете использовать:

другие альтернативы.

Использование Функций Профиля Bash:

одной из особенностей профиля bash является хранение пользовательских функций, которые могут быть запущены в терминале или в сценариях bash так же, как вы запускаете приложение/команды это также может быть использовано в качестве ярлыка для длинных команд.

чтобы сделать вашу функцию эффективной системы широко вам нужно будет скопировать вашу функцию в конце нескольких файлов

вы можете sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile для редактирования / создания этих файлов быстро

Пример Скрипта

создание ярлыка для cd .. С cdd

ярлык Общ

ярлык Общ

Howto:

скопируйте свою функцию в конце ваших файлов и перезагрузите терминал, который вы можете запустить cdd или какую бы функцию вы ни написали

вы можете выполнить несколько строк в той же подрешетке, если вы заканчиваете строки с обратной косой чертой.


Команда cd в Linux

Текущая рабочая директория — это директория, в которой в текущий момент работает пользователь.

Чтобы была возможность перехода в директорию, пользователь должен обладать правами доступа на выполнение (execute) данной директории.

Для вывода текущей рабочей директории используется команда pwd.

Синтаксис

Опции

Переходить по символическим ссылкам. Данное поведение используется по умолчанию. Разыменовывать символические ссылки. В данном случае, если осуществляется переход на символическую ссылку, которая указывает на директорию, то в результате команда cd изменит текущую рабочую директорию на директорию, указанную в качестве параметра (то есть ссылка будет разыменована). Выйти с ошибкой, если директория, в которую осуществляется переход, не найдена.

Примеры использования команды cd

Переход в другую директорию

Перейдем в директорию mydir . В данном случае мы переходим в директорию, которая находится внутри текущей рабочей директории.

Или можно использовать следующую эквивалентную команду:

Перейдем в директорию /etc/apache2 . В данном случае используется абсолютный путь.

Перейдем в директорию, находящуюся в родительской директории (на уровень выше):

Переход в директорию, находящуюся на 2 уровня выше по дереву директорий:

Переход по символической ссылке

Предположим mylink1 это символическая ссылка на директорию mydir1

Если команде cd в качестве аргумента указать ссылку mylink1 , то текущая рабочая директория изменится на mylink1

Команда cd переход по символической ссылке

Переход по символической ссылке с разыменованием

Предположим mylink1 это символическая ссылка на директорию mydir1

Воспользуемся опцией -P , чтобы при изменении директории, символическая ссылка была заменена на реальный путь, на который она указывает.

Команда cd переход по символической ссылке с разыменованием

Переход в домашнюю директорию

Домашняя директория текущего пользователя обозначается значком тильда

. Для перехода в домашнюю директорию используется команда:

Переход в директорию, содержащую пробелы в имени

Если директория содержит пробелы, то ее имя (путь) можно заключить в кавычки:

При работе с командной строкой Линукс все команды привязываются к текущему каталогу. По умолчанию при входе в консоль, он становится домашний и находится по адресу: /home/user. Где User - это имя пользователя. В нем могут создаваться, удаляться файлы, если не указан полный путь.

Просто написать название команды намного удобнее, чем писать путь.

Можно использовать при работе с директивой "cd" абсолютный или относительный путь. Абсолютный идет от самого верха, корня /. Относительный приравнивается к текущему каталогу. По умолчанию к домашнему.

/etc/network/interfaces - абсолютный.

interfaces - относительный. Подразумевается, что мы уже находимся в директории /etc/network.

Синтаксис

cd аргументы директория назначения

Вот что нам говорит справка --help.

cd --help

Результат cd --help

  1. -L. Позволяет переходить по символическим ссылкам, после обработки всех переходов.
  2. -P. Переходит по символическим ссылка перед обработкой всех переходов.
  3. -e. Выдает ошибку, если каталога не удалось найти.

Символические ссылки или symbolic link - это документ, который является ссылкой на другой документ. Под документом понимается файл или catalog.

Далее необходимо ввести адрес на который нужно перейти.

Вопрос в том, как же узнать тот самой адрес папки, в которую нужно перейти?

Без помощи утилиты ls не обойтись. Вводим "ls".

Узнаем

Переход в другую папку

Примеры

Введем команду без аргументов. Попадем в домашний каталог.

Перейти в домашнюю папку

символ означает домашний каталог.

Теперь перейдем в папку, которая называется по-русски "Музыка".

Папка Музыка


Во второй команде мы использовали относительный путь. Мы переместились в папку Музыка, потому что находились в директории /home, а папка в /home/Музыка.

Перейдем в директорию log. Для этого укажем полный адрес.

Логи


Символьная черта "-" поможет вернуться в предыдущую папку. Если делать сравнение, то это похоже на кнопку назад в браузере. Когда кнопка возвращает на предыдущую страницу.

Возвращение назад

Переход на уровень вверх - две точки "..".

Перейдем в Документы.

Переход по символьной ссылке. Предположим, что link1 это символьная ссылка на link2. В качестве аргумента указываем link1, то наш путь изменится на link1.

Переход с пробелами. Предположим, что нам нужно перейти в " Семья " с двумя пробелами, один спереди, другой сзади. Для этого нам помогут одинарные кавычки. При этом в кавычках нужно поставить два пробела, как в примере один спереди, другой сзади.

cd Пробелы

В итоге можно сказать, что "cd" это простая нужная директива, с небольшим количеством опций. Вместо того чтобы писать полный адрес директории, можно один раз воспользоваться утилитой "cd".


Команда cd в Linux

Текущая рабочая директория — это директория, в которой в текущий момент работает пользователь.

Чтобы была возможность перехода в директорию, пользователь должен обладать правами доступа на выполнение (execute) данной директории.

Для вывода текущей рабочей директории используется команда pwd.

Синтаксис

Опции

Переходить по символическим ссылкам. Данное поведение используется по умолчанию. Разыменовывать символические ссылки. В данном случае, если осуществляется переход на символическую ссылку, которая указывает на директорию, то в результате команда cd изменит текущую рабочую директорию на директорию, указанную в качестве параметра (то есть ссылка будет разыменована). Выйти с ошибкой, если директория, в которую осуществляется переход, не найдена.

Примеры использования команды cd

Переход в другую директорию

Перейдем в директорию mydir . В данном случае мы переходим в директорию, которая находится внутри текущей рабочей директории.

Или можно использовать следующую эквивалентную команду:

Перейдем в директорию /etc/apache2 . В данном случае используется абсолютный путь.

Перейдем в директорию, находящуюся в родительской директории (на уровень выше):

Переход в директорию, находящуюся на 2 уровня выше по дереву директорий:

Переход по символической ссылке

Предположим mylink1 это символическая ссылка на директорию mydir1

Если команде cd в качестве аргумента указать ссылку mylink1 , то текущая рабочая директория изменится на mylink1

Команда cd переход по символической ссылке

Переход по символической ссылке с разыменованием

Предположим mylink1 это символическая ссылка на директорию mydir1

Воспользуемся опцией -P , чтобы при изменении директории, символическая ссылка была заменена на реальный путь, на который она указывает.

Команда cd переход по символической ссылке с разыменованием

Переход в домашнюю директорию

Домашняя директория текущего пользователя обозначается значком тильда

. Для перехода в домашнюю директорию используется команда:

Переход в директорию, содержащую пробелы в имени

Если директория содержит пробелы, то ее имя (путь) можно заключить в кавычки:

Читайте также: