回答:
最後に、「cd」コマンドのカスタム置換を作成する方法を示します。
ディレクトリに移動するときに、常に同じものを入力していることに気づきましたか?おそらく、少なくとも毎回そこにファイルをリストするでしょう。おそらく、「cd」の後に手で自動的に「ls」と入力するほどです。
考えられるあらゆる方法を試してみると、求めている目標を適切に達成する方法は1つしかありません。シェル関数を作成する必要があります。
シェル関数は、シェルプログラミングの一部です。コンパイルされたプログラミング言語のように、関数は一種の手続き的なモジュール化可能性を提供します。汎用パラメーターを作成して、さまざまなパラメーターを使用して頻繁に使用されるロジックまたは計算のビットを実行できます。この場合、パラメーターは現在の作業ディレクトリです。
簡単なものを次に示します。
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$
builtinbashでコマンドを使用できます:
function cd() {
new_directory="$*";
if [ $# -eq 0 ]; then
new_directory=${HOME};
fi;
builtin cd "${new_directory}" && ls
}
function ls() { /usr/bin/ls $* }
Florian Dieschに関数を使用するヒントをありがとう。csoundパッケージにコマンドcsがあるため、名前として使用できません。cslc
これを~/.bash_aliases(nano ~/.bash_aliases)に追加しました:
function lc () {
cd $1;
ls
}
resetこれを有効にするには、ターミナルが必要です。
$1そのように引用符を外すと、ディレクトリに空白が含まれている場合に失敗します。また、cd;の戻り値を確認する必要があります。失敗した場合(許可が拒否された場合など)、を実行しても意味がありませんls。lc() { cd "$@" && ls; }
このfunction:の拡張として、などの代わりにを使用cs() { cd "$1" && ls; }しcdて、関数のすべての引数を渡すことができます。$@"$1"cs() { cd $@ && ls; }
定義も変更される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