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

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

2
エコーテスト| stty -echo-> stty:標準入力:デバイスの不適切なioctl
私は次のようにユーザー入力を受け取るperlスクリプトで遊んでいました: system( qw( stty -echo ) ); $? == 0 or die "Error unable to disable character printing.\n"; print "$prompt: "; my $input = <STDIN>; echoを使用して応答をパイプすることができると思いましたが、stty -echoコマンドと競合し、次のエラーを生成します。 stty: standard input: Inappropriate ioctl for device perlスクリプトを変更せずに、入力を渡すためにbashで何ができるでしょうか?何が問題の原因ですか?
9 bash  perl  stty 

2
環境変数で関数を定義する機能自体がセキュリティリスクではないのはなぜですか?
私が理解しているように、一般に、環境変数に格納される情報を誰にでも提供しても安全だと考えられています。シェルショックの脆弱性はここでの問題です。これは、bashの新しいインスタンスが起動したときに環境変数内の関数定義の最後のコードが実行され、サーバー上で実行したいコードをだれにも実行させたくないということです。 。関数定義自体は明らかにセキュリティリスクではありませんが、コードを実行するには明示的に呼び出す必要があるため許可されています。 私の質問は、悪意のあるユーザーが悪意のあるコードを一般的なコマンドとして含む関数を単純に定義できずls、スクリプト(または実行されているもの)がいつかこのコマンドを使用することを期待できないのですか? 私が考えていることの例: $ export ls='() { echo "doing bad things..."; }' $ bash -c ls doing bad things...

4
凍結せずにジョブをバックグラウンドに配置
あなたはこのように仕事を始めるとしましょう foo そして、それをバックグラウンドに置きたいと望みます。Ctrl+ Zと入力するとbgトリックが行われますがfoo、Ctrl+ Zとの間でフリーズしbgます。最初にフリーズせずにfooをバックグラウンドに配置するにはどうすればよいですか?
9 bash 

2
bash履歴の変更を元に戻す方法はありますか?
上に押すと、以前に入力したコマンドを確認できます。ただし、そのうちの1つを変更すると、履歴が変更されることに気づきました。たとえば、次のように入力すると、 echo a echo b echo c [up][up][backspace]d[ctrl+c] 履歴は、2番目のコマンドがであったことを示してecho dいecho bます。どうすればecho b歴史の最初の人を維持できますか? たとえば、多くのオプションを指定して、非常に長いコマンドを実行するとします。その後、マイナーな変更を加えてもう一度実行したいので、履歴を調べて変更を加えますが、実際には再実行する必要はなく、別のオプションを考えているだけです。代わりに行います。その後、戻って、自分が実行したコマンドを思い出させたいのですが、ちょっと待ってください。履歴が間違ったものを表示しています。 これはめったに発生しませんが、発生したときは本当にイライラします。元の履歴を自動的に保存する方法はありますか?

3
Bashでstdoutの線幅を動的にトリミングする
最近、私はpsコマンドを実験していますが、長いパスが次の行(または2行)に折り返されて読みにくくなる場合があります。ps出力を別のプログラムにパイプして、出力をx文字数に制限したい。 これが私がこれまで持ってきたものですが、それは完全にうまくいきません: ps aux | cut -c1-$(stty size | cut -d' ' -f2) $(stty size | cut -d' ' -f2)は167と評価されますが、の有効な入力ではないようですcut。 このタイプの構文をbashで機能させる方法はありますか?
9 bash  shell  stdout  cut 

1
算術オーバーフローなどを警告しないbashシェルの根拠は何ですか?
bashシェルの算術評価機能には制限が設定されています。マニュアルはシェル演算のこの側面については簡潔ですが、次のように述べています: 評価はオーバーフローのチェックなしで固定幅整数で行われますが、0による除算はトラップされ、エラーとしてフラグが立てられます。演算子とその優先順位、結合性、および値は、C言語の場合と同じです。 これが参照する固定幅整数は、実際にはどのデータ型が使用されているか(そしてこれがこれを超えている理由の詳細)ですが、制限値は次のように表されます/usr/include/limits.h。 # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # ifdef __USE_ISOC99 # define LLONG_MAX 9223372036854775807LL # define ULLONG_MAX 18446744073709551615ULL そして、それを知ったら、次のようにこの事実の状態を確認できます。 # getconf -a | grep 'long' LONG_BIT 64 ULONG_MAX 18446744073709551615 これは64ビット整数であり、これは算術評価のコンテキストでシェルで直接変換されます。 # echo $(((2**63)-1)); echo $((2**63)); echo $(((2**63)+1)); echo $((2**64)) 9223372036854775807 //the practical usable limit for …

2
インタラクティブにビデオファイルを連結する
複数のMP4ビデオファイルをインタラクティブに1つのファイルに連結(結合)する方法 コマンドラインから2つのファイルに対してこれを行うプログラムはたくさんあります。例えば: ffmpeg avconv MP4Box しかし、これをインタラクティブに行うためのソリューションが必要になることがよくあります。

