Ваша система (, как и многие системы Unix ), не имеет внешней cd
команды (, по крайней мере, не по этому пути ). Даже если бы он был, ls
дал бы вам список исходного каталога. Внешняя команда никогда не может изменить каталог вызывающего процесса (вашей оболочки)1 .
Удалите псевдоним из среды с помощью unalias cd
(, а также удалите его определение из всех файлов инициализации оболочки, в которые вы, возможно, добавили его ).
С помощью функции оболочки вы можете заставить ее работать, как обычно cd
, с дополнительным вызовом ls
в конце, если cd
удалось:
cd () {
command cd "$@" && ls -lah
}
или,
cd () { command cd "$@" && ls -lah; }
Это приведет к вызову команды cd
, встроенной в вашу оболочку, с теми же аргументами командной строки, которые вы дали функции. Если изменение каталога прошло успешно, запустится ls
.
Команда command
останавливает рекурсивное выполнение функции оболочкой.
Определение функции (, как написано выше ), будет помещено в файл запуска вашей оболочки. С bash
это может быть ~/.bashrc
. Затем определение функции будет активным в следующем новом сеансе интерактивной оболочки . Если вы хотите, чтобы она была активной сейчас , выполните определение функции, поскольку -находится в приглашении интерактивной оболочки, которое определит ее в рамках вашего текущего интерактивного сеанса.
1 В системах, где cd
доступна как внешняя команда, эта команда также не изменяет каталог для вызывающего процесса. Единственное реальное применение такой команды — обеспечение соответствия POSIX и проверка того, возможно ли изменение каталога на конкретный .
Судя по всему, это запись на стандартный ввод!
Чтобы перенаправить на StdOut
~#(vsftpd 0>&1)
or
~#(vsftpd 0>&1)>/tmp/out.txt