# シンボリックリンクを作成 !ln -sfn /content/drive/MyDrive/workspace /root/workspace
とあるのですが、添付させていただいた画像のように、現在いるところで!pwd
すると/content
とだけ表示されそれ以下のパスが書かれていないのですが、上のようなシンボリックリンクをはりたい場合はどう書けばよろしいでしょうか?なお、root配下には何もありませんでしたがこちらによるとroot以下にworkspaceという名のファイルを作るということでしょうか?知見をお持ちの方、ぜひよろしくお願いいたします。
> !pwdすると/contentとだけ表示され
「!pwd」はカレントディレクトリを表示するコマンドだから、結果は一つだけです
> それ以下のパスが書かれていない
!ls -l /content/drive
を実行した結果に「MyDrive」は有りますか?
有れば、
!ls -l /content/drive/MyDrive
を実行した結果に「workspace」は有りますか?
有れば、
!ln -sfn...
で、シンボリックリンクを作れます
もし「!ls -l...」の実行結果がたくさん表示されたら、スクロールして探してください
> root以下にworkspaceという名のファイルを作るということでしょうか?
そうです
!ln -sfn...
で、シンボリックリンクという特殊な種類のファイルを「/root」に作ります
参考Webページの通りにシンボリックリンクを作れば、実際は「/content/drive/MyDrive/workspace」にあるファイルやディレクトリが、「/root/workspace」にも有るように扱えるようになります
>「!pwd」はカレントディレクトリを表示するコマンドだから、結果は一つだけです
すいません、カレントディレクトリの意味を勘違いしてました。"現在いる場所"はなんというのでしょうか?「/content/drive/My Drive/workspace」のworkspaceにいるときに「!pwd」したら「/content/drive/My Drive/workspaceのworkspace」と表示されるかと思っていたのですが。
>!ls -l /content/driveを実行した結果に「MyDrive」は有りますか?
あります
>!ls -l /content/drive/MyDriveを実行した結果に「workspace」は有りますか?
ないですね、workspaceというディレクトリを作成した記憶もありませんが。。
記事内のworkspaceが僕でいう(My Drive以下の)Colab Notebooks/Kaggleかと思ったのですが、違いますでしょうか...?
>そうです
!ln -sfn...
で、シンボリックリンクという特殊な種類のファイルを「/root」に作ります
txtみたいな拡張子がないなと思ったらシンボリックリンクというファイルは拡張子がないんですね。また、「/content/drive/MyDrive/workspace」や「/root/workspace」のworkspaceのように名前は統一したほうがよろしいでしょうか?
質問が多くなって申し訳ありません、お手隙の際にご回答いただけましたら幸いです。
> "現在いる場所"はなんというのでしょうか?
カレントディレクトリです
> 「/content/drive/My Drive/workspace」のworkspaceにいるときに「!pwd」したら「/content/drive/My Drive/workspaceのworkspace」と表示されるかと思っていたのですが。
「現在いる場所」が「/content/drive/MyDrive/workspace」なら、「!pwd」を実行したら「/content/drive/MyDrive/workspace」と表示されます
> !pwdすると/contentとだけ表示され
となったのなら、その時は「/content」にいたのです
「!pwd」を実行したら「/content」と表示される状態で、
%cd drive
!pwd
%cd MyDrive
!pwd
を実行してみてください
「現在いる場所」が
→ /content/drive → /content/drive/MyDrive
と変わるのが分かると思います
> 「/content/drive/MyDrive/workspace」や「/root/workspace」のworkspaceのように名前は統一したほうがよろしいでしょうか?
「/root/workspace」を作った目的次第なので、分かりません
シンボリックリンクを作った以降で、「/root/workspace」に何かがあるのを前提としたプログラムを実行するのなら、名前が違う場合は、プログラムを修正する必要があります
そうではなく、単に「/content/drive/MyDrive」にある何か(名前は何でもいい)に容易にアクセスできるように「/root」にシンボリックリンクを作るだけなら、シンボリックリンクの名前も何でもいいですよね
【追記】
https://knowledge.sakura.ad.jp/28301/
の「手順2.6 ワークスペースディレクトリの作成と最低限の環境変数の設定」に、
「VSCode+Dockerで開発経験のある方は、Dockerのフォルダ構成と同じにすると都合がよいので、「/workspace」というフォルダがオススメです。もちろん他のフォルダ名でも構いませんが、、、」
と書かれてました
MyDriveやroot配下にworkspaceディレクトリがないのですが手動で作成した方がよろしいでしょうか?それとも`!ln -sfn /content/drive/MyDrive/workspace /root/workspace`を実行したときに自動で作成されますか?
【追記】
↑僕が参考にした記事では作ってる前提で話が進んでるみたいですが、jbpb0さんに添付していただいた記事では手動で作ってるようですね。
僕が添付させていただいた記事の「#シンボリックリンクを作成」の4つ下ぐらいに「#bashファイルの作成」とあると思うのですがzshをデフォルトに設定してからのこの操作って何を意味してるかお分かりになったりしますでしょうか...?
> MyDriveやroot配下にworkspaceディレクトリがないのですが手動で作成した方がよろしいでしょうか?それとも`!ln -sfn /content/drive/MyDrive/workspace /root/workspace`を実行したときに自動で作成されますか?
「/root」には、「!ln...」を実行したら「workspace」というシンボリックリンクが作成されます
「.../MyDrive」には作成されません
なので、現状の状態のままで、上記の「!ln...」を「そのまま」実行しても、ダメです
> 記事内のworkspaceが僕でいう(My Drive以下の)Colab Notebooks/Kaggle
ということなら、それのシンボリックリンクを「/root」に作成したらいいのではないですかね
作成するシンボリックリンクのファイル名を「workspace」にする必要があるのか、あるいは「Kaggle」でいいのかは、「2021/10/19 16:12」のコメントに書いたように、質問者さんが参考Webページの手順で環境構築をした後に何をしたいかによるので、私には分かりません
ちなみに、実体が「(My Drive以下の)Colab Notebooks/Kaggle」のシンボリックリンクのファイル名を「/root/workspace」にすることもできます
シンボリックリンクのファイル名が、実体のファイル名やディレクトリ名と同じじゃないといけない、ということはないので
> zshをデフォルトに設定してからのこの操作って何を意味してるか
こういう使い方をしたことが無いので、何らかの操作をした時にbashが使われる、ということがあるのかどうか分かりません
ちなみに、
https://speakerdeck.com/takapy/googlecolabtovscodewoyong-itafen-xi-huan-jing-yun-yong-tips?slide=28
には、「bash系ファイルにも必要な環境変数を設定しておくと良い」って書いてありました
MyDrive配下にworkspaceという空のディレクトリを作り、`!ln -sfn /content/drive/MyDrive/workspace /root/workspace`を実行しましたがroot配下にはworkspaceディレクトリは作成されていません。シンボリックリンクがちゃんと作成されたか確認する方法などはございますでしょうか?
zshにつきましては記事の添付をしてくださりありがとうございます。bashにも設定しておいた方がよろしいのですね。
> root配下にはworkspaceディレクトリは作成されていません。
シンボリックリンクはディレクトリではありません
> シンボリックリンクがちゃんと作成されたか確認する方法
!ls -l /root
たしか、質問者さんはMacをお使いだったので、Macでシンボリックリンクがどのようなものかを確認してみてください
以下、Macのターミナルでの手順を書きます
まず、
ls -l /
を実行してみてください
そうしたら、一番左が「l」(小文字のエル)になってるのがいくつかあると思います
それがシンボリックリンクです
当方のMacのOSはちょっと古いのを使ってますが、それでは「etc」「tmp」「var」がそうです
BigSurでは、もしかしたら変わってるかもしれませんが、ここでは同じとして話を進めます
シンボリックリンクは、「ls -l...」の結果の一番右が、たとえば
etc -> private/etc
みたいになってますよね
これは、実際のディレクトリは「/private/etc」で、それのシンボリックリンクを「/etc」として作ってる、ということです
つまり、本当は「/etc」というディレクトリは有りません
しかしながら、
cd /etc
は実行できます
本当は存在してない「/etc」に「cd」できるのは、「/etc」というシンボリックリンクがあるからです
「/etc」はディレクトリではありませんが、ディレクトリが有るかのように「cd」ができます
cd /etc
ls -l
の結果と、
cd /private/etc
ls -l
の結果を比べてみたら、全く同じであることが分かります
それは、「/etc」の実体が「/private/etc」だからです
上記を行なって確認してもらえたら、Google Colabで「!ln...」で作成したシンボリックリンク「/root/workspace」はディレクトリではないことと、シンボリックリンクを作ると全然違うところにあるディレクトリに簡単にアクセスできるようになって便利、ということが分かると思います
詳しく教えてくださりありがとうございます。
`!ls -l /`を実行すると`total 104`でたくさん出力されたのですが、`!ls -l /root`と実行すると`total 0`と出力されてしまいました。
> `!ls -l /root`と実行すると`total 0`と出力
「!ln -sfn…」を実行してから、すぐに「!ls -l /root」を実行しましたか?
記事通りに進めましたので、
`!ln -sfn /content/drive/MyDrive/workspace /root/workspace`の後`!sudo apt-get install zsh`でzshをインストールし、`!chsh -s /usr/bin/zsh`でデフォルトをzshにし、`!ls -l /root`を実行いたしました。
> `!ln -sfn /content/drive/MyDrive/workspace /root/workspace`の後`!sudo apt-get install zsh`でzshをインストールし、`!chsh -s /usr/bin/zsh`でデフォルトをzshにし、`!ls -l /root`を実行
は、一気に連続でやりました?
途中でエラーは出てませんでしたか?
下記は実行できますか?
!ls -l /content/drive/MyDrive/workspace
`!sudo apt-get install zsh`を実行した際に以下のような出力が出ましたが、エラーが出てる感じはしないのですがどうでしょうか?
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
zsh-common
Suggested packages:
zsh-doc
The following NEW packages will be installed:
zsh zsh-common
0 upgraded, 2 newly installed, 0 to remove and 37 not upgraded.
Need to get 4,066 kB of archives.
After this operation, 15.2 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 zsh-common all 5.4.2-3ubuntu3.1 [3,376 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 zsh amd64 5.4.2-3ubuntu3.1 [690 kB]
Fetched 4,066 kB in 3s (1,581 kB/s)
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76, <> line 2.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Selecting previously unselected package zsh-common.
(Reading database ... 155047 files and directories currently installed.)
Preparing to unpack .../zsh-common_5.4.2-3ubuntu3.1_all.deb ...
Unpacking zsh-common (5.4.2-3ubuntu3.1) ...
Selecting previously unselected package zsh.
Preparing to unpack .../zsh_5.4.2-3ubuntu3.1_amd64.deb ...
Unpacking zsh (5.4.2-3ubuntu3.1) ...
Setting up zsh-common (5.4.2-3ubuntu3.1) ...
Setting up zsh (5.4.2-3ubuntu3.1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
`!ls -l /content/drive/MyDrive/workspace`を実行すると`total 0`と出力されます。。
> `!ls -l /content/drive/MyDrive/workspace`を実行すると`total 0`と出力されます。。
ディレクトリは確かに存在しますね
それでしたら、下記を連続して実行してみてください
!ln -sfn /content/drive/MyDrive/workspace /root/workspace
!ls -l /root
確かに存在するディレクトリのシンボリックリンクを作成するコマンドを実行して、その際にエラーが出なければ、その時に「/root」にシンボリックリンクができてるはずなので、「!ls -l /root」で何も出てこないはずはないのです
/content/drive/MyDrive配下にworkspaceディレクトリを手動で作ったのですが。。
!ls -l /root
を実行した結果ですが、
total 0
の下に
lrwxrwxrwx 1 root root...(日時とか)... workspace -> /content/drive/MyDrive/workspace
と表示されてませんか?
`total 0
lrwxrwxrwx 1 root root 32 Oct 24 11:36 workspace -> /content/drive/MyDrive/workspace`
と表示されました!
それでしたら、シンボリックリンク「/root/workspace」が作成されてるので、質問の
> 上のようなシンボリックリンクをはりたい
は達成されました
空のディレクトリ「/content/drive/MyDrive/workspace」のシンボリックリンクを作ることに意味があるのかは、ご自身でご判断ください
かしこまりました、ありがとうございます!
回答1件
あなたの回答
tips
プレビュー