LINUX.ORG.RU
решено ФорумAdmin

Как этот ,####, bash работает?!

 ,


0

1

ТЗ Сделать так чтоб при вводе ‘cl’название директории’’ команда cd переводила стопку в ту деректории а команда ls сразу открывала её содержимое.

Да, я нуб в линуксе, учусь на опыте, и от алиасов уже дошел до bash. То бишь алиасом открываю скрипт. Содержание скрипта


#!/data/data/com.termux/files/usr/bin/bash

cd $1

ls

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

И оно работает, но.

На экране высвечивает содержимое директории'' куда я должен был попасть, но остаюсь в родительской, как можно обойти и почему так?

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

Версия объяснения номер 2

Смотри

~ $ cl test.com
test1.txt
~ $

Это я через скрипт пытаюсь перейти, остаюсь в корневой

Это…

~$ cd test.com
~/test.com $ ls
test1.txt
~/test.com $

…как и все нормальные люди перешли в деректории и просмотрели содержимое. Приглядись к последней строке и в какой директории'' я сейчас там в корне а там в директории'' тест

Надо чтоб скрипт работал как и связка команд cd и ls, то бишь чтоб переходил из корня в тест

Вот код скрипта:

#!/data/data/com.termux/files/usr/bin/bash

cd $1
ls

Есть идеи?

Решение(подробнее в комментах) При использовании алиаса не использовать ./…sh а полностью прописывать source …sh, вопрос закрыт



Последнее исправление: KoDeMa (всего исправлений: 8)
Ответ на: комментарий от KoDeMa

PS1 это prompt (то, что отображается до ввода команды, типа user@localhost)

upd: так работать не будет, т.к. PS1 поменяется один раз на ls текущей директории, я наркоман.

annerleen ★★★★☆
()
Ответ на: комментарий от annerleen

Смотри

~ $ cl test.com
test1.txt
~ $

Это я через скрипт пытаюсь перейти, остаюсь в корневой

Это…

~$ cd test.com
~/test.com $ ls
test1.txt
~/test.com $

…как и все нормальные люди перешли в деректории и просмотрели содержимое. Приглядись к последней строке и в какой директории'' я сейчас там в корне а там в директории'' тест

Надо чтоб скрипт работал как и связка команд cd и ls, то бишь чтоб переходил из корня в тест

Вот код скрипта:

#!/data/data/com.termux/files/usr/bin/bash

cd $1
ls

Есть идеи?

KoDeMa
() автор топика
Ответ на: комментарий от gill_beits

Не совсем понял что делает эта строчка? У меня название конечной деректории как переменная $1 заложенна, как в таком случии быть

KoDeMa
() автор топика
Ответ на: комментарий от KoDeMa

Чтобы запустить твой скрипт не в сабшелле, нужно просто добавить к нему вначале команду source. Т.е. если скрипт называется your_script.sh, а директория, в которую ты хочешь перейти и запустить там ls, directory, то вместо

./your_script.sh directory

тебе нужно вбить в терминал

source your_script.sh directory

gill_beits ★★★★
()
Ответ на: комментарий от gill_beits

./скрипт.sh запускает скрипт, это понятно, . Это sourse но что даёт аргумент directory и как это поможет?

KoDeMa
() автор топика
Ответ на: комментарий от KoDeMa

Нет. У баша есть отдельный алиас для команды source: . your_script.sh, это аналог source your_script.sh. Но работает такой алиас только в баше, поэтому лучше юзать source.

gill_beits ★★★★
()
Ответ на: комментарий от gill_beits

Действительно помогло, не знал что ./ Это алиас… Такого на сайтах не напишут, ну или я плохо искал. Ещё раз спасибо.

KoDeMa
() автор топика

Есть идеи?

Да: @KoDeMa

anonymous
()
Ответ на: комментарий от KoDeMa

Алиас для команды «source» — «.» (после неё ставится пробел, как и после «source»), а «./file» — это чтобы запустить «file», лежащий в текущем каталоге.

AVRS ★★
()
Ответ на: комментарий от gill_beits

Но работает такой алиас только в баше, поэтому лучше юзать source.

Наоборот. Башизм как раз именно «source»

vodz ★★★★★
()
Ответ на: комментарий от AVRS

Я вот чот тоже всегда думал что ./блабла.sh это не исполнение в текущем терминале (source) а просто выполнение, притом емнип эта конструкция была сделана в качестве подтверждения запуска исполняемых файлов, про точку-пробел не знал :-)

rukez ★★★★
()
Последнее исправление: rukez (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.