Как я могу создать псевдоним для CD и ls?

Я часто работаю ls команда после выполнения cd команда. Как я могу создать псевдоним (как cs) для этой операции?

32
задан 9 October 2012 в 02:48

6 ответов

Спасибо Florian Diesch для подсказки использования функции. Я не могу использовать cs как имя, потому что существует a cs команда в csound пакете, таким образом, я использовал lc.

Я добавил это к ~/.bash_aliases (nano ~/.bash_aliases):

function lc () {
    cd $1;
    ls 
}

Терминал должен быть reset чтобы это вошло в силу.

9
ответ дан 23 November 2019 в 00:35

От Подсказок по Bash и Приемов: 'CD' со стилем:

Наконец, я хочу показать Вам, как записать Вашу собственную замену для команды 'CD'.

Вы вводите всегда то же самое после изменения в каталог? Вы, вероятно, по крайней мере, перечисляете файлы там каждый раз, возможно, так, что Ваши руки автоматически вводят 'ls' после каждого 'CD'.

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

Функции Shell являются частью программирования оболочки. Как на скомпилированных языках программирования, функции обеспечивают своего рода процедурный modularizability. Можно создать родовую функцию для выполнения часто используемого бита логики или вычисления с различными параметрами. В этом случае параметр является текущим рабочим каталогом.

Вот простой:

function cs () {
    cd $1
    ls
}

Как @geirha corretly примечания, перестанет работать вышеупомянутая функция, при попытке переключиться на каталог с пространством на его имя:

$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>  

Необходимо вместо этого использовать следующую функцию:

function cs () {
    cd "$@" && ls
    }

После того как Вы добавляете тот код к Вашему ~/.bashrc, необходимо смочь сделать это:

hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
35
ответ дан 23 November 2019 в 00:35

Можно использовать builtin команда в ударе:

function cd() {
    new_directory="$*";
    if [ $# -eq 0 ]; then 
        new_directory=${HOME};
    fi;
    builtin cd "${new_directory}" && ls
}
24
ответ дан 23 November 2019 в 00:35

Используйте функцию вместо псевдонима:

cs() { cd "$1" && ls; }
16
ответ дан 23 November 2019 в 00:35

Как расширение на эту функцию: cs() { cd "$1" && ls; }, можно хотеть передать все аргументы функции cd при помощи $@ вместо "$1" как таковой: cs() { cd $@ && ls; }.

1
ответ дан 23 November 2019 в 00:35

У меня были проблемы при переопределении cd потому что rvm изменения мой cd определение также. См. https://stackoverflow.com/a/19941991/1601989. Я действительно не хотел использовать builtin потому что это пропустило бы что rvm делает.

Я добавил следующее к моему .bashrc:

# cdd allows you to cd to the directory of the given file or directory
function cdd()
{
  if [[ $# -eq 0 ]]; then
    cd
  elif [[ -d "$*" ]]; then
    cd "$*"
  elif [[ -f "$*" ]]; then
    echo "WARNING: file given, cd to file's dirname" 1>&2
    local dir=$(dirname "$*")
    cd "$dir"
  else
    cd "$*"
  fi
}

function cs()
{
  cdd $* && ls
}

И затем после rmv строка в .bashrc:

alias cd='cdd'
# Use bash built in completion for cd to allow for filenames to be used
complete -r cd
1
ответ дан 23 November 2019 в 00:35

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

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