2
プロセスが一定時間静かになった場合、プロセスを強制終了します
私は静かにしてそこに留まるという厄介な癖のあるユーティリティを持っています。これはプロセスにどれくらいの期間これを行うのかすでに知っているのでtimeout、これと戦うために使用していますが、その前にそれを行うこともあります。timeoutstdoutへの出力の送信を停止した場合、プロセスを強制終了する同様のツールはありますか?
9 linux  bash  shell  stdout  timeout 

2
「履歴」はbashスクリプト内で実行すると機能しなくなります
特定の文字列を見つけるためにbashの履歴をgrepする簡単なスクリプトを書いています。コマンドラインで、次のように実行できます。これは正常に機能します。 history | grep git しかし、上記と同じコマンドでbashスクリプトを作成すると、突然history何も返されません。 #!/bin/bash history | grep git 最初の行を削除する#!/bin/bashと、スクリプトが再び動作します。ここで何が起きてるの?historybashスクリプト内でどのように使用できますか?

1
bash_completionを色付け
入力grepしてTAB2回押すbash_completionと、現在のディレクトリ内のファイルとディレクトリが一覧表示されます。最初の文字を入力すると、ファイル名も完成します。これは非常に素晴らしいことですが、唯一の問題は、ディレクトリに多くのファイルとサブディレクトリが含まれている場合、混乱して混乱する可能性があることです。 bash_completion何をするのと同じように、少なくともディレクトリに異なる色を付けることができれば非常に役立ちますls -lA。 これは可能ですか? 編集: これは私のサンプルbash_completion設定ファイルは次のようになります: if [[ ${cur} == -* ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 else _filedir fi
9 bash  colors 

1
ls -l --group-directories-first(シンボリックリンクにも作用)
lsオプションを指定する--group-directories-firstと、ディレクトリが一番上に表示され、出力がlsきれいになります。 ls -l --group-directories-first ただし、symlinks実際symlinksにはディレクトリに対するには作用しません。使用する可能性があります ls -l -L --group-directories-first これは両方の種類のディレクトリを上にリストしますが、適切なディレクトリとシンボリックリンクされたディレクトリを区別しないため、やはり混乱を招きます。 ls通常のディレクトリとは区別しながら、シンボリックリンクされたディレクトリを上に表示できますか? 編集: 私はを使用していbashます。
9 bash  zsh  directory  ls  symlink 

3
シェル構成スクリプトでは、GNUと比較したBSD上のcoreutilsの違いをどのように説明できますか?
今月までは、シェルの構成はかなり単純です(主に、.bashrcまたは.bash_profileいくつかのエイリアスを使用して)。しかし、zshとbashのどちらを使用しているかによって異なる動作が得られるように、リファクタリングしています。彼らは最初に何でも機能する一般的なシェル構成ファイルを調達し、次に使用されている特定のシェルに特化します(私はこれにシンボリックリンクします)。 今日lsは仕事をやめてびっくりしました。リファクタリング中に.bashrcエイリアスがあったことが判明しました alias ls='ls --color=always' それがために何かを壊したlsOSXのターミナル上のbashで。BSD lsは-G色が好きだが、GNU(またはUbuntuにあるものは何でも)が好きだ--colorと思ったら、かなりの数のオプションが異なることは明らかでした。 私の質問は、BSDとGNU coreutilsの間のオプションの違いなどを説明する最良の方法は何ですか?ifブロックでenv変数をテストして、使用されているOSを確認し、正しい動作を適用する必要がありますか?または、OSごとに個別の構成ファイルを作成する方が理にかなっていますか? これらの質問への回答は主観的である可能性がありますが、BSDとGNU coreutilsの違いの範囲の概要と、ほとんどの* nixで汎用構成を使用可能にするためにこれらを回避する戦略はかなり客観的なようです。
9 bash  bashrc  bsd  gnu 

4
ファイルのグループ権限を検査する方法
bashスクリプトからファイルのグループ権限を検査したいと思います。具体的には、ファイルにグループ書き込み可能ビットがオンになっているかどうかを確認する必要があります。 それでおしまい。そのような単純な。しかしながら: 持ち運びにも便利です。 test -w <file グループ書き込み可能かどうかはわかりません。 の出力はls -ld人間にとっては良いですが、スクリプトについてはよくわかりません。技術的にはdrwxrwxr-x、グループビットを抽出するなど、出力を解析できましたが、これは脆弱に思われます。 のインターフェイスstatは、OS Xと他のシステムとの間で完全に互換性がありません。 find <file> -perm ... おそらく答えにはなりませんか?
9 bash  permissions  ls  stat 

1
特定のコマンドに対してのみBashのオートコンプリートを無効にする
特定のコマンドに対してのみBashのオートコンプリートを無効にすることはできますか? 使用例:明らかな理由により、私がrmrootになっているときは、コマンドのオートコンプリートを無効にしたいと思います。また、オートコンプリートを完全に無効にすると、ひどい痛みになるので、それrmだけを削除したいと思います。 これは、できればハッキング/etc/bash_completionや友達なしで行うことができますか?

1
catを使用して変数をファイルにエコーする方法は?
私はこのような簡単なスクリプトを持っています: #!/bin/bash BOO=bla-bla-bla cat > ./Makefile <<'EOF' Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include EOF それでもファイルに出力します: Hello INCLUDES := -I/data/opt/include/ -Ideps/ -I$BOO/include cat文字列内の名前ではなく、変数値を使用する方法

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