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

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

4
2つのファイルはハードリンクされていますか?
2つのファイルがコマンドラインからハードリンクされているかどうかを確認するにはどうすればよいですか?たとえば、何かがこれにリンクしています: $ ls fileA fileB fileC $ is-hardlinked fileA fileB yes $ is-hardlinked fileA fileC no
27 shell  files 


12
Linux-ファイルをリストするコマンド(lsを除く)
あなたがシステムで作業していて、誰かが誤ってlsコマンドを削除したと想像してください (/bin/ls)。現在のディレクトリにあるファイルのリストを取得するにはどうすればよいですか?それを試してみてください。 多くの方法を試しましたが、インターネットでも検索しましたが、何も検索しませんでした。lsコマンドの横に、すべてのファイルをリストするためにどのコマンドを使用できるかを尋ねたいと思います。
27 shell  command-line  ls 

1
端末をrawモードに設定すると、予期しないインデント動作が発生します。これはなぜですか?
私が読んだ内容に基づいて、端末がrawモードの場合、文字は端末ドライバーによって処理されず、そのまま送信されます。 コマンドを使用して端末をrawモードに設定しましたが、stty rawスペースがなくなるまで毎回出力が右にインデントされることに気付きました。これは私が意味するものです: なぜこの動作が起こっているのですか?!
27 linux  shell  terminal 

4
シェルからライブラリコマンドを実行する方法
文字列の長さ(ハッシュ値)を単純に計算したかったのです。だから、私はターミナルを開いてこれをしました: $ apropos length それは、それらの末尾に追加(3)または(3ssl)追加されたコマンド/関数の束で私を返しました。さて、man manはこれらのsection numbers意味についての情報を提供してくれます。 3 Library calls (functions within program libraries) 好奇心から、これらのすべてのコマンドを試してみました(少なくとも1つが機能することを願って) strcspn (3) - get length of a prefix substring strlen (3) - calculate the length of a string strnlen (3) - determine the length of a fixed-size string strspn (3) - get length of a …
27 shell  libraries 

2
文字列が左括弧の場合のシェルブラケットテストのエラー
シェルが文字列を解析するのを避けるために、文字列を引用することは常に良い習慣であるという事実に自信を持っていました。 それから私はこれに出くわしました: $ x='(' $ [ "$x" = '1' -a "$y" = '1' ] bash: [: `)' expected, found 1 同じエラーを取得して、問題を特定しようとしています: $ [ '(' = '1' -a '1' = '1' ] bash: [: `)' expected, found 1 私はこのような問題を解決しました: [ "$x" = '1' ] && [ "$y" = '1' ] それでも、ここで何が起こっているのかを知る必要があります。
27 shell  test 

2
「ls」と「echo $(ls)」の違い
2つのシェルサンプルを検討します。 $ ls myDoc.html SomeDirectory someDoc.txt そして $ echo $(ls) myDoc.html SomeDirectory someDoc.txt ls私が理解しているように、現在の作業ディレクトリの内容をstdoutファイルに追加する最初の実行(ターミナルが表示するものです)。これは正しいです? 2番目は、lsコマンドの値(つまり、現在の作業ディレクトリの内容)を取得し、stdoutファイルに出力します。これは正しいです? 2つのコマンドが異なる出力を与えるのはなぜですか?
27 shell 

2
変数の長さを検証する
変数の読み取りの長さを確認する必要があります(スクリプトの挿入文字数は5文字に制限されています)。次のように考えます。 #!/bin/bash read string check=${#string} echo $check if [ $check -ge 5 ]; then echo "error" ; exit else echo "done" fi より「エレガントな」ソリューションはありますか?
27 bash  shell  string 

4
ファイルを作成するシェルコマンドがないのはなぜですか?
ご注目ください: 私はコマンドラインからファイルを作成する方法を尋ねていません! 私はtouchその主な目的が他のものであることに注意を払うことなく何年もファイルを作成するために使用してきました。コマンドラインからファイルを作成したい場合、多くの可能性があります: touch foo.bar > foo.bar cat > foo.bar echo -n > foo.bar printf '' > foo.bar そして、もっとあると確信しています。 しかし、実際には、上記のコマンドはいずれも実際にファイルを作成するために設計されていません。たとえば、man touchこのコマンドがファイルのタイムスタンプを変更するためのものであることを提案します。Unix(またはLinux)ほど完全なOSに、ファイル作成専用のコマンドがないのはなぜですか?

