タグ付けされた質問 「bash」

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

2
一致する「」を探しているときに予期しないEOF-bashスクリプト
私はbashスクリプトを書いただけで、常にこのEOFエラーを受け取りました。 だからここに私のスクリプトがあります(OS Xでのみ動作します): #!/bin/bash #DEFINITIONS BEGIN en_sq() { echo -e "Enabling smart quotes..." defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool true status=$(defaults read NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool) if [ "$status" = "1" ] then echo -e "Success! Smart quotes are now enabled." SUCCESS="TRUE" else echo -e "Sorry, an error occured. Try again." fi …
38 bash  shell 

4
履歴から最後のN個のコマンドを取得する方法は?
私は私の最後のNコマンドが何であるかを見たいですhistory。うまくいくと思いましたhistory | tail -n 5が、複数行のコマンドは、それが持つ行の数だけカウントされることに気付きました。 $ echo "hello how are you" $ history | tail -2 how are you" 1051 history | tail -2 だから私の質問は次のとおりです:これを達成するためにコマンドの出力を解析する必要がありますか?

2
Bashには、Fishの自動提案や強調表示などの類似の機能がありますか?
最近、Fishの2つの機能に気づきましたが、Bashでもこれらの機能が利用できるかどうかだれか知っているのではないでしょうか 構文の強調表示 詳細: fishは、入力時に構文の強調表示を行うことにすぐに気付くでしょう。無効なコマンドはデフォルトで赤で表示されます: コマンドが存在しないか、実行できないファイルを参照しているため、コマンドが無効である可能性があります。コマンドが有効になると、別の色で表示されます fishは、入力時に有効なファイルパスに下線を引きます これにより、「somefi」で始まるファイルが存在することがわかります。これは、入力時に役立つフィードバックです。 自動提案 詳細: fishは入力中にコマンドを提案し、カーソルの右側に提案を灰色で表示します。 パスとオプションについて知っている 自動提案を受け入れるには、右矢印またはControl-Fを押します。自動提案があなたの望むものではない場合は、無視してください。
37 bash  shell  fish 


4
「日付」の出力から先行ゼロを削除する、またはそのような10進数の8進解釈を回避するにはどうすればよいですか?
私はこれを持っています: date +"%H hours and %M minutes" 私はフェスティバルを使ってそれを言います..しかし、それは「ゼロ9時間」のように言います。 しかし、日付は常に私に09を与えます...だから、bashはそれを簡単に9にすることができますか? 私が試した複雑なスクリプトで printf %d 09 しかし、失敗します.. 8進数ではありません:( 何か案が?
37 bash  shell  date  arithmetic 

4
不正なエイリアス宣言を見つけるにはどうすればよいですか?
特定の場所aliasが宣言されている場所を見つけようとしています。エイリアスを探すために知っている通常の場所をすべて検索しました。 〜/ .bashrc 〜/ .bash_profile / etc / bashrc / etc / profile 運がありません。 私がそれを知っているのaliasはwhich COMMAND、私がそうするとき、私は得る: alias COMMAND='/path/to/command' /path/to/command どのファイルaliasがalias名前を知っているだけを宣言しているのかを見つける方法はありますか?
37 bash  alias  bashrc 

1
シェルスクリプトでの「BASH-isms」の回避
Perl :: Criticに似たツールを使用して、シェルスクリプトを検査し、欠陥、移植性の問題、フォールバックのない非標準プログラムの使用、プログラムの減価償却などを指摘しますか? これset -o posixにより、POSIX以外の使用が無効になりますが、1から始まるzshインデックス付けのシェル配列、0からのbash、配列をまったくサポートしないashなど、知りたいことはわかりません。
37 bash  shell  zsh  ash 


3
printfのダッシュ
私はprintfを使用してbashスクリプトでかなりの出力をフォーマットしようとしています 例えば: ----------------------- | This is some output | ----------------------- しかし、私は理解できないいくつかの行動につまずいた。 $ printf "--" 私にエラーを与えます printf: usage: printf [-v var] format [arguments] そして $ printf "-stuff"結果-bash: printf: -s: invalid option したがって、printfは、私が引数を渡そうとしているのに、渡していないと考えているようです。 その間、完全に偶然に、この回避策を見つけまし $ printf -- "--- this works now ----\n"た。--- this works now ---- 誰でもこの動作を説明できますか?
37 bash 

1
`compgen`組み込みコマンドを理解する
からhelp compgen: $ help compgen compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word] Display possible completions depending on the options. Intended to be used from within a shell function generating possible completions. If the optional WORD …

5
Cronスクリプトでシステムの日付/時刻を使用する
サーバーにあるMySQLデータベースをバックアップするCronjobを設定していますが、同じファイルを何度も上書きし続けたくありません。代わりに、自動的に行われる一連のバックアップを選択する必要があります。例えば: ## Cronjob, run May 21st, 2011: mysqldump -u username -ppasword database > /path/to/file/21-03-2011.sql ## SAME Conjob, run May 28th, 2011: mysqldump -u username -ppasword database > /path/to/file/28-03-2011.sql 等々。 Cronjobでシステムの日付や時刻を何らかの変数として使用できる方法はありますか?そうでない場合、同じことを達成するための提案は何ですか?
37 bash  terminal  cron 

2
ターミナルのオートコンプリート:提案を循環
Ubuntuのセットアップでこれを使用していましたが、Fedoraに切り替えてから設定したいのですが、どのようにすればいいのか忘れてしまいました...アイデアは簡単です: 倍tabになったときに端末に提案を表示したくないので、代わりに各プレスをオンにして可能な限りすべての提案を循環させたいtab...これはVimでも行うことができます。 したがって、入力gedit aして押すtabと、すべてのファイルに最初の文字が表示されますa。

3
`構文エラー:配列を作成するときの「(" unexpected`」
2台の(Debian)Linuxサーバーがあります。シェルスクリプトを作成しています。 最初に、こうして配列を作成します: #!/bin/bash target_array=( "/home/user/direct/filename -p123 -r" ) それはうまくいきます。しかし、他のサーバーでこれを実行すると、次のようになります: Syntax error: "(" unexpected 私の知る限り、両方のサーバーは同じです。なぜこれがうまくいかないのか、誰かが光を当てることができますか? ターミナルに直接入力すると問題ありませんか? 私がそれを実行すると sh scriptname.sh エラーが表示されますが、次のように実行すると ./scriptname.sh 大丈夫そうです。違いは何ですか?

1
bash / shellスクリプトでlikeのようなUTF-8文字を使用する必要がありますか?
ここでの単純なコードは、次のコマンドで起動した場合、私のマシンで期待どおりに機能しbashます。 function ⏰(){ date } ⏰ これを使用している他の人に問題がありますか、それとも普遍的ですか? 私は今のところ他のソースコードでこのようなものを見たことがないので、疑問に思っています。 編集:無限の可能性があります。たとえば、機能の役割を絵文字の使用などですばやく区別するために使用できます。 ファイルを変更または削除できるものの場合は💣、進行中の作業の場合はinteractive、対話型メニューの場合は... そのすべての標準を作成する必要があると思いますが、興味深いアイデアのようです。 5文字までのランダムな行は、コードが何をしているのかを理解するのに役立ちます。(もちろん、それらの読み方を学ぶ必要があります。) さらなる編集:試してみる。今のところ、エディターですべての関数を折り畳むと(またはcat myscript.sh|grep function)このようになります。(私のユニコードはgeany、ここに比べて、または私の端末でずっと良く見えます。) function ⬚_1(){ function ⬚⬚_2(){ function ⬚⬚⬚_📃_D(){ function ⬚⬚⬚⬚_📃_X(){ function ⬚⬚⬚⬚⬚_📃_Y(){ function ⬚⬚⬚⬚⬚⬚_❓_P(){ function ⬚⬚⬚⬚_📃_Z(){ function ⬚⬚⬚⬚⬚_❓_U(){ function ⬚⬚⬚⬚⬚_❓_O(){ 奇妙なインデント⬚を使用して、関数の相互関係を示し、記号📃/❓を使用して、それぞれの役割を明確に区別しています。(もちろん、これらは私の実際の関数名ではありません。最後にランダムな文字を付けただけですが、それらがなくても関係を明確に見ることができます。)
36 bash  shell  unicode 

3
可変コンテンツを読み取るよりもファイルを開くのが速いのはなぜですか?
ではbashスクリプト私はからのさまざまな値必要な/proc/ファイルを。今までは、そのようにファイルを直接grepする数十行がありました。 grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo それをより効率的にするために、ファイルの内容を変数に保存し、それをgrepしました: a=$(</proc/meminfo) echo "$a" | grep -oP '^MemFree: *\K[0-9]+' ファイルを複数回開くのではなく、一度開くだけで変数の内容をgrepする必要があります。 bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null real 0m0.803s user 0m0.619s sys 0m0.232s bash 4.4.19 $ a=$(</proc/meminfo) bash 4.4.19 $ time for i in {1..1000};do echo "$a"|grep ^MemFree; done …

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