[Bashのヒント] 1つのコマンドでcdとlsを実行する方法
ディレクトリにcdするたびに、次に自然に行うのは、そのディレクトリの内容をlsコマンドで一覧表示することです。皆さん全員がこれをするかどうかはわかりませんが、習慣として持っている方もいるかもしれません。cdとlsの機能を1つのコマンドにまとめると便利ですよね? この簡単なガイドでは、Linuxでcdしたときに自動的にディレクトリの内容を表示する方法を説明します。
Bashでcdとlsを1つのコマンドで実行する方法
一行コマンドのことを話しているわけではないことにご注意ください。例えば、以下のように一行のコマンドでcdやlsを実行することはできます。
cd path-to-dir && lsまたは、
cd path-to-dir ; lsはい、確かに動作します!しかし、これはこのガイドの範囲ではありません。私たちは、簡単なBASH関数の助けを借りてこれを行います。このトリックは、BASHをサポートするすべてのLinuxおよびUnix系ディストリビューションで動作します。
お好みのエディタで ~/.bashrc ファイルを開きます:
nano ~/.bashrc
次の行を最後に追加してください:
cdls() {
local dir="$1"
local dir="${dir:=$HOME}"
if [[ -d "$dir" ]]; then
cd "$dir" >/dev/null; ls --color=auto
else
echo "bash: cdls: $dir: Directory not found"
fi
}ここでは、覚えやすさのために関数名を cdls() としました!この関数名はお好きなように変更できます。また、ls --color=auto のパラメータも自分のものに置き換えてください。ファイルを保存して閉じます。
変更を適用するには、次のコマンドを実行してください。
source ~/.bashrc以下のように、ディレクトリに移動するたびに自動的にその内容を一覧表示するようにします。
例:
$ cdls /var/log/
alternatives.log btmp dpkg.log kern.log syslog wtmp
apt cloud-init.log faillog landscape syslog.1
auth.log cloud-init-output.log installer lastlog tallylog
bootstrap.log dist-upgrade journal lxd unattended-upgrades
sk@ubuntuserver:/var/log$ pwd
/var/logまた、次のはるかに簡単な関数をあなたの ~/.bashrc ファイルに追加することもできます。
cdls() {
cd "$@" && ls;
}変更を有効にするために、~/.bashrc ファイルを適用してください。また、同じ名前の関数を同時に使用しないでください。1つの関数を使用するか、各関数に異なる名前(例:cdls と cl)を使用してください。
このトリックを知る前、私は普段次のことをしていました:
cd /var/log/そしてそれから;
ls
または、
cd /var/log/ && lsもう違います!今では、ディレクトリにcdするたびにその内容を一覧表示できるようになりました。これは、頻繁に大量のディレクトリを扱う時に便利です。
このトリックの大きな欠点の一つは、何百、何千ものファイルを含むディレクトリにcdする際に、数秒から数分待たなければならないということです。そのような場合は、通常のcdコマンドを使用してください。
おすすめの読書:
- Fishシェルで一つのコマンドでディレクトリを変更してファイルを一覧表示する方法
- Linuxでファイル名を2回入力せずに名前を変更する
- Bashのコツ - 1つのコマンドでcpやmvしてcdする方法
- lsコマンドを使わずにディレクトリ内容を表示するさまざまな方法
- さまざまな種類のファイルアーカイブを抽出する Bash 関数
