タグ付けされた質問 「shell-builtin」

ビルトインシェルは、シェルから呼び出されるコマンドであり、シェル自体で直接実行されます。

5
BashでN回のうち1回コマンドを実行する方法
コマンドをランダムに実行する方法、たとえば10回のうち1回が必要です。これを行うための組み込みまたはGNU coreutilはありますか?理想的には: chance 10 && do_stuff do_stuff10回に1回しか実行されないのはどこですか?スクリプトを記述できることは知っていますが、それはかなり単純なことのように思え、定義された方法があるかどうか疑問に思っていました。

3
yashシェルのprintfが組み込みコマンドであるかどうかについて少し混乱しています
yashシェルがありprintf、内蔵してそのマニュアルに従って。 しかし、これはyashデフォルト設定のシェルで見られるものです: kk@eeyore ~ $ command -v printf /usr/bin/printf kk@eeyore ~ $ type printf printf: a regular built-in at /usr/bin/printf されたprintfビルトインこのシェルではありませんか?結果は、外部コマンドとしても利用可能な、他の多くの組み込みユーティリティと同様です。 比較として、pdksh(kshOpenBSDでは、組み込みでprintfはありません): $ command -v printf /usr/bin/printf $ type printf printf is /usr/bin/printf そして中bash(ここprintf でビルトイン): $ command -v printf printf $ type printf printf is a shell builtin

2
bashで開始された実行可能ファイルの順序
testコマンドをbashで実行すると、test(条件式を評価する)組み込みユーティリティが起動します。 $ type test test is a shell builtin $ type -a test test is a shell builtin test is /usr/local/bin/test test is /usr/bin/test $ ただし、type -a test上記の出力に示されているように、test/ usr / local / binディレクトリに別のファイルがあり、/ usr / binディレクトリに別のファイルがあります。実行可能ファイルの順序はどのようになっていますか。つまり、組み込みコマンドは常に優先され、残りのコマンドは$ PATH変数のディレクトリ順序に依存していますか?さらに、起動した実行可能ファイルの順序を変更することは可能です。たとえば、と入力するとtest、bash-builtinの代わりに/ usr / bin / testが起動しtestますか?

4
シェル組み込みを明示的に呼び出す方法は?
cd必要に応じてコマンドの機能をカスタマイズしたい。 私は次の関数を定義しました- function cd () { cd "$@" && pushd "$@"; } この関数の目的は、ディレクトリをスタックに自動的にプッシュすることです。これにより、pushd .毎回手動で入力する手間が省けます。 ただし、上記の関数は、呼び出しcdがcd組み込み関数ではなく関数自体であると解釈されるため、無限再帰関数です。 cdこの関数の組み込みを参照するにはどうすればよいですか? エイリアスはを使用してエスケープできることを知っています\。より明示的な方法で関数をエスケープしたり、組み込み関数を参照する方法は何ですか? 注:関数の名前を他の名前に変更したくありません。

1
zshビルトインのヘルプメッセージを取得するにはどうすればよいですか?
bashビルトインの簡単な使用法メッセージを取得したい場合help <builtin>は、コマンドプロンプトで使用できます。 $ help export export: export [-fn] [name[=value] ...] or export -p Set export attribute for shell variables. Marks each NAME for automatic export to the environment of subsequently executed commands. If VALUE is supplied, assign VALUE before exporting. Options: -f refer to shell functions -n remove the export …

4
Bashのビルトインexecの使用例/実用例
Bashの組み込みexecのドキュメントからこれを考慮してください。 execは、新しいプロセスを作成せずにシェルを置き換えます ユースケース/実用例を提供してください。これが理にかなっているのかわかりません。 私はグーグルでI / Oリダイレクトについて知りました。もっと説明してもらえますか?

1
外部コマンドではなく、bashで組み込みの「time」コマンドを使用する
timeコマンドを使用してtime、外部のGNU timeコマンドではなく、組み込みのコマンドを使用する必要がある状況に遭遇しました/usr/bin/time。だから、どうすればこれを行うことができますか?私はどこかで使用enableおよび/またはcommand役立つだろうを見ましたが、彼らはしませんでした。 これはユースケースです: watch "time ls" 外部/usr/bin/timeコマンドを使用しますが、これは望ましくありません!これは、端末で次のようtimeに実行するときに内部bash関数を呼び出すと発生しますtime ls。 $ time ls 正反対の要求はここで回答されていることに注意してください。 bashにシェル組み込みではなく外部の `time`コマンドを使用させる 2つのコマンドには多くの違いがあります。内部timeはより正確ですが(必要な場合)、外部コマンドにはより多くのオプションがあります(必要ありません)。

1
「待機&」(「待機アンパサンド」)は、便利な(bash)シェル/シェルスクリプトのイディオムまたはテクニックですか?
GNU「bash」シェルを実行しているLinuxマシン用のシェルスクリプトを「継承」しました。1つの特定のケースでは、マシンはGNU bashバージョン2.0.5bを実行します これらのスクリプトの1つにはwait &、forループの「for line」の一部として(「アンパサンドを待つ」)命令があります。一見すると、それは奇妙な/興味深いイディオムのようですが、私のWeb検索で関連性のあるものは何も返されませんでした。man waitは、「BASH_BUILTINS」(「BASH BUILTINS COMMAND」)のマンページを示しています。 wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job spec­ification; if a job spec is given, all processes in that job's pipeline are waited for. If n is not given, …

