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

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

5
sudoを使用したリダイレクトまたはパイピングを含むコマンドの実行方法
ルートアカウントの代わりにsudoを使用するのがベストプラクティスであると想定しているものに従うようにしています。 次のような単純な連結ファイル操作を実行しています。 sudo echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock これは、通常のユーザーとして実行されている「>>」の右側に関しては失敗します。余分なsudoの追加も失敗します(ファイルではなくsudoコマンドにパイプするため、予期される動作)。 例はそれだけですが、ルートアカウントで検証およびテストされています。

6
ls -lとllの違いは?
私は全体としてプログラミングが比較的新しく、いくつかのチュートリアルがls -lディレクトリのファイルを見るのに使用するように言っていて、他が言っていましたll。私はそれlsが短いリストであることを知っていますが、他の2つの間に違いはありますか?
59 shell  shell-script  ls 

5
シェル変数を/ pattern /としてawkに渡す
私のシェル関数の1つに次のものがある: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } として呼び出されると_process $arg、として$arg渡され$1、検索パターンとして使用されます。$1awkパターンの代わりにシェルが展開するため、このように動作します!またl、awkプログラム内で使用することができますを使用して宣言されています-v l="$line"。大丈夫だ。 同じ方法で変数として検索するパターンを与えることは可能ですか? 以下は機能しませんが、 awk -v l="$line" -v search="$pattern" ' BEGIN {p=0} /search/ {p=1} END{ if(p) print l >> "outfile.txt" } ' awkが/search/変数として解釈するのではなく、文字通り解釈するため。
59 shell  awk  quoting  variable 

1
SSHにログインしてプログラムを実行する単一のコマンドですか?
SSH経由でリモートサーバーにログインし、リモートログインシェルでプログラムを実行する単一のコマンドを構築する方法はありますか? OpenSSHマニュアルでは、「コマンドが指定されている場合、ログインシェルの代わりにリモートホストで実行されます」と表示されます。したがって、たとえば、ssh user@server mailリモートサーバーにログインし、メールボックスの状態を表示してから、ローカルシェルに戻ります。メールステータスを表示した後、リモートシェルに留まる方法はありますか? さらに、ssh user@server [command]コマンドがプログラム(vimやmuttなど)の場合は機能しないようです。リモートシェルにログインし、プログラム中およびプログラムを終了した後、特定のlogoutコマンドで最終的にのみ終了した後、プログラムを実行する方法はありますか? 最終的には、ローカルの.bashrcにエイリアスとしてこのようなコマンドを配置できるようにして、必要なときにすぐに実行できるようにします。例としては、SSHを介してリモートサーバーにログインし、リモートサーバーでmuttを開いてメールを読んだり送信したりします。
58 bash  shell  ssh  openssh 

2
>&-は> / dev / nullよりも効率的ですか?
昨日、私はこのSOコメントを読みました。このコメントでは、シェル内で(少なくともbash)は>&-「と同じ結果になります」と述べてい>/dev/nullます。 そのコメントは、実際にはその情報源としてABSガイドを参照しています。しかし、そのソースは、>&-構文が「ファイル記述子を閉じる」と述べています。 ファイル記述子を閉じてヌルデバイスにリダイレクトするという2つのアクションが完全に同等であるかどうかは明確ではありません。だから私の質問は:彼らですか? 表面的には、記述子を閉じることはドアを閉じることに似ていますが、ヌルデバイスにリダイレクトすることはリンボへのドアを開くことです!閉じたドアが見えても、そこから何も捨てようとしないので、この2つはまったく同じようには見えませんが、開いたドアがあれば、できると思います。 言い換えれば、ファイルのすべてのバイトを実際に処理し、それを忘れたファイルに書き込むことを>/dev/null意味するのかどうか、私はいつも疑問に思っていました。一方、シェルが閉じられたファイル記述子に遭遇した場合、私は考える傾向がある(ただし、わからない)疑問が残るかどうかかかわらず、それは単に、何も書かないということはまだだろう読んですべてのバイトを。cat mybigfile >/dev/null/dev/nullcat このコメントは「同じである必要が>&-あります>/dev/null」と言っていますが、それは私にとってそれほど圧倒的な答えではありません。標準またはソースコアを参照するかどうかに関係なく、より信頼できる回答を希望します。

