端末コマンドを変更して追加の操作を実行できますか?


8

エイリアスや関数を調べましたが、満足できるものは思いつきませんでした。いくつかのシナリオを紹介しましょう。

  • cdがフォルダに入る回数の95%は、ls コマンドでフォローアップします。
  • 私の90%はmkdir、私cd自身がそれに夢中になっています。

あなたはアイデアを得ます。

これらのコマンド(または他の機能)をバインドする「最もクリーンな」方法は何でしょうか?


5
エイリアスが機能しなかったのはなぜですか?
するThorbjörnRavnアンデルセン

2
それでは、mkdirのcd結果はlsに追加する必要がありますか?
bmike

@bmikeさて、新しく作成されたディレクトリは空になるため、lsは何も出力しません。
Random832

@ Random832あなたはlsにフラグがないと仮定しますが、より重要なのは、私の質問は変更がどのように壊れているか、強すぎるかが明らかになることです。私は関数よりもエイリアスを好みますが、どちらも要求されたものを試すことができます。
bmike

1
@ fd0エイリアスが機能しなかったことに疑いはありません。理由を尋ねています。問題に対するより簡単な解決策があるかもしれません。
–ThorbjørnRavn Andersen 2015

回答:


4

あなたは、あなたにこれらの行を置くことができます.zsrhcか、.bashrc

[ -z "$PS1" ] && return
function cd {
builtin cd "$@" && ls -F
}

結果->

ここに画像の説明を入力してください

この回答からの説明:

私の.bashrcの前半で、[-z "$ PS1"] &&を返します。この行以降はすべてインタラクティブセッションにのみ適用されるため、スクリプトでのcdの動作には影響しません。

このコメントの詳細:

[-z "$ PS1"] $ PS(インタラクティブプロンプト変数)が「長さゼロ」(-z)かどうかをチェックします。長さがゼロの場合、これは設定されていないため、Bashをインタラクティブモードで実行しないでください。&&リターンパーツは、これらの条件下で、この時点でソース.bashrcを終了します。

ところで、質問をありがとう、それは本当にクールです:)

編集:

別の解決策は、lsをプロンプトに統合することです。OhMyZshでそれができると確信しています;)


1
一般に、これらの標準コマンドを使用する必要があるため、cd ls rmなどの標準コマンドと同じ名前を使用しないでください
user151019

@マーク私は 'rm -rf〜/ *'に同意します^^しかし、cdコマンドの場合、それほど危険ではありません。そして、Carlesは「既存のコマンドをアップグレードする」ことを望んでいるので、...
StrawHara

@StrawHaraが公開して以来、このソリューションを使用してきましたが、問題はありませんでした。私は「それがどういったか」を提供したかった:)そして、それは本当に便利です。これが私が使用する方法です(.zshrc):i.imgur.com/WHpROIE.png
Carles

13

私はこれのために新しいコマンドを作る傾向があります。それらを1つに統合することも論理的だと思います。

go() {
    if [ -d "$1" ]; then
        cd "$1" && ls
    else
        mkdir -p "$1" && echo "Created directory $1" && cd "$1"
    fi
}

これらを組み合わせたあなたのアイデアが好きです!:-)
Martin Allert、2015

5
この回答は、スクリプトで使用されたときにcd / mkdirのデフォルト定義を妨げないため、最もクリーンです
holroy

1
もちろん、Goプログラミング言語の使用を開始するとしたらどうでしょうか。:P
arxanas

@arxanas:makefileを使用しますか?;-)
DevSolar 2015

2
うーん、これが好きです。ただし、名前を誤って入力すると、新しいディレクトリが作成されます。休暇のチェック(cd /.... など../)を実装し、空のディレクトリを削除するのは難しいですか?つまり、ディレクトリから離れる場合は、空かどうかを確認し、空の場合は削除します。それを望まない場合でも、goの代わりにcdを使用できます
Schwertspize

6

私はこれらに私のようなものを追加しようとしました.bashrc

cd() {
    command cd "$@"
    command ls
}

mkdir() {
    command mkdir "$@"
    command cd "$@"
}

ただし、これにより、オーバーライドされたコマンドを使用するスクリプトが台無しになる可能性があり、オプションの処理が脆弱になる可能性があります(たとえば、-p上記のmkdirコマンドに渡したい場合は、にも渡されますcd)。別名を(cまたはなどmcd)別の名前で定義することをお勧めします。


1
[ -z "$PS1" ] && returnこれらの関数の前にファイルの最後に挿入すると役立つはずです
Carles

5

機能こそが進むべき道だと思います。何かのようなもの

chglist() {
    cd "$1" && ls
}

例として。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.