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

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

3
tcshでエイリアスを一時的にバイパスするにはどうすればよいですか?
私はtcshを使用しています。bashとzshおよびその他の提案はここでは役に立ちません。 別のコマンドと同じ名前のエイリアスがいくつかあるので、エイリアスを解除すると、同じものを入力すると何か違うことが起こります。 ほとんどの場合、エイリアスコマンドが必要です。これが理由です。ただし、エイリアスのないコマンドが必要な場合があります。 実際にコマンドのエイリアスを解除して再定義することなく、代わりにエイリアスなしのコマンドを使用するようにtcshに指示する簡単な方法はありますか? たとえば、viはvimのエイリアスですが、時々viを使用したい場合があります。cdはウィンドウタイトルを変更するためにエイリアスされていますが、時々そのままにしておきたい場合があります。 明らかに/ usr / bin / viと入力できますが、cdはシェル組み込みコマンドであるため、同等のコマンドはありません。一般的な解決策はありますか?
17 shell  alias  tcsh 


3
純粋なBashでプログラムをどの程度複雑に書くことができますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 いくつかの非常に迅速な調査の後、Bash はチューリング完全言語であるようです。 なぜBashは、比較的単純なスクリプトを書くためにほぼ排他的に使用されるのでしょうか?BashシェルにはLinuxが付属しているため、他の一般的なコンピューター言語に必要な外部インタープリターまたはコンパイラーなしでシェルスクリプトを実行できます。これは大きな利点であり、場合によっては言語自体の平凡さを補うことができます。 それで、そのようなプログラムがどれだけ複雑になるか制限はありますか?純粋なBashは複雑なプログラムの作成に使用されますか?たとえば、純粋なBashでファイルコンプレッサ/デコンプレッサを作成することはできますか?コンパイラ?シンプルなビデオゲーム? デバッグツールが非常に限られているという理由だけで、あまり使用されていませんか?


1
フィールドの値が3以下の行を削除します-sedまたはawk?
8番目のフィールド(列)の値が2以下のすべての行を削除する必要があります。 私のデータは次のようになります。 12-31 Airport 189 379 41 49.70946503 -124.91377258 2 2880 30.8 01-01 AlberniElementary 165 331 16 49.26100922 -124.80662537 4 5760 26.1 01-09 BamfieldMarine 161 323 23 48.83490372 -125.13572693 2 2875 27.4 01-10 BamfieldMarine 161 323 23 48.83490372 -125.13572693 3 3068 38.6 awkを使用すると、必要な値を取り除いて別のファイルに出力できること、そしてsedが現在のファイルを編集することを理解しています。どちらの場合でも、元のファイルを保持する必要があります。 注:ソリューションについて詳細な説明を提供してください。コマンドを記述するだけでは不十分です。提案に注釈を付けてください。 さらに注意:データにはヘッダー行があるため、ほとんどの場合、ソリューションには次のことが必要です。 awk 'FNR> 1' 私は考えます?
17 shell  shell-script  sed  awk  grep 


3
lftp:ログインし、ファイルをリモートdirに入れ、単一のコマンドで終了します:適切な引用ヘルプ
私はlftp -cセッション全体を一度に実行したいので(後でスクリプトからこれを起動するので)、私は何とかして管理しました-eが、それは望まないインタラクティブなセッションを残します。 手動状態 -c commands Execute the given commands and exit. Commands can be separated with a semicolon, `&&' or `||'. Remember to quote the commands argument properly in the shell. This option must be used alone without other arguments. しかし、コマンド/相互作用をどのように引用符で囲んで正しく結び付けるべきか理解できません。 lftp -e "put -O remote/dir/ /local/file.txt" -u user,pass ftpsite.com …
17 shell  lftp 

1
シェルパイプを使用してtmuxの「クリップボード」との間でコピーする方法
シェル環境で作業するとき、「中間パイプ出力」をコピーする必要性にかなり頻繁に遭遇します(たとえば、既に実行中のエディターから、他のシェル、他のマシンなどへ)。 ウィンドウ環境では、これを解決する簡単な(そして一般的な)方法は、多くの場合、システムクリップボードを介したものです。 X11:... | xsel -i/xsel -o | ... OS X:... | pbcopy/pbpaste | ... tmuxのコピー/貼り付け機能を使用して、同様の便利な動作を取得するにはどうすればよいですか?

2
テキストファイルの行の中間セクションを抽出しますか?
私は、大きなテキストファイルを解析して、そこからデータベースの挿入を行うPHPスクリプトを書いています。しかし、私のホストでは、ファイルが大きすぎるため、PHPのメモリ制限に達しました。 ファイルには約16,000行あります。それらをロードできるかどうかを確認するために、(最初に)4つの個別のファイルに分割します。 私が得ることができる最初の部分head -4000 file.txt。中央のセクションは少し複雑です- tail出力をhead(tail -4001 file.txt | head -4000 > section2.txt)にパイプすることを考えていましたが、別の/より良い方法はありますか? 実際、私のロジックはめちゃくちゃです。セクション2では、次のようなことをする必要があり、次のセクションの引数をtail -12001 file.txt | head - 4000下げtailます。私はすでに混乱しています!:P




4
特定のサブディレクトリの検索コマンド
のは、私はディレクトリ持っていると言うdir3つのサブディレクトリとしdir1... dir3。そして、内部には多くのファイルと他のサブディレクトリがあります。 *.c末尾を付けて、内部のファイルを検索したいのですが、サブディレクトリ「dir / dir2」とそのすべてのサブディレクトリのみを検索したいです。どうすればそれを定式化できますか? 私がいると仮定するとdir/: find . -name "*.c" すべてのディレクトリを検索します。 のみに制限するにはどうすればよいdir2ですか?
17 linux  bash  shell  find 

5
変数が定義されていない場合、スクリプトを実行しないでください
次のようなスクリプトがあります。 c=0 for f in */*; do cp -v "$f" "/myhome/CE$(printf '%0*d' 2 $BATCHNUM)-new-stuctures_extracted/test-$(printf '%0*d' 5 $c)" c=$((c=c+1)) done ただし、ユーザーは変数呼び出しBATCHNUMを提供する必要があり、そうでない場合は、このスクリプトの実行を強制的に停止する必要があります。このスクリプトを呼び出すスクリプト(または、このスクリプトを呼び出す#2スクリプトを呼び出す#1スクリプト)を強制的に停止させることができればさらに良いでしょう。

3
if条件の括弧:空白なしで構文エラーが発生するのはなぜですか?
次のスクリプトを使用して、1年の2日間の開始時にスクリプトを実行するときに2日前に移動し、また毎月1日と2日目をチェックして2日前に移動します。 if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] && [$day="02"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [ $day = "01" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else if [ $day = "02" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else date="$month/$yes_day/$year" fulldate="$year$month$yes_day" fi fi fi fi しかし、私の悪いは、以下のエラーメッセージを取得しています Etime_script.sh: line 19: [06=01]: command not …

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