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

Bashは、GNUプロジェクトのUnixライクなオペレーティングシステム用の無料のシェルです。

1
ヒアドキュメントの新しい行がファイルから消えます
ヒアドキュメントをファイルにエコーしていますが、改行が失われています このスクリプトを実行する #!/bin/bash NAME="$1" mkdir -p $NAME FILE=$(cat <<SETVAR name = "$NAME" type = "test" SETVAR ) echo $FILE > $NAME/$NAME.txt arg:fooを使用すると、foo / foo.txtにあるファイルが含まれます。 name = "foo" type = "test" 何か案は?ありがとう
12 bash  newlines 



5
変数がシェルの数値と等しいかどうかをテストする方法
このシェルスクリプトが機能していません。 入力: Server_Name=1 if [ $Server_Name=1 ]; then echo Server Name is 1 else echo Server Name is not 1 fi 出力: Server Name is 1 しかし、私がを変更するServer_Name=2と、出力は次のようになります。 Server Name is 1 に変更Server_Nameしたときに2、次のように伝えますServer Name is 2。 私はそれがif [ $Server_Name=1 ];一部であることを知っています。 どうすれば修正できますか?


5
出力をリダイレクトするときに特定のファイル権限を設定するにはどうすればよいですか?
これはおそらく重複していますが、すべての検索で、アクセス拒否エラーに関する質問が出ています。 bashシェルでコマンドを実行しています。出力をリダイレクトして、最初の実行時におそらく存在しないファイルに追加したいと思います。出力リダイレクトでこのファイルを作成する必要がある場合は、特定のファイルアクセス許可モードを設定します。1つのコマンドでこれを行う方法はありますか? たとえば、私は試すかもしれません foo >> /tmp/foo.log 0644 最終的0644に必要なアクセス許可はどこにありますかfoo.log。私がbashで実験したほとんどのコマンドは0644、への追加の引数として解釈されfooます。 これによりchmod、書き込みの前または後に、アクセス許可に対して2番目のコマンドが実行されるように感じます。 私はGNU bash 4.2.25とUbuntu 12.04を使用していますが、それが違いを生むのであれば、一般的な答えが優先されます。

3
topコマンド出力のフィルタリング
私はMacを使っていますが top PID、COMMAND、および%CPU列のみが表示されるように、特定のプロセスに対するコマンド プロセスのPIDを取得したら、実行します。 top -pid 1234 ただし、これはそのプロセスについて15を超える列を表示します。コマンドの出力をawkにパイプインして、次のものだけを表示できますか。 PID COMMAND %CPU 列? 出力をテキストファイルに保存してから処理したくありません。私はリアルタイムでプロセスを監視することに興味があります。
11 macos  command-line  bash  awk  top 

1
同じスクリプトでコマンドを実行するためにbashスクリプトでユーザーIDを切り替え/変更するにはどうすればよいですか?
外部スクリプトを呼び出さずにいくつかのコマンドを実行してrootから他のコマンドの実行に戻るには、スクリプト内のユーザー識別情報(インストールプロセスの一部としてrootとして実行される)を切り替える方法はありますか? 並べ替え: #!/bin/bash some commands as root SWITCH_USER_TO user some commands as user including environment variables checks, without calling an external script SWITCH_USER_BACK some other stuff as root, maybe another user id change...


2
終了したサブコマンドにパイプするときに、bash whileループが終了しないのはなぜですか?
以下のコマンドが終了しないのはなぜですか?ループは終了するのではなく、無限に実行されます。 より複雑なセットアップを使用してこの動作を発見しましたが、コマンドの最も単純な形式は次のようになります。 終了しません: while /usr/bin/true ; do echo "ok" | cat ; done | exit 1 上記のタイプミスはありません。各「|」パイプです。「出口1」は、実行されて終了した別のプロセスを表します。 「exit 1」により、whileループ(リーダーのないパイプに書き込み)でSIGPIPEが発生し、ループが発生することが予想されます。しかし、ループは実行を続けます。 コマンドが停止しないのはなぜですか?

1
画面-行頭にカーソルを移動
bashでは、通常、を使用してカーソルを行の先頭に移動できますCTRL+a。 画面でCTRL+aは、特別な画面コマンドに使用されています。 a)画面コマンドに別のキーの組み合わせを使用する、またはb)別の組み合わせを使用してカーソルを行の先頭に移動するにはどうすればよいですか?
11 linux  bash  gnu-screen 

