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

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

2
名前に文字列がないファイルを削除する
名前に文字列 '999'( ''なし)が含まれていないファイルを削除したい。 私が試してみました: grep -vlr 999 . | xargs -0 rm -f -- find . -print0 | grep --null-data -v 999 | xargs -0 rm -- しかし、どれも機能しません。私はmacOS Sierraとbash:3.2.57を使用しています。
9 bash  osx  filenames  rm 


3
ifconfigコマンドから最初のIPアドレスを取得する方法
ifconfigコマンドからの最初のIPアドレスを取得するにはどうすればよいですか? ifconfig -a enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255 inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link> ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet) RX packets 26846250 bytes 12068811576 (11.2 GiB) RX errors 0 dropped 58671 overruns 0 frame 0 TX packets 3368855 bytes 1139160934 (1.0 GiB) TX errors 0 …
9 linux  bash  awk  sed  ifconfig 

3
ファイル名のシェル展開(A | B)?
orたとえば、ファイルを読み取るときにシェルの選択肢を拡張することは可能ですか? つまり、たとえば、ファイル内のAまたはBに一致するgrepような構文をサポート(A|B)します。 同様に、これらのファイルがある場合: file1.txt file2.txt file3.txt file4.txt file5.txt 私は何ができるcat file{1..5}.txtでbash、それは範囲を拡大するよう、。いくつかのファイルに対してこれを行う同等の方法はありますか? たとえばcat file(1|5).txt、これら2つだけを印刷しますか?

1
STDERRの前にSTDOUTを表示しますか?
私はbashを./fff使い始めたばかりですが、生涯、特定のコマンドを実行する方法を理解することはできません。標準エラー出力の前に、標準エラー出力をstderrの前に出力してください(自分自身の意味について混乱しています)。 例えば $ printf "I am a\ndrill\n" > fff; $ cat fff nofile fff nofile fff I am a drill cat: nofile: No such file or directory I am a drill cat: nofile: No such file or directory I am a drill 次のように印刷する必要があります: I am a drill I am a …

