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

「シェル」という用語は、UnixおよびLinuxオペレーティングシステムに最も頻繁に関連付けられている、テキストベースの対話型コマンドインタープリターの一般的なクラスを指します。シェルスクリプトに関する質問については、「bash」、「powershell」、「ksh」などのより具体的なタグを使用してください。特定のタグがない場合は、ポータブル(POSIX準拠)ソリューションを想定する必要がありますが、「posix」を追加するか、代わりに「sh」を使用することをお勧めします。

5
シェルスクリプトを使用してsqliteからcsvにエクスポートする
次のように、sqliteクエリをcsvファイルにエクスポートするシェルスクリプトを作成しています。 #!/bin/bash ./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on" ./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv" ./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv" ./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;" ./bin/sqlite3 ./sys/xserve_sqlite.db ".exit" スクリプトを実行すると、出力は「out.csv」に保存されるのではなく、画面に表示されます。コマンドラインで同じ方法で動作していますが、シェルスクリプトがデータをファイルにエクスポートできない理由がわかりません。 私は何が間違っているのですか?
88 sqlite  shell  csv 


12
ファイルからロードされた文字列の変数をbashに強制的に展開させる
(ファイルからロードされた)文字列内の変数をbash(force?)で展開する方法を見つけようとしています。 「something.txt」という内容のファイルがあります。 hello $FOO world 次に実行します export FOO=42 echo $(cat something.txt) これは次を返します: hello $FOO world 変数が設定されていても、$ FOOは展開されませんでした。ファイルを評価またはソースすることはできません-ファイルを実行しようとするためです(そのままでは実行できません-変数を補間した文字列が必要です)。 何か案は?
88 linux  bash  shell  unix 


10
zipアーカイブ内の1つのファイルを更新する方法
古いファイルを解凍して削除し、新しいファイルを追加して再圧縮せずに、zipファイル内のファイルを置き換えることは可能ですか? 理由は、zipファイルが非常に大きいためです。zipファイル内に1つのxmlがあり、時々更新する必要があります。zipを解凍して再解凍するには長い時間がかかります。そのため、スクリプトを使用して、zip内の1つのxmlを置き換えることができるようにしたいと思います。私はすでに、私が持っているxmlの更新をチェックしています。 それで、解凍して再解凍せずに1つのxmlを置き換えることは可能ですか? 申し訳ありませんが、zipコマンドを使用してそのようなことを行いますが、問題は、スクリプトが実際にはAndroidスマートフォン用であり、zipは使用できるコマンドではないことです。残念ながら、それを省略しました。できれば間違いなくzipを使用していましたが、droidの解凍しかなく、busyboxにtarがありますが、tarは必要なことを実行しません
88 bash  shell  zip 

7
シェルスクリプトを使用してDockerコンテナ内でスクリプトを実行する
Dockerコンテナを設定するためのシェルスクリプトを作成しようとしています。私のスクリプトファイルは次のようになります。 #!bin/bash docker run -t -i -p 5902:5902 --name "mycontainer" --privileged myImage:new /bin/bash このスクリプトファイルを実行すると、新しく呼び出されたbashでコンテナーが実行されます。 次に、上記のシェルスクリプトからすでにコンテナ内にあるスクリプトファイル(test.sh)を実行する必要があります(例:cd /path/to/test.sh && ./test.sh)これを行うにはどうすればよいですか?
88 bash  shell  docker 


4
大きなファイルを切り捨てるためのUnixシェルスクリプト
たとえば3GBのスペースに達すると、アプリケーションによって継続的に書き込まれ/開かれているファイルを切り捨てる/空にするUnixスクリプトを作成しようとしています。私は以下のコマンドがそれを行うことを知っています: cp /dev/null [filename] しかし、これを本番環境でcronジョブとして自動的に実行します。ここに投稿して、これと同様のことをしているときに問題が発生したかどうかを確認してください。
87 bash  shell  truncate 


