エイリアスまたは関数内で動作するように実行可能なコマンドをどのようにラップできますか?

エイリアスまたは関数内で動作するように実行可能なコマンドをどのようにラップできますか?

私はまだシェルスクリプトの欠点を理解していますが、ますます慣れているようです。

頻繁に生成する必要があるtarファイルを生成するためにエイリアスを生成しようとしましたが、tarエラーが発生し続けます。テストと同様に、単純なラッパーを作ってみましたが、うまくいきませんでした。

function eztar(){

    if [ -d $1 ]
    then
        export QTAR="$1.tar";
        tar –cvf ${QTAR} "$1/";

    else
        echo "Missing directory name";
    fi

}

>eztar mydir
tar: invalid option -- ''
Try `tar --help' or `tar --usage' for more information.

この場合、-cvfオプションは何とか使用されますか?

とにかくそれは別の問題です。

Apacheのメモリ不足の問題があります。あまりにも多くのシャットダウンに失敗したため、セマフォがいっぱいになったことがわかったので、この問題を解決するためにお気に入りのスクリプトを見つけてエイリアスとして実行しようとしました。 (しかし、これを行うより良い方法はありますか?)エイリアスをチェックするとき、forループは現在セマフォリストに展開されますが、これは私が望むものではないので、これを関数に入れる必要があると思います。

alias semfix='eval "for i in `ipcs -s # grep apache # awk '{print $2}'` ; do ipcrm -s $i; done";'

私はUnixのすべてを持ってエイリアスやラッパー関数を作ることができないことを学んでいます!

答え1

タイプミスを除いて、最初の機能に問題はありません。
前の文字はマイナス記号ではcvfありません。
標準を使用していますか?アメリカ式101キーキーボード?

すべてを削除すると(ほとんどのtarスイッチのマイナス記号はオプションです)、機能は正しく機能します。
それ以外の場合は、適切な方法を使用して問題を解決できます。-cvf

export
また、エクスポートには、このような関数に必要なものよりも高い環境変数の持続性は必要ありません。

私はあなたが読むことを提案します高度なバッシュスクリプトガイド
見てletlocalそしてexport
どう違うのか、いつ別のものを使うべきかを調べてください。

はい、2番目のものを関数として書き直す必要があります。
学習しながらネストされた参照とパイプを減らすことで、関数とエイリアスを簡単に作成できます。

後で1つのライナーが出てくる:)

答え2

tarマイナス記号を使用しないでください。tar cfv

これは元の非標準形式です。

関連情報