10
Bash:IPv4アドレスの4つのセクションの1つを抽出します
構文${var##pattern}を使用して${var%%pattern}、IPv4アドレスの最後と最初のセクションを抽出できます。 IP=109.96.77.15 echo IP: $IP echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*} echo 'Extract the last section using ${var##pattern}: ' ${IP##*.} パラメータ拡張を使用してIPv4アドレスの2番目または3番目のセクションを抽出するにはどうすればよいですか? これが私の解決策です:配列を使用してIFS変数を変更します。 :~/bin$ IP=109.96.77.15 :~/bin$ IFS=. read -a ArrIP<<<"$IP" :~/bin$ echo ${ArrIP[1]} 96 :~/bin$ printf "%s\n" "${ArrIP[@]}" 109 96 77 15 また、私は使用して、いくつかのソリューションを書かれているawk、sedとcutのコマンドを。 さて、私の質問は:配列とIFS変更を使用しないパラメーター拡張に基づくより簡単な解決策はありますか?

7
`source`コマンドの反対
source変数の値を読み取り/印刷するために、bashスクリプトでコマンドを使用します more linuxmachines_mount_point.txt export linuxmachine01="sdb sdc sdf sdd sde sdg" export linuxmachine02="sde sdd sdb sdf sdc" export linuxmachine03="sdb sdd sdc sde sdf" export linuxmachine06="sdb sde sdf sdd" source linuxmachines_mount_point.txt echo $linuxmachine01 sdb sdc sdf sdd sde sdg source変数を設定解除するための反対は何ですか? 予期された結果 echo $linuxmachine01 < no output >

2
同じパイプラインで同じファイルの読み取りと書き込みを常に「失敗」させる方法は?
次のスクリプトがあるとします。 #!/bin/bash for i in $(seq 1000) do cp /etc/passwd tmp cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line cat tmp done 重要な行で、同じファイルtmpを読み書きしますが、失敗することがあります。 (パイプライン内のプロセスが並行して実行されるため競合状態が原因であると読み取りましたが、理由はわかりません-それぞれheadが前のデータからデータを取得する必要がありますか?これは私の主な質問ではありません、しかし、あなたもそれに答えることができます。) スクリプトを実行すると、約200行が出力されます。このスクリプトが常に0行を出力するように強制できる方法はありますか(そのため、I / Oリダイレクトtmpは常に最初に準備され、データは常に破棄されます)?明確にするために、このスクリプトではなく、システム設定を変更することを意味します。 あなたのアイデアをありがとう。

3
ユーザー入力後にテキストを非表示にする
ユーザーが入力した直後に表示されたコンテンツを非表示にする方法はありますか? たとえば、次のファイルを見てください #!/bin/bash read -n 1 -p 'how are you ? ' var if [ "$var" == "y" ] then echo 'Have fun' else echo 'Go to Doctor' fi これを実行すると、出力は how are you ? yHave fun how are you ?ユーザーがキーを押すとすぐに消えるようなものを探しています そして消えた後、印刷 Have fun したがって、上記のプログラムの最後の出力は、 Have fun 注:また、このスクリプトの上のシェル画面に出力されたものはすべて消去しないでください。 使っています bash
9 bash  scripting 

6
(bash)スクリプトA、スクリプトBを待機しますが、その子プロセスは待機しません
だから私はscriptAを持っています: ssh server1 -- scriptB & ssh server2 -- scriptB & ssh server3 -- scriptB & wait otherstuffhappens ScriptBは次のことを行います。 rsync -av /important/stuff/. remoteserver:/remote/dir/. rsync -av /not/so/important/stuff/. remoteserver:/remote/dir/. & exit 私が望む結果は、scriptAは、scriptBのすべてのインスタンスが完了するのを待ってから次に進むことですが、現在はそうですが、それほど重要ではないもののバックグラウンドrsyncも待機しています。これらは、待ちたくない大きなファイルです。 nohup、disown、&の違いを読み、さまざまな組み合わせを試しましたが、探している結果が得られません。 この時点で私はかなり困惑しています。何か助けていただければ幸いです!

1
envの出力で確認できる変数を出力できないのはなぜですか?
別のシェルインスタンスの環境変数を設定することに興味があります。だから私はいくつかの研究を行うことにしました。これについてのいくつかの質問を読んだ後、私はそれをテストすることにしました。 2つのシェルAとB(PID 420)を生成し、どちらもを実行していzshます。シェルAIから以下を実行しました。 sudo gdb -p 420 (gdb) call setenv("FOO", "bar", 1) (gdb) detach シェルBから実行するenvと、変数FOOが実際にbarの値で設定されていることがわかります。これにより、シェルBの環境でFOOが正常に初期化されたと思います。ただし、FOOを印刷しようとすると、設定されていないことを示す空の行が表示されます。私には、ここには矛盾があるように感じます。 これは私自身のArch GNU / LinuxシステムとUbuntu VMの両方でテストされました。またbash、変数がenvに表示されない場所でもテストしました。これは私には失望しますが、シェルがスポーン時にその環境のコピーをキャッシュし、それだけを使用する場合は理にかなっています(リンクされた質問の1つで提案されていました)。これはまだzsh変数を見ることができる理由には答えません。 echo $FOO空の出力はなぜですか? 編集 コメントへの入力後、もう少しテストを行うことにしました。結果は以下の表で確認できます。最初の列は、FOO変数が注入されたシェルです。最初の行には、その下に出力を表示できるコマンドが含まれています。変数FOOは次を使用して注入されました:sudo gdb -p 420 -batch -ex 'call setenv("FOO", "bar", 1)'。zsh:に固有のコマンドzsh -c '...'もbashを使用してテストされました。結果は同じであり、簡潔にするためにそれらの出力は省略されました。 Arch GNU / Linux、zsh 5.3.1、bash 4.4.12(1) | | env | grep FOO | echo $FOO …

4
フォルダーを同時に移動して再作成するにはどうすればよいですか?
私は、statisticsデータファイルが定期的に格納されるUbuntuサーバーで呼び出されるフォルダーを持っています。新しいファイルを保存するために使用できるようにフォルダを再作成statisticsしbackup-xxながら、フォルダの名前を変更するにはどうすればよいstatisticsですか? statisticsフォルダ内のファイルはPHPによって作成されますfile_put_contents。 フォルダーには多数のファイルがあるため、フォルダーの名前を変更することをお勧めしstatisticsます。

6
/root/.bashrcの設定を使用するようにsudoコマンドを取得するにはどうすればよいですか
私がカスタマイズされている.bashrc具体的には、エイリアスの数とllし、export LS_OPTIONS='--color=auto' 残念ながらsudo、これをで使用すると機能しないため/root/.bashrc、も変更しましたが、これによる違いはないようです。 sudo envショーHOME=/rootとSHELL=/bin/bash sudoの設定を使用するコマンドを取得するにはどうすればよい/root/.bashrcですか? これがbash対話式に実行された場合にのみ発生することを理解しているため、カスタマイズ方法に関する他の提案を受け入れます。
9 bash  debian  sudo 

2
Linuxでの標準へのbashファイルのリダイレクトはシェル( `sh`)とどう違うのですか?
実行中にユーザーを切り替えるスクリプトを作成し、標準のファイルリダイレクトを使用して実行しました。そうuser-switch.shです... #!/bin/bash whoami sudo su -l root whoami で実行するとbash、期待した動作が得られます $ bash < user-switch.sh vagrant root ただし、スクリプトをshで実行すると、異なる出力が得られます $ sh < user-switch.sh vagrant vagrant なぜbash < user-switch.sh出力が異なるのsh < user-switch.shですか? ノート: Debian Jessieを実行している2つの異なるボックスで発生します


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