4
シェルは無駄な終了コマンドを最適化することを許可されていますか?
シェルは、などの終了することがわかっているおそらく役に立たない(または部分的に役に立たない)コマンドを実行するように要求された場合、cat hugeregularfile.txt > /dev/nullそのコマンドの実行をスキップできますか (または、より安価な同等のコマンドを実行できtouch -a hugeregularfile.txtますか?) より一般的には、外部で観察可能な動作が抽象マシンが評価した場合に限り、ソースコードに変換を実行できるという点で、シェルはCコンパイラに似ていますか? 編集 Nota Bene:当初提起された私の質問には、シェルがこれらの最適化を行うことが許可されているかどうか、またはそれらを行うことができる実装が存在するかどうかではなく、尋ねられました。理論は実践よりも理論に興味がありますが、どちらも大歓迎です。

6
1つのコマンドから出力されたパス名を「cd」にリダイレクトできないのはなぜですか?
cd別のコマンドからリダイレクトされたディレクトリ名を受け入れようとしています。これらの方法はどちらも機能しません。 $ echo $HOME | cd $ echo $HOME | xargs cd これは動作します: $ cd $(echo $HOME) 最初のコマンドセットが機能しないのはなぜですか?

4
`grep`で16進コードを使用して文字を指定する方法は?
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 次のコマンドを使用して、16進コード0900(अの代わり)から097F(वの代わり)の文字セット範囲をgrepします。अとofの代わりに16進コードを使用するにはどうすればよいですか? bzcat archive.bz2 | grep -v '<[अ-व]*\s' | tr '[:punct:][:blank:][:digit:]' '\n' | uniq | grep -o '^[अ-व]*$' | sort -f | uniq -c | sort -nr | head -50000 | awk '{print "<w f=\""$1"\">"$2"</w>"}' > hindi.xml 次の出力が得られます。 <w f="399651">और</w> <w f="264423">एक</w> <w f="213707">पर</w> <w …

3
パイプの時間を計るにはどうすればよいですか?
time1つのパイプ出力から別のパイプ出力を持つ2つの個別のコマンドで構成されるコマンドが必要です。たとえば、次の2つのスクリプトを考えます。 $ cat foo.sh #!/bin/sh sleep 4 $ cat bar.sh #!/bin/sh sleep 2 さて、どのようにtimeかかった時間を報告することができますかfoo.sh | bar.sh(そして、はい、ここではパイプが意味をなさないことを知っていますが、これは単なる例です)?パイプなしでサブシェルで順番に実行すると、期待どおりに動作します: $ time ( foo.sh; bar.sh ) real 0m6.020s user 0m0.010s sys 0m0.003s しかし、パイピングすると動作しません: $ time ( foo.sh | bar.sh ) real 0m4.009s user 0m0.007s sys 0m0.003s $ time ( { foo.sh | bar.sh; } …
27 bash  shell  pipe  time 

2
TERM環境変数のデフォルトはどこに設定されますか?
デスクトップGUIでGNOMEターミナルエミュレーターを使用してターミナルウィンドウを開くと、シェルのTERM環境変数はデフォルトの値になりますxterm。 CTL+ ALT+ を使用F1してコンソールTTYウィンドウに切り替えecho $TERM、値がに設定されている場合linux。 私の質問の動機は、~/.bashrcファイル内で変数を使用して、カラーシェルが提供されているのか、古き良き時代のモノクロだけが提供されているのかを判断することです。 # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) color_prompt=yes;; esac 次のように入力すると、コンソールシェルとGnomeターミナルエミュレーターシェルの両方で export TERM=xterm-color source /.bashrc 両方のシェルがカラーモードに変更されます(両方で常に発生したいこと)。 デフォルトTERM値はどこに設定されますか?可能な場合、デフォルトを変更するのに最適な場所はどこですか?端末エミュレータGUIには、デフォルトのTERM値を選択または設定するものは何もないようです。 ファイルexport TERM=xterm-colorの先頭に行を追加することを検討しました~/.bashrcが、私の直感ではこれは最善の解決策ではなく、Googleの検索ではまだ良い答えに至っていないことがわかります。 Ubuntu 15.04 Desktop Edition(Debianベース)を実行しています。

3
単一引用符を使用してシェルで特殊文字をラップするときに「単一引用符」をエコーする方法は?
私は今日http://www.tutorialspoint.com/unix/unix-quoting-mechanisms.htmからシェルチュートリアルを読んでいます それが言及している: 出力する文字列内に一重引用符が含まれる場合は、次のようにバックスラッシュ()を使用する前に文字列全体を一重引用符で囲まないでください。 echo 'It\'s Shell Programming' 私はこれをcentosサーバーで試しましたが、うまくいきません>。もっと入力するように促すプロンプトが出ます。 2つの一重引用符がすべての特殊文字を通常の文字に変換するので、エスケープシンボルを含む\が、それ自体を除外するので、 一重引用符で一重引用符を表現するに'はどうすればよいの'だろうか?
26 shell  quoting 

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