ISO日付に沿って名前が付けられた新しいフォルダでファイルを作成し、vimでファイルのエイリアスを開きます。

ISO日付に沿って名前が付けられた新しいフォルダでファイルを作成し、vimでファイルのエイリアスを開きます。

.bashrcISO日付というフォルダにマークダウンやテキストファイルを作成できるようにエイリアスを作成したいと思います。グリニッジ標準時次にエディタでファイルを開きます。

これは私の予想出力(はい)です。 ./20211226220131/readme.mdreadme.mdで開かれましたvim

答え1

bashバージョン4.2以降を使用しているとします。

edmd () {
    local now
    TZ=GMT printf -v now '%(%Y%m%d%H%M%S)T' -1
    mkdir "$now" && "${EDITOR:-vim}" "$now/readme.md"
}

nowこのシェル関数は、GMTタイムゾーンの現在のタイムスタンプを含むローカル変数を生成します。その後、このタイムスタンプを使用して名前付きディレクトリを作成します。成功した場合は、readme.md必要なエディタを使用するか、ディレクトリが空または設定されていないvim場合はそのディレクトリ内のファイルを編集できます。EDITOR

このシェル関数は通常、エイリアスを宣言するたびに宣言され、次のように使用されます。

$ edmd

シェル機能は外部ユーティリティに依存せず、date誤って現在の作業ディレクトリを変更することはできません。

テスト:

$ edmd

(私のエディタが開いたら、何かを入力してファイルを保存してエディタを終了します。)

$ tree
.
`-- 20211226092420
    `-- readme.md

1 directory, 1 file

また、日付と時刻のISO 8601形式は、次のように書かれています。

  • 「2021-12-26T14:52:04Z」または
  • 「20211226T145204Z」

UTCタイムゾーンまたは

  • 「2021-12-26T14:52:04+00:00」

...ここで「00:00」はUTCに基づく時間オフセットを提供します。

したがって、使用することができます

TZ=UTC printf -v now '%(%Y-%m-%d-T%H:%M:%SZ)T' -1

または

TZ=UTC printf -v now '%(%Y%m%dT%H%M%SZ)T' -1

または

TZ=GMT printf -v now '%(%Y-%m-%d-T%H:%M:%S%z)T' -1

...「ISO日付」を取得します。

答え2

スクリプトを呼び出すのではなく、自分で作成したスクリプトのエイリアスを探している場合は、次のようになります。

alias datef='d="$(date +"%Y%m%d%H%M%S")" && mkdir "$d" && cd "$d" && vim readme.md'

エイリアスが実行されているのと同じフォルダに残る場合は(/[date]vimを終了した後にそのフォルダに滞在するのではなく)、cdサブシェルで次を使用します(効果はcdサブシェルにローカルです)。

alias datef='d="$(date +"%Y%m%d%H%M%S")" && mkdir "$d" && ( cd "$d" && vim readme.md )'

または、ディレクトリをまったく変更しないでください。

alias datef='d="$(date +"%Y%m%d%H%M%S")" && mkdir "$d" && vim "$d/readme.md"'

答え3

エイリアスを使用すると、これらすべてを簡単に実行できます。例:

alias foo='mkdir -p "$(TZ=GMT date +"%Y%m%d%H%M%S")" && vim "$_"/readme.md'

-pディレクトリがすでに存在していても、readme.mdそのディレクトリ内のファイルを編集または作成できるようにしたいです。コマンドTZ=GMTのタイムゾーンをdateGMTに設定します。この変数は前のコマンドで指定された引数として保存されるため、作成したディレクトリにファイルが$_開きます。から:vim $_/readme.mdreadme.mdman bash

_

シェルが起動したら、環境または引数リストに渡されたシェル、または実行中のシェルスクリプトを呼び出すために使用されるパス名に設定します。その後、拡張後、フォアグラウンドで実行された前の単純コマンドの最後の引数に展開されます。

答え4

このスクリプトを書いて解決策を見つけました。

#!/bin/bash
d="$(TZ=GMT date +"%Y%m%d%H%M%S")"
mkdir "$d"
cd "$d"
vim readme.md

関連情報