スクリプトが実行されているユーザーは、$ PATHの一部としてルートディレクトリ( '/')を持っていない可能性があります。つまり、ルートディレクトリのファイルを参照するには、絶対パス名を指定する必要があります。ルートディレクトリの場合、スラッシュを追加するだけで、 'scriptname'は '/ scriptname'になります。
ほとんどのLinuxアカウントのデフォルト設定には、現在のディレクトリがパスに含まれていませんどちらも、Windowsのやり方です。つまり、同じ場所にいる場合でも、別のスクリプトからスクリプトを実行するために絶対パスを使用する必要があります。 (これはセキュリティ上の理由で良いことだと思っていますので、わかりました。)
私は質問を誤解していますが、これが助けてくれることを願っています。
EDIT:2番目の部分は、好きなようにコマンドを組み合わせたものですが、これはコマンドシェルに関する私の好きなものの1つで、Linuxベースのシェルがよく考慮される理由の1つを示しています通常はWindows上で利用できるものよりフル機能です。 パイプを使用して、あるコマンドの出力を別のコマンドの入力に送ることができます。これを行うには、コマンドをパイプ、または縦棒のcharacter-'|'と組み合わせます。この場合は、試してみてください。
grep -w "asd" doc.data | sort -k2,2n | head -5
をコマンドsort
とhead
は両方のパイプと互換性のある(それが理にかなっているほとんどのネイティブコマンドがそうであるように)です。つまり、標準入力(STDIN)と標準出力(STDOUT)を使用します。 STDOUTはデフォルトで画面に表示されます。しかし、それはパイプ文字が何をするかです - それは次のコマンドのSTDINに代わりにSTDOUTを送ります。これが理にかなっていて、役に立つと思っています。試してみます!
WindowsスタイルのCRLFラインエンディアンを使用していますか?もしそうなら、修正してください。 –
どうすれば確認できますか?私はLinuxサーバにWindows上でSSHingしています –
'file yourscriptname' –