1
sedの `-n`オプションは何をしますか?
これは、次のマニュアルページのエントリです-n。 -n パターンスペースの自動印刷を抑制する 特定の操作に使用しない場合-n、各行が標準出力に印刷されます(要求された行が2回印刷されます)。 $ cat test.txt first second third fourth fifth $ sed -n '2,3p' test.txt second third $ sed '2,3p' test.txt first second second third third fourth fifth ただし、この法律は他のコマンドには適用されません。 $ sed -n 's/t/T/' test.txt $ sed 's/t/T/' test.txt firsT second Third fourTh fifTh それで-n、正確に何をしますか?

1
このソフトリンクが期待どおりに機能しないのはなぜですか?
bash4.3 # pwd /bin bash4.3 # ll sh lrwxrwxrwx. 1 root root 4 May 17 22:22 sh -> bash bash4.3 # ll bash -rwxr-xr-x. 1 root root 1072056 May 17 22:22 bash bash4.3 # bash bash4.3 # sh sh-4.3# 私のOSはfedora 24(デフォルトのGNOMEバージョン)です。 例から、我々は知ることができます:下/bin、bashバイナリ実行ファイルです。shへのソフトリンクbashです。 したがって、私の知る限り、type bash and press enterと同じ結果を正確にもたらす必要がありますtype sh and press …
11 linux  bash  shell  fedora  sh 

3
Pythonをインタラクティブに実行した後、OS-X端末の動作がおかしい
os-xターミナルでpython repl(2.7.10)を実行して終了した後、ターミナルはタイプされた入力をエコーし​​なくなり、その他の奇妙なことが起こります。pythonもう一度実行するとexit()、ターミナルは復元されたようです。タブを閉じて新しいタブを開くだけなので、それを広範囲にテストしたことはありません。 これは端末の設定に関連していると思いますが、これは最近のものであり、覚えていることは何も変更していません。macportsいくつかのコンソールライブラリとの依存関係の不一致に関係がある場合、Pythonはとともにインストールされます。2.7.10は少し前にインストールされましたが、インストール後には発生しませんでした。 ナックルをクラックして開くterminal [~]: virtualenv-2.7 venv-test [~]: source venv-test/bin/activate [~]: python >>> ^D>>> *(press ctrl-d, the 2nd >>> is strange) [~]: *(type something like `ls-l`, nothing shows on console) [~]: -bash: ls-l: command not found` さらに、Pythonを再度実行しctrl-d、次の出力結果をヒットします。 >>> ^D (ctrl-d, then hit enter, doesn't exit) >>> ^D (...) >>> ^D …
11 macos  bash  terminal  python 

3
CygWinでSUDOを使用する(自動化する)実用的な(従来のLinuxに近い)方法
CygWinでsudoコマンドを使用できると便利であり、昇格したシェルを開くよりも高速です。 Luis@Kenobi /cygdrive/c/Users/Luis $ net user /add TestUser System error 5. Access denied. Luis@Kenobi /cygdrive/c/Users/Luis $ sudo net user /add TestUser Command completed successfully. 上記のように、Windowsコマンド/スクリプトもLinuxと同様に実行できます。私にとってはきれいです。リモート(SSH)コンソールで動作し、Windows / Linuxコマンドを組み合わせることができます。したがって、管理タスクを実行できることはほぼ必須です。 ただし、SUDO for CygWinプロジェクトには危険な動作があります。サーバー/クライアントアーキテクチャとして動作します。実際、クライアント(sudo)はコマンドのリクエストをサーバー(sudoserver.py)に送信します(外部でリッスンしません)ローカルコンピューター)ポート7070TCP、ユーザーまたはアクセス許可のチェックなし、コンピューターにログインしている(特権のないユーザーも)誰でも管理者(CygWinまたはWindows)のシェルコマンドまたはスクリプト(CygWinまたはWindows)も実行できます。 作成者の提案した方法を維持すると、問題は悪化します。「sudoserver.py」をサービスとして登録すると、永続的に実行され続けます。 したがって、物事をもう少し安全に(完全 にではなく)維持するために、次のことを行います。1.-管理シェルで "sudoserver.py"を実行します。 2.-別のCygWinシェルで「sudo」コマンドを実行します。 3.-「sudoserver.py」と管理シェルを閉じます(Ctrl + C)。 少し迷惑です。「sudoserver.py」を実行するホットキーが.cmd割り当てられたファイルを使用して回避し、管理ジョブの後に(手動で)閉じますが、Linuxでの古典的な「sudo」の使いやすさからはほど遠いです。 素晴らしい実用的な方法は、次のような方法です。 ** UAC昇格プロンプト(またはユーザー/パスワード)を要求する「sudoserver.py」を自動的に開きます。 しばらくしてから閉じるため、UAC要求は、複数のsudoコマンドが連続して実行された場合に邪魔をし続けません。 これを少なくとも部分的に自動化する方法はありますか?

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