3
ブレース(順列)と配列拡張を同時に使用できますか?
Bashの{}ブレース展開構文により、簡単な順列を作成できます # echo {b,c,d}{a,e,i,o,u} ba be bi bo bu ca ce ci co cu da de di do du しかし、それは非常に厄介な使用を除き、アレイと一緒にこれを使用することが可能ですか/場合私にははっきりしていない$() echoとeval 中括弧(順列)展開で配列を使用する簡単な方法はありますか? たとえば、次のようなものを想像してみてください(もちろん機能しません)。 CONS=( b c d ) VOWEL=( a e i o u ) echo {${CONS[@]}}{${VOWEL[@]}}

2
シェル組み込みコマンドについて
中には、bashのマニュアル、次のことが書かれています Builtin commands are contained >>> within <<< the shell itself また、この答えは、 A built-in command is simply a command that the shell carries out itself, instead of interpreting it as a request to load and run some >>> other program <<< compgen -b上bash 4.4で実行すると、すべてのシェル組み込みコマンドのリストが表示されます。私はその一例を参照[し、killシェルの組み込みコマンドであることを記載されています。しかし、実際の場所は次のとおりです。 /usr/bin/[ /bin/kill builtinコマンドが/bin/bash実行可能ファイルにコンパイルされるという意味だと思いました。だから私を本当に混乱させているのは何builtinですか:私を訂正してください、しかしそれが実際にシェルの一部ではない場合、どのようにして別のコマンドをにすることができますか?

4
組み込みコマンドがいつメモリに読み込まれるか
cdシェルで入力したとしましょう。されcd、その時点でメモリからロード?私の直感は、これらの組み込みコマンドはカーネルがロードされた後にシステムメモリにプリロードされることですが、誰かが実際にコマンドを起動したときにのみロードされると主張しました(シェルでEnterキーを押します)。これを説明する参照があるかどうか教えていただけませんか?

2
bash配列の要素数をカウントします。配列の名前は動的です(つまり、変数に格納されます)。
質問の簡単な説明: 配列の完全なコピーを作成したり、配列を使用したりせずに、配列の名前が動的である(つまり、変数に格納されている)bash配列の要素数をカウントする組み込みのbashメソッドはありevalますか? 詳しくは: bashパラメータ置換を使用すると、次のことができます。 配列の長さを決定します myArr=(A B C); echo ${#myArr[@]}。 変数を名前で間接的に参照します NAME=myVar; echo ${!NAME}(これは配列要素にも適用されます): NAME=myArr[1]; echo ${!NAME} しかし、配列の名前が別の変数に格納されている場合、配列内の要素の数をどのように決定できますか?(これは、上記の2つのパラメーター置換の組み合わせと見なすことができます。)例: myArr=(A B C D) NAME=myArr # Get the number of elements in the array indirectly referenced by NAME. count=${#$NAME[@]} # This syntax is invalid. What is the right way? 以下は、すべて失敗する複数の試行です。 # Setup …

1
「$-」内の「s」とは何ですか?
私は通常、の内容をよく知っています$-。最近のCentOSでは、次のようになっています。 [grochmal@orion ~]$ echo $- himBH hmBHはすべてのオプションsetでありi、私のシェルがインタラクティブであることを意味します。 それでも、私のArch Linuxでは次のものが得られました。 [grochmal@haps ~]$ echo $- himBHs 私はで有用な何かを見つけることができませんman bashし、set -s私にエラーを与えます。それは何のs略ですか?

4
「set」というプログラムが実行されないのはなぜですか?
次のような簡単なCプログラムを作成しました。 int main(int argc, char *argv[]) { if (argc != 5) { fputs("Not enough arguments!\n", stderr); exit(EXIT_FAILURE); } そして、私は自分のPATHをetc / bash.bashrcで次のように変更しています: PATH=.:$PATH このプログラムをset.cとして保存し、コンパイルしています。 gcc -o set set.c フォルダ内 ~/Programming/so しかし、電話すると set 2 3 何も起こりません。表示されるテキストはありません。 呼び出す ./set 2 3 期待される結果を与える 以前にPATHに問題があったことはありません。 which set を返します./set。したがって、PATHが正しいようです。何が起こっているのですか?

2
シェル固有ではないものは何ですか?
一部の回答では、回答にシェル固有のコマンドを使用しないことを推奨するコメントが表示されます。 すべてのシェルに存在するコマンド、演算子などを知るにはどうすればよいですか?規格のリストはありますか? man builtinsコマンドのリストを示します。これらは、すべてのシェルで機能するポータブルシェルスクリプトで使用できる唯一のコマンドですか? 組み込みはシェル固有ですか? Linuxの標準は他のUnixの標準と異なりますか? 構文はどうですか?一部のシェルでは句読点、演算子などが異なる場合がありますか?

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