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

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

7
Bashの異なるコードポイントでASCII文字を印刷するにはどうすればよいですか?
ASCIIテーブルには、さまざまな数値システムのコードポイントを持つ「J」文字が存在します。 Oct Dec Hex Char 112 74 4A J printf '\112'またはを印刷することにより、この文字を8進コードポイントで印刷 できecho $'\112'ます。10進数と16進数のコードポイントプレゼンテーションで同じ文字を印刷するにはどうすればよいですか?
12 bash  shell  ascii 

10
シェルスクリプトを使用して文字列からすべての重複する単語を削除する
私は次のような文字列を持っています "aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc" 文字列から重複する単語を削除したい場合、出力は次のようになります "aaa,bbb,ccc" 私はこのコードソースを試しました $ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs 同じ値で正常に動作していますが、変数値を指定すると、重複する単語もすべて表示されます。 重複する値を削除するにはどうすればよいですか。 更新 私の質問は、ユーザーが同じ場合、対応するすべての値を単一の文字列に追加することです。このようなデータがあります-> user name | colour AAA | red AAA | black BBB | red BBB | blue AAA | blue AAA | red CCC | …

2
シェルによるアレイサポートのテスト
コマンドラインでローカルのBourneのようなシェルによる配列サポートをテストする簡潔な方法はありますか? これは常に可能です: $ arr=(0 1 2 3);if [ "${arr[2]}" != 2 ];then echo "No array support";fi または$SHELLシェルバージョンのテスト: $ eval $(echo "$SHELL --version") | grep version そして、私がそれにアクセスできると仮定して、manページを読みます。(そこからも、からの執筆で/bin/bash、私はすべてのBourneのようなシェルが長いオプションを認めていると仮定しています--version、それが例えば kshで壊れるとき。) スクリプトの最初またはそれを呼び出す前に、無人でUsageセクションに組み込むことができる簡単なテストを探しています。

1
シェルスクリプトのトラップ処理と暗黙のサブシェル
次のEXITようなトラップを介して、ある種のクリーンアップコードを実行するシェルスクリプトがあるとします。 #!/bin/bash mytrap () { echo "It's a trap!" >&2 } trap mytrap exit echo I am at the end of the script. これは、予想通り、It's a trap!スクリプトが終了したときに出力されます。 $ sh myscript I am at the end of the script. It's a trap! 次のように、スクリプトを変更して、最終的に別のコマンドにパイプ処理される出力を生成する関数を追加します。 #!/bin/bash mytrap () { echo "It's a trap!" >&2 …
12 shell  trap 

2
bash find:見つかったファイルのディレクトリを取得します
「parent_folder」という名前の親フォルダーに多数のサブフォルダーがあり、これらのサブフォルダーには「foo.mp4」という名前のファイルがあります。 これを行うことで、これらのファイルを簡単に見つけることができます。 mymacbook:parent_folder username$ find ./ -name "foo.mp4" -exec echo {} \; これで、parent_folder /を基準とした各ファイルのパスが返されます。 ./path/to/foo.mp4 ファイル名なしでパスだけを返すにはどうすればよいですか?
12 shell  find  osx 

4
バックグラウンドで実行されているシェルスクリプトを強制終了する
inotifyt-toolsのinotifywaitユーティリティを使用してディレクトリを監視するシェルスクリプトを作成しました。このスクリプトをバックグラウンドで継続的に実行したいのですが、必要に応じてスクリプトを停止できるようにしたいと思っています。 継続的に実行させるために、私はwhile true; このような: while true; do #a set of commands that use the inotifywait utility end でファイルに保存し/binて実行可能にしました。バックグラウンドで実行するためにnohup <script-name> &、ターミナルを使用して閉じました。 このスクリプトを停止する方法がわかりません。私はここでの回答と非常に密接に関連した質問をここで見てきました。 更新1: 以下の@InfectedRootの回答に基づいて、私は次の戦略を使用して問題を解決することができました。最初の使用 ps -aux | grep script_name sudo kill -9 <pid>プロセスを強制終了するために使用します。次に、返されたIDに再度pgrep inotifywait使用する必要sudo kill -9 <pid>がありました。 これは機能しますが、これは厄介なアプローチだと思います。より良い答えを探しています。 更新2: 答えは、2つのプロセスの強制終了で構成されています。コマンドラインでスクリプトを実行すると、2つのプロセスが開始されます。1つはスクリプト自体、もう 1 つはinotifyプロセスです。
12 bash  shell  kill  inotify 

3
grep:入力ファイル「X」も出力です
を使用してubuntu 14.4、grepコマンドの出力をファイルにリダイレクトしようとしましたが、このエラーが発生し続けます。 grep: input file 'X' is also the output 私はこの問題を検索しましたが、それがバグでubuntu 12.4あり、何も説明されていないことがわかりました。誰かがこの問題を理解するのを手伝ってくれませんか? 次のコマンドを実行します。 grep -E -r -o -n r"%}(.*){%" > myfile

