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

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

1
コマンドの一部としてスペースを含むBashエイリアス
エイリアス自体にスペースがあるbashエイリアスを作成しようとしています。 考え方は、エイリアス(つまりcon)はの略ですsudo openvpn --config /path/to/my/openvpn/configs/。conエイリアスを使用すると、読み取り可能なコマンドになります。 すなわち: `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf` 次のようにエイリアスを宣言できないことを理解しています con ="sudo openvpn --config /path/to/my/openvpn/configs/"。このシナリオではbash関数は機能しますか?私はそれについて聞いたことがありませんが、このマイナーな問題の解決策を研究するとき。


5
Bash-スクリプトでホスト名を変更した後、PS1が適切なホスト名で更新されない
これは、stackoverflowからの私の投稿のコピーです。私はここでそれを尋ねるべきだったと思います... ホスト名を変更するスクリプトを実行して、適切なホスト名ですぐにbashプロンプト(PS1変数)を更新したいと思います。これを実現するにはどうすればよいですか? 私はこれを実行します #!/bin/bash # Usage: ./changehost <newhostname> #Do two sed's to edit the files for persistent hostname change sed -i s/$(hostname)/$1/g "/etc/hosts" sed -i s/$(hostname)/$1/g "/etc/sysconfig/network" #run the hostname command with new hostname to update it hostname $1 そのような端末でこれを入手する [user@host dir]# ./changehost newhostname [user@host dir]# しかし、私が欲しいのはこれです [user@host dir]# ./changehost …
11 bash  shell 

3
シェルはどのようにプログラムを実行しますか?
gccを使用してプログラムをコンパイルし、それをbashシェルから実行しようとすると、それを実行するためにbashが実行するステップの正確なシーケンスは何ですか? 私が知っているfork()、execve()、loader、dynamic linker(および他のもの)に関与していることができますが、誰かがステップと、いくつかの適切な読取基準の正確な配列を与えますか? 編集: 答えから、質問は多くの可能性を暗示することができるようです。簡単なケースに絞り込みたい: (test.cはhello worldを出力するだけです) $ gcc test.c -o test $ ./test 上記のケース(./test)のステップ、具体的には、いくつかの子プロセスでのbash開始プログラムの関連付け、ロード、リンクなどの手順は何ですか?

4
固定幅でマニュアルページを印刷する
コマンド例では man apropos > outputfile のフォーマットされたmanページを含むテキストファイルが生成されます(太字など、画面aproposにman apropos直接印刷する場合との違いが少しあります)。 しかし、すべての段落がその幅に揃えられるように、生成された出力ファイルの最大行幅を手動で設定したいと思います。 manページは次の方法で作成されますgroff。たとえば、.ll 50元の.gz manソーステキストファイルの段落の前に配置しようとしましたが、複数のmanページで作業する必要がある場合は簡単です。さらに、すべての文字が認識されるわけではありません。 apropos.1:45: warning: can't find character with input code 195 apropos.1:45: warning: can't find character with input code 168 apropos.1:47: warning: can't find character with input code 178 apropos.1:131: warning: can't find character with input code 169 なので、もっと簡単な方法はあるのかな。の作成中に最大線幅を変更するにはどうすればよいoutputfileですか?特定のコマンドはありますか? 編集: (以下のすべての考慮事項はUbuntu …

3
シェルスクリプトのパス変数の最後にスラッシュを使用する必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 今日は私のシェルスクリプトを書いています。 いきなり質問が浮かんできました。 以来cd /target_dir、cd /target_dir/両方とも動作します。 シェルスクリプトのパス変数の最後にスラッシュを追加する必要がありますか? このようなLOG_PATH=/data/nginx/logs対LOG_PATH=/data/nginx/logs/。 グーグルで粗検索をしましたが、これについての議論は見つかりませんでした。 今のところ、どのスタイルを選ぶかを決めるのは本当に難しいです。 しかし、私LOG_PATH=/target_dir/はもう少しスタイルを好んだ。 私がbashでオートコンプリートを実行しているときは、スラッシュで結果がポップされるからです。 これについてあなたの意見は何ですか、なぜですか?

4
ネストされたループでシェルスクリプトを終了する
ネストされたループを持つシェルスクリプトがありますが、「exit」は実際にはスクリプトを終了せず、現在のループのみを終了することがわかりました。特定のエラー条件でスクリプトを完全に終了する別の方法はありますか? 許容可能なエラーがあり、多くの書き換えが必要になるため、「set -e」を使用したくありません。 現在、私はkillを使用して手動でプロセスをkillしていますが、これを行うにはもっと良い方法があるはずです。
11 bash  shell  scripting  exit 

2
大きなフォルダーを圧縮せずに1つのファイルに保存する方法
78 GBのフォルダーを1つのファイルに保存し(クラウドサービスにアップロードするため)、アーカイブで圧縮しているかのようにしたいが、圧縮したくない(CPUがそれほど多くない)利用可能な時間)。とにかくこれを達成できることはありますか?おそらく私が知らない端末コマンドですか?