3
「rm is hashed」とはどういう意味ですか?
私はhttp://mywiki.wooledge.org/BashGuide/CommandsAndArgumentsを通過し、これに遭遇しました: $ type rm rm is hashed (/bin/rm) $ type cd cd is a shell builtin 少し前に、このガイドには、Bashが理解できるさまざまなタイプのコマンド(エイリアス、関数、ビルトイン、キーワード、実行可能ファイル)がリストされていました。しかし、「ハッシュされた」という言及はありませんでした。それでは、この文脈では、「ハッシュ」とはどういう意味ですか?
58 bash  shell  command 

5
ディレクトリの名前を入力するだけでcd?
私は20年前にこれをどこかに持っていたか、それについて夢見ていました。 基本的に: タイプがblobblob私が得るなら blobblob: command not found けっこうだ。 私のシェルがそれらのエラーを受け取ったとき-コマンドが見つかりません-その名前( 'blobblob')でディレクトリが存在するかどうかを確認し、それがそのディレクトリにあるかどうかを確認しますcd。 これを行わない、または慎重に行うにはいくつかの理由があると確信しています。 私はちょうどそれがかなりきれいだと思うだけで、私はそれをどこか(ここのような!)で見つけることによって試してみたいと思います。 これが暗示するかもしれないちょっとしたシェルプログラミングをどうやってやるかわからない。

5
ワイルドカード文字*がコマンドzipとrmでそれほど異なるのはなぜですか?
スクリプトを作成して、いくつかのファイル操作を実行しました。*タイプのすべてのファイルに関数を適用するためにワイルドカード演算子を使用していますが、取得できないことが1つあります。unzipこのようなフォルダ内のすべてのファイルができます unzip "*".zip ただし、すべてのzipファイルを後で削除するには、する必要があります rm *.zip つまり、引用符は不要です。一方、unzipは、*を指定しただけでは機能しません(「ファイルが一致しませんでした」という警告が表示されます)。 なぜこれが違うのですか?私には、これはまったく同じ操作のように思えます。または、ワイルドカードを間違って使用していますか? Unixでのワイルドカードの紹介は実際にはこれに該当せずrm、zipドキュメントやドキュメントには何も見つかりませんでした。 Mac(Yosemite)でターミナルを使用しています。
58 shell  wildcards  rm  zip 

6
セキュリティ上の理由でユーザーシェルを無効にする
システム間のファイル転送、監視など、きめの細かい許可が必要な自動化タスク用に作成するユーザーアカウントがいくつかあります。 これらの「ユーザー」がシェルを持たず、ログインできないように、これらのユーザーアカウントをロックダウンするにはどうすればよいですか?これらのユーザーアカウントの1つとして誰かがSSHで接続できる可能性を防止したいと考えています。
58 shell  ssh  users  login 

2
変数のgrep
変数があるとしましょう line="This is where we select from a table." 今、私は何回選択が文で発生するかをgrepしたい。 grep -ci "select" $line 試しましたが、うまくいきませんでした。私も試しました grep -ci "select" "$line" それでも動作しません。次のエラーが表示されます。 grep: This is where we select from a table.: No such file or directory
58 shell  grep  string 


7
大文字と小文字を区別しないパターンをlsと一致させる方法は?
大文字と小文字を区別せずに、特定のパターンに一致するすべてのファイルを一覧表示したいと思います。 たとえば、次のコマンドを実行します。 ls *abc* ファイル名の一部に「abc」が含まれるすべてのファイルを表示したいのですが、大文字小文字を無視して、 -rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file1abc.txt -rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file2ABC.txt 注意 マニュアルページでケースを検索しましたが、何も見つかりませんでした。

2
ヒアドキュメントと猫と組み合わせて出力リダイレクトをどのように使用しますか?
別のコマンドにパイプする、またはファイルにリダイレクトする(sh例のためにパイプする)スクリプトがあるとしましょう。私はbashを使用していると仮定します。 私はそれを使用してそれを行うことができますecho: echo "touch somefile echo foo > somefile" | sh 私もほとんど同じことをすることができますcat: cat << EOF touch somefile echo foo > somefile EOF しかし、「EOF」を「EOF | sh」に置き換えると、それは単にヒアドキュメントの一部であると考えるだけです。 cat標準入力からテキストを出力し、それを任意の場所にパイプで送るようにするにはどうすればよいですか?

11
タッチとviの使用?
編集前にタッチでファイルを作成する利点はありますか。 touch foo vi foo すぐに編集者に届くのですか?好む: vi foo 私は(元を使用してかなりの数のチュートリアルを参照してくださいtouch、その後vi)。
55 shell  vi  touch 


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