Как создать каталог и изменить рабочий каталог на новый каталог?

@ Kaled Kelevra, я создал файл 00CPU и выполнил все шаги, к сожалению, моя машина все еще спала через 10 минут.

На форумах ArchLinux я нашел решение, которое работало для меня. См. Ответ # 21.

Вот как я исправил мой в /etc/X11/xorg.conf:

Section "ServerLayout"

    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Evdev Mouse" "CorePointer"

  Option "BlankTime" "0"
  Option "StandbyTime" "0"
  Option "SuspendTime" "0"
  Option "OffTime" "0"

Я просто добавил 4 варианта, которые вы видите там. Протестируйте его и отправьте обратно. Удачи.

1
задан 14 February 2013 в 01:55

3 ответа

mkdir "NewDirectory" && cd "NewDirectory"

Часть за && будет выполняться только в том случае, если первая команда выполнена успешно. Он называется списком команд в руководстве Bash. Существует также сокращенная версия:
mkdir "NewDirectory" && cd "$_"
Пример из командной строки:
$ false && echo "yes"
$ true && echo "yes"
yes
(изменить) Добавить «в команды, поскольку каталог может содержать пробел.
11
ответ дан 25 May 2018 в 01:57
  • 1
    mkdir "NewDir" && cd "$_" работает отлично, чем mkdir "NewDir" && cd "NewDir", поскольку автозаполнение не работает. Кстати, что такое «$ _» ? – TheKojuEffect 30 January 2013 в 16:13
  • 2
    Более того, было бы очень удобно, если бы мы могли подключить переключатель к mkdir, чтобы перейти на новый созданный каталог. – TheKojuEffect 30 January 2013 в 16:14
  • 3
    @TheKojuEffect $ _ см. gnu.org/software/bash/manual/bashref.html#Lists Что касается последнего: никто не останавливает вас от использования псевдонима или функции внутри .bashrc;) – Rinzwind 30 January 2013 в 20:39

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

Тип , затем Esc. (или Alt +.), чтобы вставить последний аргумент из предыдущей команды. cd !$ выполняет cd в последнем аргументе предыдущей команды. Нажмите «Вверх», чтобы вызвать предыдущую командную строку, затем отредактируйте ее, чтобы изменить mkdir на cd.

Вы можете определить простую функцию make-and-change-directory в вашем ~/.bashrc:

mkcd () { mkdir "$1" && cd "$1"; }

Перезагрузите .bashrc (. ~/.bashrc) или перезапустите bash, и теперь вы можете ввести mkcd new-directory.

Эта простая версия не работает в некоторых необычных случаях с участием странных имен каталогов или .. и символических ссылок. Вот один из них. Для пояснений см. Unix & amp; Linux версия этого вопроса.

mkcd () {
  case "$1" in
    /*) mkdir -p "$1" && cd "$1";;
    */../*) (cd "./${1%/../*}/.." && mkdir -p "./${1##*/../}") && cd "$1";;
    ../*) (cd .. && mkdir -p "${1#.}") && cd "$1";;
    *) mkdir -p "./$1" && cd "./$1";;
  esac
}
6
ответ дан 25 May 2018 в 01:57
  • 1
    Мой +1 специально предназначен для ссылок, связанных с Bash, на аргументы последней команды. – 0xC0000022L 14 February 2013 в 02:06
mkdir -p "as/many dirs/as you/want" && cd "$_"

есть решение, перечисленное выше (то же самое, что и мое решение, но без опции -p), но я думаю, что у него есть несколько подводных камней.

man mkdir
...
-p, --parents
       no error if existing, make parent directories as needed
...

Это дает нам два преимущества:

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

&& cd "$_" изменится на вновь созданный каталог, так как $_ сохранит возвращаемое значение my mkdir

2
ответ дан 25 May 2018 в 01:57

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

Похожие вопросы: