質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

2回答

774閲覧

Android+RxJavaで、subscribeの中で時刻をミリ秒まで取得したい

a.com

総合スコア907

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2021/07/24 01:57

編集2022/01/26 00:07

前提・実現したいこと

Android+RxJavaで、subscribeの中で時刻をミリ秒まで取得したいのですが、SimpleDateFormatではスレッドセーフでは無いのでエラーになってしまいます。

Java

1DateFormat formater = new SimpleDateFormat("hh:mm:ss.SSS", Locale.JAPAN); 2String date = format.format(new Date(System.currentTimeMillis()));

E/MainActivity: Cannot format given Object as a Date

android.text.format.DateFormatを使えば時刻は秒まで取得出来ますが、ミリ秒がそのままSSSとなってしまいます。

Java

1String date = (String)android.text.format.DateFormat.format("kk:mm:ss.SSS", Calendar.getInstance());

12:34:56.SSS

何か解決策や、書式の間違いがありましたらご指摘をお願いします。.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

例えばディレクトリA以下とディレクトリB以下でシェルの履歴を変えたりということがしたいです。

ディレクトリAに移動したら、こうする。

shell

1$ cd A 2$ HISTFILE=./a-history bash

ディレクトリを移動するときは、crtl-dをしてから移動する。

shell

1$ ctrl-d 2$ cd .../B 3$ HISTFILE=./b-history bash

ディレクトリを移動するときは、crtl-dをしてから移動する。以下これを延々と繰り返す。わたしにゃとても面倒なので御免こうむりますけどね。

otnさんの案を拝借してcdコマンドを置き換えれば便利かも。

参考。 https://www.atmarkit.co.jp/flinux/rensai/linuxtips/532chnhistfile.html

投稿2021/07/24 11:27

編集2021/07/24 11:29
shiketa

総合スコア4061

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a.com

2021/07/27 15:00

ありがとうございます!
guest

0

ベストアンサー

可能かどうかと言うことであれば、作り込めば可能でしょう。
cdコマンドを関数で置き換えて、その中で、
history -w ファイル名で現在のヒストリーをファイルに保管し、
history -r ファイル名でファイルからヒストリーを読んで置き換えるようなことをすればいいかと。

direnvなど「ディレクトリによって、xxxを切り替える」ような、cdを置き換える機能を既に使っていればそれと整合性を保って。

#ちょっと作ってみました。
~/.histsave/の下に、ディレクトリ名の/-に置き換えたファイル名で保存します。
保存してあるものが無いディレクトリに来た場合はヒストリーは不変ですが、クリアーしたければ、
else history -cを追加で。

Bash

1cd(){ 2 local DIR 3 DIR=$(pwd -P) 4 history -w ~/.histsave/"${DIR////-}" 5 builtin cd "$@" 6 DIR=$(pwd -P) 7 if [ -r ~/.histsave/"${DIR////-}" ] 8 then history -r ~/.histsave/"${DIR////-}" 9 fi 10}

cdを置き換える機能を既に使っていればそれと整合性を保って。

には注意。関数の内容をマージしないといけない。

投稿2021/07/24 02:59

編集2021/07/24 11:10
otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/07/24 11:47 編集

ああ、HISTFILEも書き換えておかないと、シェルを終了したときの保存先が変わらないですね。 HISTFILE=~/.histsave/"${DIR////-}"
a.com

2021/07/27 15:00

返事が遅くなり申し訳ありません。 サンプルコードも提示して頂きありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問