7
bash-whichコマンドからの結果をcdにパイプする方法
whichコマンドの結果をにパイプするにはどうすればよいcdですか? これは私がやろうとしていることです: which oracle | cd cd < which oracle しかし、それらのどれも機能しません。 これを実現する方法はありますか(もちろんコピー/貼り付けではありません)? 編集:考え直してみると、宛先ファイルはフォルダ/ディレクトリではないため、このコマンドは失敗します。 だから私は今、末尾の「/ oracle」部分を取り除くためのより良い方法を考えて考えています(sedまたはawk、あるいはPerlさえ):) 編集:さて、それは私が最終的に得たものです: cd `which oracle | sed 's/\/oracle//g'`
87 linux  bash  shell  cd 

5
別のシェルスクリプトからシェルスクリプトの関数を呼び出すことはできますか?
2つのシェルスクリプトがあります。 2番目のシェルスクリプトには、次の関数second.shが含まれています 。 func1 func2 first.shは、いくつかのパラメーターを使用して2番目のシェルスクリプトを呼び出し、その関数に固有の他のいくつかのパラメーターを使用してfunc1およびfunc2を呼び出します。 これが私が話していることの例です second.sh val1=`echo $1` val2=`echo $2` function func1 { fun=`echo $1` book=`echo $2` } function func2 { fun2=`echo $1` book2=`echo $2` } first.sh second.sh cricket football func1 love horror func2 ball mystery どうすればそれを達成できますか?
87 shell  unix 

6
Rubyの外部プロセスのSTDOUTから継続的に読み取る
コマンドラインからrubyスクリプトを介してblenderを実行したいのですが、その後、blenderからの出力を行ごとに処理して、GUIのプログレスバーを更新します。ブレンダーが外部プロセスであり、その標準ストリームを読み取る必要があることはそれほど重要ではありません。 ブレンダープロセスがまだ実行されているときに、ブレンダーが通常シェルに出力する進行状況メッセージをキャッチできないようです。いくつかの方法を試しました。ブレンダーがまだ実行されている間ではなく、ブレンダーが終了した後、私は常にブレンダーの標準出力にアクセスしているようです。 失敗した試行の例を次に示します。ブレンダーの出力の最初の25行を取得して出力しますが、ブレンダープロセスが終了した後でのみです。 blender = nil t = Thread.new do blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1" end puts "Blender is doing its job now..." 25.times { puts blender.gets} 編集: 少し明確にするために、blenderを呼び出すコマンドは、進行状況を示す出力のストリームをシェルに返します(パート1-16が完了したなど)。ブレンダーが終了するまで、出力を「取得」するための呼び出しはブロックされているようです。問題は、blenderが出力をシェルに出力するときに、blenderの実行中にこの出力にアクセスする方法です。
86 ruby  shell  process  stdout  stdin 

4
私の環境変数は何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、話題のスタックオーバーフローのため。 7年前に閉鎖されました。 この質問を改善する bashで自分の環境変数を調べたいと思います。それらはどこかに保管されていますか?
86 linux  bash  shell  ubuntu 

6
findコマンドを使用しますが、2つのディレクトリ内のファイルを除外します
で終わるファイルを見つけたいの_peaks.bedですが、フォルダー内のファイルを除外tmpしscriptsます。 私のコマンドは次のようなものです: find . -type f \( -name "*_peaks.bed" ! -name "*tmp*" ! -name "*scripts*" \) しかし、それはうまくいきませんでした。tmpおよびscriptフォルダ内のファイルは引き続き表示されます。 誰かがこれについてアイデアを持っていますか?
86 linux  shell  unix  find 

9
スクリプトを使用して、特定の作業ディレクトリでGit Bashウィンドウを起動するにはどうすればよいですか?
スクリプト(BashまたはWindowsバッチ)を使用して、指定した作業ディレクトリで新しいGit Bashウィンドウを起動するにはどうすればよいですか? 私の目標は、それぞれが異なる作業ディレクトリに設定された単一のスクリプトから複数のGitBashウィンドウを起動することです。このようにして、Git Bashウィンドウを開いて各ウィンドウを正しい作業ディレクトリに移動する代わりに、コンピューターを起動した後すぐに作業を開始できます。 この質問のようにデフォルトの作業ディレクトリを変更する方法を尋ねているのではなく、スクリプトから異なる作業ディレクトリで1つ以上のターミナルウィンドウを起動する方法を尋ねています。

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