質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Bash on Ubuntu on Windows

Bash on Ubuntu on Windowsは、Windows Subsystem for Linux(WSL)の非推奨の名称。Windows10およびWindows Server上でLinuxのバイナリ実行ファイルをネイティブ実行するための互換レイヤーです。

Q&A

解決済

2回答

2539閲覧

WSL bashでaliasや関数の定義がうまくいかない

igar

総合スコア110

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Bash on Ubuntu on Windows

Bash on Ubuntu on Windowsは、Windows Subsystem for Linux(WSL)の非推奨の名称。Windows10およびWindows Server上でLinuxのバイナリ実行ファイルをネイティブ実行するための互換レイヤーです。

0グッド

0クリップ

投稿2018/08/24 02:47

WSL bash(ubuntu bash )で、次のコマンドをaliasや関数に登録したいのですが、どうもうまくできません。どうしたらよいでしょうか?

powershell.exe . $(python -c "import os.path; print os.path.relpath('/mnt/c/_videos/agd/$(ls -t1 /mnt/c/_videos/agd/ | head -n 1)', '$(echo $PWD)')")

試したこと

alias

alias agd='powershell.exe . $(python -c "import os.path; print os.path.relpath('/mnt/c/_videos/agd/$(ls -t1 /mnt/c/_videos/agd/ | head -n 1)', '$(echo $PWD)')")'

エラー

$ agd File "<string>", line 1 import os.path; print os.path.relpath(/mnt/c/_videos/agd/video_20180824_104256.mp4, /mnt/c/_images) ^ SyntaxError: invalid syntax At line:1 char:1 + . + ~ Missing expression after '.' in pipeline element. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingExpression

関数

agd(){ powershell.exe . $(python -c "import os.path; print os.path.relpath('/mnt/c/_videos/agd/$(ls -t1 /mnt/c/_videos/agd/ | head -n 1)', '$(echo $PWD)')") }

エラー

bash: 予期しないトークン `}' 周辺に構文エラーがあります

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

引用符の使い方を理解されていないようです。

Bash

1alias agd="powershell.exe . $(python -c \"import os.path; print os.path.relpath('/mnt/c/_videos/agd/$(ls -t1 /mnt/c/_videos/agd/ | head -n 1)', '$(echo $PWD)')\")" 2もしくは、 3alias agd='powershell.exe . $(python -c "import os.path; print os.path.relpath('\''/mnt/c/_videos/agd/$(ls -t1 /mnt/c/_videos/agd/ | head -n 1)'\'', '\''$(echo $PWD)'\'')")'

関数の方は、よさそうに見えます。

あと、間違いではないですが、$(echo $PWD)は、$PWDと書くのと同じだし、os.path.relpathの第二引数のデフォルトはカレントディレクトリなので、そもそも第二引数は不要です。

投稿2018/08/24 04:48

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

igar

2018/08/25 01:19

できました。ありがとうございます。$(echo $PWD)はなんか$(echo $PWD)と書いていないと気持ち悪いというか個人的に見づらいのでこう書いてます。pythonはあんまり触らないので知りませんでした。勉強になります。
otn

2018/08/25 02:25

回答の2つ目のシンタックスハイライトがおかしいですね。\' に対応していないのかな?
guest

0

エラーとは関係無いかもしれませんが、
powershell.exeはWindowsのコマンドですので、/mnt/c/形式のLinuxパスは受け付けられ
wslpath -w /mnt/c/...
にてWindows形式への変換が必要です。

投稿2018/08/24 03:51

aquaS

総合スコア191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

igar

2018/08/24 04:02

powershell.exe . $(python -c "import os.path; print os.path.relpath('/mnt/c/_videos/agd/$(ls -t1 /mnt/c/_videos/agd/ | head -n 1)', '$(echo $PWD)')") 自体は問題なく実行できます。
aquaS

2018/08/24 04:40

本当に実行出来ます?? パスを少し書き換えて試しましたがエラーで動かないです。 print(...)とカッコで囲んで、wslpathで変換してやればそれっぽく動きましたが。
igar

2018/08/25 01:20

んー…バージョンの問題でしょうか。すみません、わからないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問