LoginSignup
17
11

More than 1 year has passed since last update.

デスクトップを吹き飛ばした話

Last updated at Posted at 2022-10-19

背景

拙著「ExcelマクロをWSL2 x Githubで管理する」参照。
ExcelVBAのソースコードを管理するため、Ubuntu on WSLからWin環境でフォルダ操作しました。

恐怖のコード

注!:絶対に実行しないでください。

good-bye_Desktop.sh
# Cドライブのユーザフォルダのパスを取得
userFolderPath="`cmd.exe /c echo %USERPROFILE% | sed 's/\r//g'`"
# ユーザフォルダ名を取得
userFolderName=${userFolderPath##*\\}
# リポジトリのパスを取得
repoPath="`pwd`"
# リポジトリ名を取得
repoName=${repoPath##*/}
# Cドライブのデスクトップにリポジトリをディレクトリごとコピーする時のパス{repositoryName}は間違い!!!{repoName}が正しい!!!
copyToPath="/mnt/c/Users/${userFolderName}/Desktop/${repositoryName}" 

# Cドライブのデスクトップにリポジトリをディレクトリごとコピー
cp -rf ../$repoName $copyToPath

(中略)

# Cドライブのデスクトップにコピーしたリポジトリをディレクトリごと削除
rm -rf $copyToPath

解説

変数としてrepositoryNameは定義されていない。。。
 →${repositoryName} = (空)
 →copyToPath="/mnt/c/Users/${userFolderName}/Desktop/ 。。。
 →copyToPathにリポジトリ内の各種フォルダ・ファイルをコピー
 →(中略)
 →copyToPathを削除www

2022/10/20 追記
@hkcomori 様より
set -uを活用することで未定義変数を使用した場合は
エラーになるよう設定できることをご教示いただきました。
参考URL:https://kiririmode.hatenablog.jp/entry/20200822/1598070443

ありがとうございます!

その後

夜10時。血の気が引いていくのを感じました。
デスクトップにあった社内共有フォルダのショートカット先は無事でした。
神に感謝しました。
ただデスクトップ自体を消したわけですから、フォルダ作成も何もできなくなりました。

上司に泣きついたところ、「一旦はサインアウトしてみたら?」ということでした。
サインインしなおし結果、無事にデスクトップ「は」復活していました!
デスクトップ下にあったフォルダ・ファイルは戻せませんでしたwww
サヨウナラ、我が努力の結晶たちよ。。。

教訓

set -uは至高。(こちらのQiita記事が参考になります
rm -rfは鬼。使う際は本当に気をつけてください。
・ShellScriptは超クール。宣言されていない変数があっても何のその、処理は進みます。
・頼れる上司は神。日頃から良好な関係を築いていれば、いつかきっと救われます。
・なるべく社内共有フォルダ上で作業しましょう。
・保険としてOneDriveとかでバックアップをとっておくと吉。
・やっちまった系は話のネタになる。

17
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11