2
単一引用符内で変数を使用する方法
一重引用符に埋め込まれた二重引用符で属性を入力として受け取るアプリケーションがあります。たとえば、次の正しいコマンドを見てください。 command -p 'cluster="cl1"' それを自動化するために$CLUSTER、変数としてを使用してbashファイルを作成しました。私の命令はどうあるべきですか?つまり、cl1の代わりに何を配置すればよいですか。 上記のコマンドを変更すると、受け入れられなくなりますのでご注意ください。たとえば:command -p "cluster=cl1"受け入れられません

3
ファイルのmtimeをエポック形式で設定するにはどうすればよいですか?
エポック形式でファイルのmtime を取得する方法を知っています。 stat --format=%Y <file> しかし、エポック形式でファイルのmtime を設定する方法を理解できませんでした。touch(1)のマニュアルページは、「タイムスタンプ」値​​(月、日、時間、分などを使用する多かれ少なかれ固定形式)または「ほとんど自由な形式の人間が読める日付文字列」のみを受け入れるようです。 調査する必要がある別のユーティリティはありますか? ありがとう。

2
ssh -t上のstderr
これは出力をSTDERRに送信しますが、Ctrl+を伝搬しませんC(つまり、Ctrl+ Cはkillしますsshがリモートはしませんsleep)。 $ ssh localhost 'sleep 100;echo foo ">&2"' これはCtrl+を伝播しますC(つまり、Ctrl+ Cとsshリモートsleepを強制終了します)が、STDERRをSTDOUTに送信します。 $ ssh -tt localhost 'sleep 100;echo foo ">&2"' Ctrl+を伝播させながら、2番目に強制的にSTDERR出力をSTDERRに送信させるにはどうすればよいCですか? バックグラウンド GNU ParallelはCtrl+ を伝播するために「ssh -tt」を使用しますC。これにより、リモートで実行中のジョブを強制終了できます。ただし、STDERRに送信されたデータは、受信側のSTDERRに送信され続ける必要があります。

3
バッシュグロビングの歴史
Bashの「グロビング」と正規表現が同一でない歴史的な理由はありますか?たとえば、Bash [1-2]*では1または2で始まり、その後に何かが続くものに一致すると思いますが、正規表現[1-2]*は1と2のシーケンスのみに一致します。私のBashスクリプトとREGEX fooはどちらも非常に弱く、私はこれらの違いに関連する問題に定期的に遭遇しました。


3
検索結果に「人間が読める」ファイルサイズを表示する方法
Centosサーバーですべての大きなファイルを見つけようとしています。そのために私は使用しています: find / -maxdepth 10 -size +100000 -ls に変え-lsてみました-lshが許可されません。 これらの結果を人間が読めるサイズ(接尾辞k、Mなどを使用)で表示するにはどうすればよいですか?
11 shell  find  ls 

4
/ bin / etc / lib64 / root / sbinが削除されたか、mvフォルダーによって移動されました/ * / * su中に
OSはCentos 6.5 64ビット 私はtarファイルをダウンロードし、mvそれを解凍します。 解凍した後、誤って(rootとして)bashのmv folder/* /*代わりに実行するとmv folder/* .、一部のファイルを上書きできないとのことで、他のユーザーに許可を求めました。Ctrl + Cを押した。 ターミナルセッションを開いたままにしましたが、終了しましたsu。 これで、ほとんどのshellコマンドにアクセスできなくなりls、どのディレクトリにもアクセスできなくなり、に戻ることができなくなりましたsu。 Webサーバーとサービスはまだ実行されているようです。実行できるコマンドcdは非常に少なく、そのうちの1つであり、実行しようとするcdと/etc、/binエラーが発生しno directory foundます。 EDITだけから欠落しているすべてのフォルダに気づい/(bin、etc、lib64、root、sbin)に移動してしまった/var私が試した、ディレクトリ/var/bin/su&取得: -bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
11 shell  centos 

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