URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6067
[ Назад ]

Исходное сообщение
"в bash, переход и вывод содержимого каталога"

Отправлено slack , 10-Янв-07 07:30 
День Добрый! Высокомерные и заносчивые -  подскажите как правильно написать alias что б
при вводе сd выходило содержимое каталога я написал в .bashrc alias cd=" ""clear; cd ${1}; ls" - но это не работает(в строке приглашениея не отображается абсолютный путь и каталог не меняется), как сделать что б эта модель заработала
Спасибо! С уважением!

Содержание

Сообщения в этом обсуждении
"в bash, переход и вывод содержимого каталога"
Отправлено newser , 10-Янв-07 09:19 
>День Добрый! Высокомерные и заносчивые -  подскажите как правильно написать alias
>что б
>при вводе сd выходило содержимое каталога я написал в .bashrc alias cd="
>""clear; cd ${1}; ls" - но это не работает(в строке приглашениея
>не отображается абсолютный путь и каталог не меняется), как сделать что
>б эта модель заработала
>Спасибо! С уважением!

А зачем столько кавычек-то? И что Вы хотите, чтобы у Вас отображалось в строке приглашения? Про переменную PS1 слышали?


"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 09:50 
Кавычек - для того что бы пресечь зацикливание clear,- я делал под фрю - все работало, правда для csh -, но фря - более строка и логичнее система -  на линукс перешел только из-за того - что система -"салат" - больше возможности -отсюда больше познать, - в строке приглашения у меня отображаеться - дата, время, консоль, и абсолютный путь текущего рабочего каталога
PS прошу -  не отвечать намеками - просто выдать код и все - я не трачу время на неприоритетное - просто хотел что б было удобно передвигаться по дереву, прошуменя понять
С уважнием!



"в bash, переход и вывод содержимого каталога"
Отправлено newser , 10-Янв-07 10:01 
>Кавычек - для того что бы пресечь зацикливание clear,- я делал под
>фрю - все работало, правда для csh -, но фря -
>более строка и логичнее система -  на линукс перешел только
>из-за того - что система -"салат" - больше возможности -отсюда больше
>познать, - в строке приглашения у меня отображаеться - дата, время,
>консоль, и абсолютный путь текущего рабочего каталога
>PS прошу -  не отвечать намеками - просто выдать код и
>все - я не трачу время на неприоритетное - просто хотел
>что б было удобно передвигаться по дереву, прошуменя понять
>С уважнием!

Только что проверил, все работает.

alias cd="clear; cd ${1}; ls"

без всяких дополнительных кавычек. Что там у Вас и почему "зацикливается" мне неведомо. Смотрите, какие еще алиасы определены.


"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:06 
Нет не функционирует -  Вы в строке приглашения в PS1 введите - \w -отображение текущего каталога - абсолютный путь, - тоесть мысль - долже отображаться в строке приглашения абсолютный путь каталога + его содержимое,
PS у Вас не будет работать -  выдать содержимое каталога - да верно, но вы останетесь в
том каталоге который  стоит после логирования - сделайте команду pwd -и сами увидите



"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:01 
Наверно я не так выразил мысль что хочу -  я хочу при что б при передвижениие по файловой системы с помощью cd у меня - на виртуальной терминале(ttyvN, где N от 1 до 9) чистился экран и после этого показывалось содерживое каталога -  вот всего лишь, в profile я имею
пришлашение - PS1 = '\.....\w#' - а в .bashrc - сабж соответственно  и у меня не переходит
в каталог который нужно  и не высвечиваеться его содержимое, вроде просто - но не могу сделать,,,, - как говорят у Вас "танцы с бубнами надо делать "

"в bash, переход и вывод содержимого каталога"
Отправлено ctax , 10-Янв-07 10:11 
alias cd='clear && cd $1 && ls'

"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:13 
Нет тоже к сожалению, не работает



"в bash, переход и вывод содержимого каталога"
Отправлено ctax , 10-Янв-07 10:18 
>Нет тоже к сожалению, не работает
echo $SHELL ?
uname -a    ?

"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:23 
>echo $SHELL  - /bin/bash
>uname -a   Linux Linux 2.6.18-1.2798.fc6 #1 SMP Mon 16 14:37:32 EDT 2006 i686 i686 i386 GNU\Linux
У меня федора коре 6



"в bash, переход и вывод содержимого каталога"
Отправлено ctax , 10-Янв-07 10:27 
У меня есть просто мысль по ходу
может вам сделать так:
alias CD='clear && cd $1 && ls'
вместо CD сделайте что вам нравиться, только не cd

"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:33 
пробывал - и через функцию - но у сожалению -  нет не идет -  я если правильно понял - там идет рекурсия,  когда вставляешь ls - я сразу понял что не осилю - варианты и другие
пробывал с unset ..... - тоже плачевны - хотя я читал ман( бегло!) - и наткнулся на то что
нужно использыывать функцию - для поиска сделал - работает а вот сабж осилить не могу,,,,
С уважнием!

"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:40 
вот проверять - просто pwd - и каталог начальный отображаеться, - хотя в запросе - он выводит сожержимое того каталога который задаешь аргументом, но потом опять каким-то образом возвращаеться к первоначальному каталогу,,, - рекурсия она приемлема для математического изыскания - когда хочешь показать красоту, но у нее много минусов -  стек, память и т д - так что я всегда ее избегаю,,,,,, - а тут сел в лужу,,,,,
С уважнием!



