LoginSignup
7
2

More than 5 years have passed since last update.

Linuxで「こわくない」ショートカットもどき

Posted at

初心者の頃、おっかなびっくり自力で編み出して、
今でも重宝しているシェルのチップスを共有します。
ひょっとしたら、中上級者には当たり前すぎて無意味かもしれません。

概要

$ echo "cd /home/start/a/b/c/d/e" >w
$ . w
$ pwd
/home/start/a/b/c/d/e

これで意味が、あるいは無意味がわかった方は読まなくて大丈夫です。

動機:lnコマンドこわい

Linuxで、Windowsでいうショートカットの代わりに、
lnコマンドでリンクを張っている人が多いと思います。

$ pwd
/home
$ ls
start
$ ls ./start/a/b/c/d/e
ReadMy.txt xxx.c yyy.c

たとえばこんな深いところに作業場がある環境で、

$ ln -s start/a/b/c/d/e work

と叩いておけば

$ ls
start work
$ cd work
$ ls
ReadMy.txt main.c sub.c

これですぐに作業に取りかかれる、という仕組みですね。
ただ、愛用者には悪いんですが、これあまり使いたくないんです。

こわいことその1:絶対パスが。。。

このリンクだと、

$ pwd
/home/work

絶対パスが実際のそれと食い違ってしまっています。
ホームディレクトリから普段使いする作業場に、くらいならまだいいのですが、
「じゃあ上のdディレクトリを見てみましょう」と思っても

$ cd ../
$ ls
start work
$ pwd
/home
$ # ???

となってしまいます。しかも階層ごとに別のMakefileでもあった日には
誤って全makeしてしまう、なんてことも。怖くて使えません。

こわいことその2:循環が。。。

たとえば日本語と英語の文書を

$ ls ./a/b/c/JA/d/e/
index.html about.html information.html
$ ls ./a/b/c/EN/d/e/
index.html about.html information.html

と管理していて、日本語と英語を行ったり来たりして作業するとします。
ここで

$ cd ./a/b/c/JA/d/e/
$ ln -s ../../EN/d/e/ en
$ cd en
$ ln -s ../../JA/d/e/ ja

なんて作ってしまった日には、

$ cd ~/a/b/c/JA/d/e/en/ja/en/ja/en/ja/ # ...

無限ループが出来てしまいます。怖くて使えません。

解決:.をつかう

そこでおっかなびっくり編み出したのが、

$ echo "cd /home/start/a/b/c/d/e" >w
$ . w

これだけ。
.sourceコマンドと同義で、引数に受け取ったファイルの中身が
コマンドラインに直接打ち込まれたと思って実行します。
環境変数のバッチとかに使うやつですね。

なので、. wはファイルの中身cd /home/start/a/b/c/d/e
直接叩いたのと同じことになって、自然なディレクトリ移動ができます。

これでWindowsのショートカットに近いことができます。
実行権限や環境変数をいじる必要すらなく、コピーして使い回しても問題ない。
小心者にもお手軽です。
はた目には「細かいメモファイルが散らかってるだけ」ですしね。

使用例

$ ls
e start/ j
$ . j # 日本語作業ディレクトリへ
$ pwd
/home/start/a/b/c/JA/d/e/
$ ls
e index.html about.html information.html r
$ . e # 英語版へ平行移動
$ pwd
/home/start/a/b/c/EN/d/e/
$ ls
index.html about.html information.html j r
$ cat r
cd /home
$ . r # 「このプロジェクトのルートディレクトリ」も作っておくとさらに便利
$ ls
e start/ j
7
2
1

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
7
2