5
sshできません。接続は終了ステータス254で即座に終了します
最近覚えているのは、ソフトとハードのmemlock ulimitを無制限に変更することです。今、私はマシンにsshすることができません。 これはsshログです。 Authenticated to IP ([IP]:22). debug1: channel 0: new [client-session] debug2: channel 0: send open debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug2: callback start debug2: fd 3 setting TCP_NODELAY debug2: client_session2_setup: id 0 debug2: channel 0: request pty-req confirm 1 debug1: Sending environment. debug1: Sending env LC_CTYPE …
12 shell  ssh  ulimit 

4
すべてのsshコマンドのローカルのタイムスタンプ付きロギング?
どのように私は私が使用するすべてのリモートコマンドのローカル、タイムスタンプを記録しておくことができますssh(コマンドラインOpenSSHクライアントを経由開始しますかbash)? 要件: 必須: サーバーのログ記録に依存しない100%クライアント側 ログはユーザーのホームディレクトリに保存され、ユーザーごとに構成またはインストールされます。 さまざまなユーザーやホストとの複数の同時セッションを区別するためのサポート。 非侵入型(毎回アクティブにする必要はなく、sshの使用を大幅に妨害しません) 高優先度: 出力はログに記録されないか、可能な限り除外されません。 パスワードエントリがログに記録されていないか、ファイルが暗号化されています 使用された実際のコマンドを示します(タブ/履歴の完了、バックスペース、CTRL+ Cなど...が処理された後) あった方がよい: 連鎖セッションのコマンドも記録します(リモートsshまたはsu <user>セッション中に入力されたコマンド) セッションの開始と終了をログに記録する必要があります 単純なbashベースの非ルートソリューションが最適です(おそらく、コマンドのaliasまたはbashラッパースクリプトsshですか?) 私のスキルレベル: 私はプログラミングに不慣れですが、まだbash「Linuxのやり方」を学んでいるので、簡単な説明のあるコードサンプルをいただければ幸いです。 可能な戦略 キーロガー -問題:パスワードをログに記録し、タブや履歴の完了をログに記録しない(glennの回答を参照) screen1秒に1回、およびdiffそれらの間にスクロールバックダンプを行い、新しいスクロールバック行を見つける -問題:これを便利な自動化された方法で実装するにはどうすればよいですか? ssh "$@" | tee >(some_cleaner_function >> $logfile) -問題:連鎖セッションで複数行のコマンドまたは履歴を処理できない、慎重なクリーンアップが必要(私の回答を参照) 上記のいくつかの組み合わせ 例 次のSSHセッション: user@local:~$ ssh user@remote Last login: Tue Jun 17 16:34:23 2014 from local user@remote:~$ cd test …



2
zshエイリアスでの引用符のエスケープ
テキストから改行を取り除くことに関するこの質問に続き、これを次のようにzshエイリアスに変換したいと思います。 alias striplines=' awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"' awkスクリプト内で引用符をエスケープしてみましたが、次のエラーが発生します。 awk: (FILENAME=bspsrobustness FNR=1) fatal: division by zero attempted (ファイルはと呼ばれますbspsrobustness) やりたいことはありますか?これをzshエイリアスではなくawkスクリプトに変換できると思いますが、これが最善のオプションですか?
12 shell  zsh  quoting  alias 

2
シェル組み込みコマンドについて
中には、bashのマニュアル、次のことが書かれています Builtin commands are contained >>> within <<< the shell itself また、この答えは、 A built-in command is simply a command that the shell carries out itself, instead of interpreting it as a request to load and run some >>> other program <<< compgen -b上bash 4.4で実行すると、すべてのシェル組み込みコマンドのリストが表示されます。私はその一例を参照[し、killシェルの組み込みコマンドであることを記載されています。しかし、実際の場所は次のとおりです。 /usr/bin/[ /bin/kill builtinコマンドが/bin/bash実行可能ファイルにコンパイルされるという意味だと思いました。だから私を本当に混乱させているのは何builtinですか:私を訂正してください、しかしそれが実際にシェルの一部ではない場合、どのようにして別のコマンドをにすることができますか?


2
変数を含む文字列を展開/評価せずにエコーします[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 4年前休業。 私はどこでも検索しました。エコーして印刷してみました。一重引用符と二重引用符を試しました。しかし、私はデータを解析してそれを変数に割り当てたので、その中に変数があるかどうかを評価したいと思います。次に、変数をワイルドカードに置き換えて、ファイルを検索します。 例: var="file.$DATE.txt" ### Where it goes wrong- Needs to identify that $DATE is within the $var varaible. test=$(echo "$var"|grep '\$') if [[ $test ]] then ### I would use whatever fix is discovered here as well test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/') fi ### (Actually pulling from remote machine …
12 bash  shell  quoting 

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