"в bash, переход и вывод содержимого каталога"
Отправлено ctax , 10-Янв-07 10:45 
Действительно странно.
давайте по-порядку
1 Вы прописываете строку в файл .bashrc (тупо после всего)
2 Вы ЗАНОВО! логинетесь под пользователем, файл которого изменили
3 Запускаете псевдоним из того же пользователя
4 И alias traym='echo tryam' у вас работает

Пардон за занудство


"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 10:54 
>Действительно странно.
>давайте по-порядку
>1 Вы прописываете строку в файл .bashrc (тупо после всего)
Да совершенно - верно!
>2 Вы ЗАНОВО! логинетесь под пользователем, файл которого изменили
Да верно - к сожалению rehash -почему-то в линуксе нет - хотя во фрюшке всегда делал это
>3 Запускаете псевдоним из того же пользователя
Да верно  
>4 И alias traym='echo tryam' у вас работает
нет это не работает  пробывал
>
>Пардон за занудство
Ничего - просто я приемник - строки а не mc - хотя после последего ничего не имею - просто со строкой привык уже



"в bash, переход и вывод содержимого каталога"
Отправлено ctax , 10-Янв-07 11:02 
тогда далее :)
Пропишите alias tryam='echo tryam' в .bash_profile
и попробуйте по той же схеме

"в bash, переход и вывод содержимого каталога"
Отправлено ctax , 10-Янв-07 11:17 
вместо rehash - катит source .bashrc в этом случае

"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 11:23 
нет не идет alias: = echo tryam: not found
PS я конечно не утверждаю - но помоему - в профайл альянсы не прописывают - это же для
установок профиля и среды и т д -  судя по документации, - понятно что салат - но и у салата должна быть иерархия и порядок
Тут дело в другом наверно,,,,
С уважнием!

"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 11:29 
тут дело невстековке \w  in PS1 и команды ls в bashrc - первая наверно не дает менять при рекурсии каталог - если ее убрать - то работает - но мне необходимо именно что б отбражалось в строке приглашения - абсолютный путь каталога
С уважнием!

"в bash, переход и вывод содержимого каталога"
Отправлено newser , 10-Янв-07 11:58 
>тут дело невстековке \w  in PS1 и команды ls в bashrc
>- первая наверно не дает менять при рекурсии каталог - если
>ее убрать - то работает - но мне необходимо именно что
>б отбражалось в строке приглашения - абсолютный путь каталога
>С уважнием!

Как описано в man bash алиасы не поддерживают позиционных параметров ($1, $2 и т.д.). Вместо этого рекомендуется пользоваться функциями. Вот функция, которую нужно объявить в .bashrc:

cd () {
  clear
  builtin cd "$@"
  ls
}

Прочитайте man bash внимательно, многие вопросы отпадут сами собой. :)


"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 12:01 
ОГРОМНОЕ СПАСИБО!!! РАБОТАЕТ,
С уважнием!!!

"в bash, переход и вывод содержимого каталога"
Отправлено Andrey , 10-Янв-07 12:24 
Извените, но почему тогда работает !?
alias mycd="cd ${1}"

"в bash, переход и вывод содержимого каталога"
Отправлено newser , 10-Янв-07 13:25 
>Извените, но почему тогда работает !?
>alias mycd="cd ${1}"

Хорошо, вот пример:

$ alias mycd="cd ${1}"
$ alias mycd2="cd ${1}; pwd"
$ pwd
/home/user
$ mycd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/user
$ mycd2 /tmp
/home/user
$ pwd
/home/user
$ alias
alias mycd='cd '
alias mycd2='cd ; pwd'

Таким образом, в алиасах нельзя обращаться к позиционным параметрам. Если мы вызываем первый алиас (mycd /tmp), то он преобразуется в команду cd /tmp, однако алиас mycd2 /tmp преобразуется в команду cd ; pwd, т.е. никакого /tmp в итоге в команде не будет.

Вдумчивое чтение man bash (разделы ALIASES и FUNCTIONS) поможет. Вот, кстати, и цитата оттуда:

There  is no mechanism for using arguments in the replacement text.  If
arguments are needed, a shell function should be  used  (see  FUNCTIONS
below).

Удачи!


"в bash, переход и вывод содержимого каталога"
Отправлено phpcoder , 10-Янв-07 11:50 
>Да верно - к сожалению rehash -почему-то в линуксе нет - хотя
>во фрюшке всегда делал это

Используйте zsh, там есть и rehash и ещё множество вкусностей.


"в bash, переход и вывод содержимого каталога"
Отправлено slack , 10-Янв-07 11:54 

>Используйте zsh, там есть и rehash и ещё множество вкусностей.
Согласен - любая математическая задача имеет несколько решений - но сабж остаеться!
Не факт - что и csh будет работать так же как и в фрюшке, - даже скорее всего не будет
С уважнием!

"в bash, переход и вывод содержимого каталога"
Отправлено newser , 10-Янв-07 11:59 
>
>>Используйте zsh, там есть и rehash и ещё множество вкусностей.
>Согласен - любая математическая задача имеет несколько решений - но сабж остаеться!
>
>Не факт - что и csh будет работать так же как и
>в фрюшке, - даже скорее всего не будет
>С уважнием!

Почему Вы так уверены? csh - он и в Linux csh! :)