【Bash / Ruby / Python3】カレントワーキングディレクトリを取得する方法の比較
前書き
自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。
本記事では、カレントワーキングディレクトリの取得方法を比較します。比較では、実装例および実行例をそれぞれ示します。
Bashではなく、RubyやPython3を使った方が好ましい理由は、以下の記事に記載しています。この記事には、各プログラミング言語の様々な実装(ディレクトリ操作やファイル操作など)を比較した他記事へのリンクを一覧にまとめています。
Bash(Shell Script)からRubyやPythonに乗り換え!頻繁に使う処理を各言語で比較
各言語のVersion
- Bash:GNU bash, バージョン 5.0.3(1)-release
- Ruby:ruby 2.5.5p157 (2019-03-15 revision 67260)
- Python:Python 3.7.3
比較:カレントワーキングディレクトリの取得
カレントワーキングディレクトリ(CWD)のPATHは、他のディレクトリに移動した後にScript実行時点のディレクトリへ戻る際に必要となります。そのため、ディレクトリ移動の前に、取得する機会が多いです。
ディレクトリの移動例と合わせて、以下に実装方法と実行例を示します。
Bashの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash # カレントワーキングディレクトリの取得 CWD="$(pwd)" # pwd(Print Working Dirctory)コマンドで取得 echo "${CWD}" # 一つ上のディレクトリ階層へ移動 cd .. # 現在のディレクトリを出力 echo "$(pwd)" # スクリプト実行時点のディレクトリへ復帰 cd "${CWD}" echo "$(pwd)" |
Rubyの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/usr/bin/env ruby # カレントワーキングディレクトリの取得 cwd = __dir__ p(cwd) # 一つ上のディレクトリ階層へ移動 Dir::chdir("..") # 現在のディレクトリを出力 p(Dir::pwd()) # CWDは、この書き方でも取得可能 # スクリプト実行時点のディレクトリへ復帰 Dir::chdir(cwd) p(Dir::pwd()) |
Python3の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/usr/bin/env python3 import os # カレントワーキングディレクトリの取得 cwd = os.getcwd() print(cwd) # 一つ上のディレクトリ階層へ移動 os.chdir("..") # 現在のディレクトリを出力 print(os.getcwd()) # スクリプト実行時点のディレクトリへ復帰 os.chdir(cwd) print(os.getcwd()) |
Bash、Ruby、Python3の実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ ./bash.sh /home/nao/scripts /home/nao /home/nao/scripts $ ./ruby.rb "/home/nao/scripts" "/home/nao" "/home/nao/scripts" $ ./python.py /home/nao/scripts /home/nao /home/nao/scripts |
ロシア人と国際結婚した地方エンジニア。
小学〜大学院、就職の全てが新潟。
大学の専攻は福祉工学だったのに、エンジニアとして就職。新卒入社した会社ではOS開発や半導体露光装置ソフトを開発。現在はサーバーサイドエンジニアとして修行中。HR/HM(メタル)とロシア妻が好き。サイトに関するお問い合わせやTwitterフォローは、お気軽にどうぞ。
1件の返信
[…] カレントワーキングディレクトリの取得 […]