ls
コマンドを実行した後、cd
コマンドを頻繁に実行します。この操作のエイリアス(cs
など)を作成するにはどうすればよいですか?
Florian Diesch 関数使用のヒントをありがとう。 csound パッケージにcs
コマンドがあるため、名前としてcs
を使用できません。したがって、lc
を使用しました。
これを~/.bash_aliases
(nano ~/.bash_aliases
)に追加しました:
function lc () {
cd $1;
ls
}
これを有効にするには、端末をreset
にする必要があります。
From Bash Tips and Tricks: 'cd' with style :
最後に、「cd」コマンドのカスタム置換を作成する方法を示します。
ディレクトリに移動するときに、常に同じものを入力することに気づきましたか?おそらく、少なくとも毎回そこにファイルをリストするでしょう。おそらく、「cd」の後に手が自動的に「ls」と入力するほどです。
まあ、私が考えることができるすべての方法を試すことによって、私たちが探している目標を適切に達成するための唯一の方法があることがわかります。シェル関数を作成する必要があります。
シェル関数は、シェルプログラミングの一部です。コンパイルされたプログラミング言語のように、関数は一種の手続き的なモジュール化可能性を提供します。一般的な関数を作成して、さまざまなパラメーターを使用して頻繁に使用されるロジックや計算を実行できます。この場合、パラメーターは現在の作業ディレクトリです。
簡単なものを次に示します。
function cs () { cd $1 ls }
@ geirha のとおり、名前にスペースを含むディレクトリに切り替えようとすると、上記の関数は失敗します。
$ 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$
Bashで builtin
コマンドを使用できます。
function cd() {
new_directory="$*";
if [ $# -eq 0 ]; then
new_directory=${HOME};
fi;
builtin cd "${new_directory}" && ls
}
エイリアスの代わりに関数を使用します。
cs() { cd "$1" && 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
}
そして、.bashrc
のrmv
行の後:
alias cd='cdd'
# Use bash built in completion for cd to allow for filenames to be used
complete -r cd
この関数の拡張:cs() { cd "$1" && ls; }
として、$@
の代わりに"$1"
を使用して、関数のすべての引数をcd
に渡すことができます:cs() { cd $@ && ls; }
。