macOSで自動的にcdおよびlsするシェルスクリプト


0

macOS Sierraを実行しcdていlsて、同時に1つのコマンドを使用できるシェルスクリプトを記述しようとしています。私はこのスレッドから脱出しますが、それを私のスクリプトに適合させる運はありませんでした。

ディレクトリ: /usr/local/bin/

ファイル名: cdls

コード:

#!/bin/bash
cdls() { builtin cd "$@" && ls; }

単純なecho hello worldファイル以外にシェルスクリプトを記述したことはないので、正しい方向に向けていただければ最高です。ありがとう。

編集:/usr/local/bin私のPATH


3
スレッドで他の人が言ったようcdls()に、.bashrcファイルに関数を追加するだけです。
-DrZoo

回答:


1

ターミナルで次のように入力して、これを実現します。

. cdls /usr/local/bin/

どこcdlsbashスクリプトは、私の中に保存されています$PATH

#!/bin/bash
cd $1
ls

.端末コマンドのソースでスクリプトではなく、サブシェルを使用するよりも。

$1bashスクリプトでは、かかるusr/local/bin/引数として(コマンドラインで定義されています)。

$1常にcdls特定のディレクトリに移動したい場合は、スクリプト内の他のディレクトリに置き換えることができます。

あなたが参照した他の質問に関する限り。一番の答えはこれをお勧めします:

cdls() { cd "$@" && ls; }

これは関数であり、bashスクリプトで使用するのではなく、(.bash_profilemacOSの場合)または.bashrc(Linuxの場合)に挿入する必要があります。


2

そのtheadから得た例は、bash関数を作成するためのものです.profile。プロファイルに関数を追加する代わりにスクリプトを作成する場合、スクリプトは次のようになります。

#!/bin/bash
builtin cd "$@" && ls

これはある時点で私が持っていたものですが、それはそのls部分だけを実行cdし、ディレクトリには入れません。
ジェイ

@Jayスクリプトバージョンは実際にcdディレクトリに対して実行されますが、サブシェルで実行されるスクリプトであるため、ディレクトリを変更するのはサブシェルのみであり、親シェル(つまりシェル)に影響を与える方法はありません。それが、スクリプトではなく関数でなければならない理由です。
ゴードンデイヴィソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.