• 締切済み

bash calコマンド

bashにてcalコマンドを使用し、1950年から2050年のみを選択させ表示する方法を教えてください。

みんなの回答

  • notnot
  • ベストアンサー率47% (4851/10265)
回答No.3

「のみを選択」とはどういう意味ですか? 「bashにてcalコマンドを使用し、1950年から2050年のカレンダーを連続して表示する方法を教えてください。 」 という意味の質問なら、 for year in {1950..2050} do cal $year done です。 それとも、「ユーザーに入力を求めて1950-2050ならその年のカレンダーを表示して、それ以外の入力ならエラーにする」という質問ですかね? echo -n "Input Year: " read year if expr "$year" : '^[1-9][0-9]*$' >/dev/null && test "$year" -ge 1950 -a "$year" -le 2050 then cal "$year" else echo ERROR fi

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

こんな感じでしょうか years=`year=1950;while [ $year -lt 2051 ]; do echo $((year++));done` for i in $years; do echo $i;cal $i; done

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

man cal とすると、calコマンドのマニュアルが出力されるので、読んでください。 ほとんどのコマンドは man コマンド でオンラインマニュアルを読むことができます。 質問する時は、最低限マニュアルを読んでからにしましょう。

関連するQ&A

  • [シェルスクリプト内で bashコマンド後のコマンドが実行されない]

    [シェルスクリプト内で bashコマンド後のコマンドが実行されない] 以下の様にシェルスクリプトを記述するとコマンド2が実行されません。 #! /bin/sh コマンド1 bash コマンド2 bash環境でコマンド2を実行させるにはどうしたら良いのでしょうか?

  • bash: dkpg: コマンドが見つかりません

    debian squeezeを使っています。 ルートの権限で、 dkpg -i ./home/user/.gnome2/epiphany/downloads/google-chrome-stable_current_i386.deb を実行しましたが、 bash: dkpg: コマンドが見つかりません が表示されました。 対処方法をお教えください。

  • .bash_historyについて

    .bash_historyファイルがホームディレクトリと、ルート直下に有ります。 ホームディレクトリの.bash_historyは各ユーザのコマンド履歴だと理解できるのですが、ルート直下の.bash_history(所有者はroot) は誰のコマンド履歴でしょうか? /root/.bash_historyもあるのでrootのコマンド履歴が2カ所あるというのも理解できないです。 [root@localhost ~]# locate .bash_history /home/hoge/.bash_history /home/abc/.bash_history /.bash_history /root/.bash_history

  • bashでの複数行のコマンドのリダイレクト

    Linux上のbashを使用して、複数行のコマンドの結果を一度にリダイレクトしたいと思います。 思いついた方法が、 #!/bin/bash cat << EOF >> ./test.log cat /etc/fstab cat /etc/inittab cat /etc/modprobe.conf EOF といった方法なのですが、これですとそれぞれのコマンドの結果ではなく、 単に cat /etc/fstab cat /etc/inittab cat /etc/modprobe.conf と言った出力結果がtest.logに出力されてしまいます。 上記のような複数のコマンドの結果を一度にリダイレクトする方法は無いでしょうか? cat /etc/fstab >> ./test.log cat /etc/inittab >> ./test.log cat /etc/modprobe.conf >> ./test.log と言った方法は避けたいと思います(実際には何10行と言うコマンド結果を出力したいので)

  • bash forコマンドでソート

    bash forコマンドでソート CentOS8 bashの forコマンドで、ディレクトリ内のファイル名を部分指定した降順でソートした状態で順次読み込みしたいです。 <ファイル> aaa.dat bbbb_0001.dat TEST_0001.file TEST_0002.file TEST_0003.file <アウトプット> TEST_0003.file TEST_0002.file TEST_0001.file 基本的な読込と、lsコマンドの結果を基に読み込む方法はわかりましたが、これに降順ソートを加えるにはどうすれば良いでしょうか? <基本的な読込> for file in /dir1/TEST_*.file do echo $file done <lsコマンドの結果を基に読込> for file in $(ls /dir1/TEST_*.file) do echo $file done

  • bash built-in exportコマンドとは?

    bash built-in exportコマンドの目的とは? という問題があり 答えは、アプリケーションに対して変更可能な環境をセットアップする とあります。 実際実行してもエラーが出現してよく分かりません。 回答のほどよろしくお願い致します。

  • bashで変数にパイプを入れ、コマンドとして使う?

    パイプを含む文字列が入った変数をシェルコマンドとして実行する方法がありましたら 教えてください。 Linux環境で、bashを使って定期的にモニタリングするスクリプトを書こうとしています。 スクリプトの引数で実行するモニタリングコマンドを変えれるようにしたいのですが、 パイプが入っているとうまくいきません。 下記のようなスクリプトで、引数に "ps -ef | grep pty" と入れたら、定期的に そのようなコマンドを実行できるようにできますでしょうか? (引数指定時に、きちんとクォーテーションで全体を囲んで、パイプが評価されない ようにしてもダメでした。) 変数として入ったコマンドを実行するときに、パイプがシングルクォーテーションで 囲まれて "ps -ef '|' grep pty" のようになってしまい、パイプとして実行時に認識 されないようです。 bashシェルで設けてる制約でしょうか?回避策などありますでしょうか? <<スクリプト poll.sh>> ## # Defs export RUNCMD='finger' export INTERVAL=10 ## # Getopt while getopts "t:" OPT; do case ${OPT} in t) INTERVAL=${OPTARG};; esac done shift $((OPTIND-1)) [ ${#} -gt 0 ] && RUNCMD="${*}" ## # Main part while :; do (set -x; ${RUNCMD}; sleep ${INTERVAL}); done

  • bashにてログを書き出すコマンド

    未経験で小さいシェルスクリプトを組んでいます。 バックグラウンドで動いているので、rmやmvをした時に何らかのメッセージがでてスクリプトがとまらないようにログ吐き出しをしたいのです。 それで、先人の書いたスクリプトを部分コピーしながらうまくやっていたのですが、ちゃんと意味を知らなければと思って質問しています。 たとえば rm $ファイル 2>> $ログファイル 1>&2 という記述がありまして、 2>> というのがどういう意味を持つのかが分かりません。 1>&2はググったところ、書き出しの順番のようですが、数字と&が具体的に何を意味しているか分かりませんでした。 bashのこういったコマンド群で参考になるサイトをご存じの方は教えていただけませんでしょうか。 また、簡単に上述の意味を教えていただけるとうれしいです。 よろしくお願いします。

  • bash historyの修正

    bashのhistoryについて質問があります。 historyで確認できるコマンド履歴を 修正する方法はありますでしょうか。 history -cですべての履歴をリセットできることはわかりました。 また、/ユーザ/.bash_history に履歴の記録がされていることも確認できました。 ただ、この履歴自体を修正する方法がわかりません。 具体的には、過去に誤って入力したコマンド(タイプミス)等を削除したいと考えています。 識者の皆さん、よろしくお願いいたします。

  • cygwin/bashとDOSの共通時間待ち

    timeoutというコマンドがありますが、bashとWindows(DOS)でそれぞれ意味が違います。 DOSのtimeoutでバッチファイルを作り、 DOSでも、cygwin/bashから呼び出しても動作するようにしたかったのですが、 うまく行きませんでした。 たぶん動くだろうと期待した、 cmd.exe /c timeout /T 10 は、cygwin/bashはbashのtimeoutと認識し、DOSのtimeoutとは認識しません。 つまりDOSでは動くのですが、cygwin/bashから起動しても正しく動作しません。 timeoutは、DOSでは少くとも外部コマンドではないと思うのですが、 単純に内部コマンドでもないかもしれません。 しょうがないのでpingを使って両用の待ちを実現していますが、 正直この種の方法は好きではありません。 何かいい方法はありますでしょうか?