ハイフンで始まるファイルの削除方法

何の記事?

先日仕事中になぜかハイフン「-」で始まるファイルがサーバーにあることを発覚しました。

Linux OS だったため GUI でのファイル削除はできず・・・
一方 rmコマンドで消そうにもハイフンをつけるとオプションと扱われてしまい消せない事態に陥りました笑

そこで今回は Linux OS でハイフンで始まるファイルを削除する方法を記載します!!


問題点

前項で記載の通りですが、改めてどんな状況かを記載します。
仮に「-tmp」というファイルができてしまったとします。

そこで Linux のターミナルでファイルやディレクトリを削除する rm コマンドで削除を試みます。

$ rm -tmp
rm: invalid option -- 'tmp'
Try `rm --help' for more information.

Linux のコマンドでは「-」をつけるとオプションと解釈されてしまい上記のようなエラーが表示されました。

ちなみに rm にある本当のオプションの一例を以下に示します。

-f, --force エラーメッセージを表示しない

-i ファイルの削除前に確認する

-I 削除の対象が4つ以上の場合のみ削除の確認をする

-r, -R ディレクトリも削除の対象とする

-v 削除の詳細表示


解決策①

ディレクトリを指定してあげる方法があります。

例えば以下のようです。

rm ./-tmp

こうすればハイフンがオプションではない事が OS に伝えられますね。


解決策②

二つ目の方法は、ハイフンを二つつけてあげる方法です。
説明が難しいので実際にコマンドを見てみましょう。

rm -- -tmp

本来オプションを書く場所にハイフンを二つ書く事で回避できるんですね。知らなかった・・・


宣伝

twitter フォローも是非よろしくお願いします!

twitter.com

また、最近プログラミングメンターを始めました。お気軽にご相談ください。

https://menta.work/user/12194


最後に

変なファイルを間違えて作ることはよくあるのですが、ハイフンで始まるファイルは初めて作ってしまいました笑

しかも消せない!!みたいに焦ったので、同じ状況の方のお力になるとうれしいなと思います。

音楽紹介 〜hide〜

何の記事??

ロクが好きな音楽をひたすら好きなように紹介するコーナーです!

気に入ったり、同じ趣味の方がいらっしゃったら是非是非お声がけください。

twitter.com


hide

今回紹介するのは hide さんです!!

hide
hide

hide(本名:松本秀人)は、1964年生まれのギタリスト、歌手、プロデューサーです。
そして、言わずもがなですが X JAPAN のギタリストとして活躍していました。

ちなみに X JAPAN の時は HIDE でソロ活動時は hide としていました。

しかし残念ながら 1998年5月2日に急逝してしまいました。当時ファンによる後追い自殺がすごく急遽 YOSHIKI が会見を開いたことでも有名ですね。

・・・と冷静に紹介するのはここまでにして、本当に好きなんですよ!!
X JAPAN 時代も好きだし、ソロ時も好きなんです。

ちなみに数日前にゲーセンでお金めっちゃつぎ込んで入手しちゃいました笑

このフィギュアが着ている服なんですが、めちゃくちゃ可愛くないですか!?

「ノーブランド品」豪華修正版 衣装 hideラインパーカーコスチューム コスプレ イエロー 自由に選ぶ

LIVE や PV でも着ているんです!!
ROCKET DIVE のLIVE です!!

ギターでいえばダントツでこれが可愛くて好き!!


ロクの〇〇の時に聞きたい!!

今回は、、、カラオケで hide 好き仲間とライブ映像を見たい!! です。

Hi-Ho


最後に

やっぱり hide はかっこよくて可愛いな〜〜

Ruby でベンチマークを取る方法

何の記事??

早速ですが、みなさんは APIレスポンスが遅かったりバッチ処理が長くて「〇〇さんの担当している部分が遅いんじゃないの?」と疑われたことはありますか??

僕はあります泣(p>□<q*)
というのもデータ処理部分をメインでやっているためどうしても単純なファイル連携のバッチなんかをイメージして同じ「バッチ」と括られてしまうとやはり処理時間の長いバッチになってしまうことがあるんです

・・・という言い訳はこの辺にして、本題に入りましょう。

そんな時に「僕のかいたコード部分はこのくらいの時間がかかっています。」「こんな手法を試してしっかりと測定した結果この方法を取っています」などと的確にレスポンスするためにも必要なことが・・・
ベンチマークを取ること!!

今回はこのベンチマークというものを知ってもらうために Ruby でベンチマークをとる方法を紹介します!!


ベンチマークとは

プログラムは何かしら目的はあった上で書くものですが、大抵の場合に手法やロジックが複数候補に上がり頭の中ないしはチームと相談してアルゴリズムを決定することが大半だと思います。

しかし、その方法本当に最適ですか??
「実装が楽だから」(たしかに魅力的!!笑)とかあの先輩が言ったからといった理由で決めていませんか??

しっかりと測定しましょうして決めるべきですよね。

じゃあどうやって測定するのか・・・そんな時にベンチマークの出番です!!

それでは具体的にどんなことを測定・比較するかと言うとそれは web、研究・開発・IoT などでだいぶ変わってくるのですが、僕は基本的な以下をいつも測っています。

  • 処理完了までにかかる時間
  • メモリ消費量


Ruby でベンチマークをとる

Ruby ではベンチマーク用の標準ライブラリ(Benchmark)が用意されています。

「文字列の連結」を例にベンチマークのコードを見ていきましょう!
今回比較するのは += で文字列を繋げる方法と << で連結する方法です。

一般的には、<< の方が早いと言われていますが実際にどうなるでしょうか。計測していきましょう!!

ベンチマークの際に GC というメモリに残ってしまったゴミを掃除する機能を明示的に止めておく必要があります。(3行目)

実際にベンチマークを出している箇所は、コメント「1個目のベンチーク」と「2個目のベンチマーク」と書かれている箇所です。

report メソッドの引数には、レポートで表示する名前を入れてあげます。今回は += と << ですね。計測したい処理をブロックの中に書いてあげます。

今回はどちらも10000回、+= もしくは << で文字列を連結している箇所ですね!

require 'benchmark'
# GC を止める
GC.disable

Benchmark.bm() do |x|
  # 1個目のベンチマーク
  x.report("+=") {
    str = ""
    10000.times do
      str += "hoge"
    end
  }
  # 2個目のベンチマーク
  x.report("<<") {
    str = ""
    1000.times do
      str << "hoge"
    end
  }
end

実行結果は!!

              user     system      total        real
+=        0.049862   0.046535   0.096397 (  0.096497)
<<        0.000112   0.000014   0.000126 (  0.000126)

システム時間やら、ユーザータイムやらあるのですが一旦見て欲しいのは、real の箇所です。

なんと += メソッドを使った方は、0.096497秒かかっているのに対して、<< メソッドで連結している方は 0.000126秒で完了していますね!!

これで自信を持って、<< の方が早いのでこちらを使いましたと言えるわけです!!


最後に

今回は比較的にすでに知られている Ruby のメソッドの早いものと遅い物を比べたのでネットで調べればどちらが早いかはすぐに出ますが、これが本当に独自処理とか噛ませていくとわけわからなくなるんですよ笑

なのでベンチマークをしっかりとってあげて安心して処理を決定してあげる必要があるんですね!!

Twitter もお願いします!!(フォローの際に「ブログから」といただけると嬉しいです。読者と絡みたい!!笑)

twitter.com

また、最近プログラミングメンターを始めました。お気軽にご相談ください。

menta.work

少しでも興味を持っていただけたら嬉しいです。

それではまた次回〜