/usr/local/binに.shスクリプトを安全にインストールする方法は?

/usr/local/binに.shスクリプトを安全にインストールする方法は?

Ubuntu 16.04に次のスクリプトを正しく含めたいと思います。パスワード

#!/bin/sh
# http://tex.stackexchange.com/a/20886/13173
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

pdfcrop $2.pdf
pdftops -f $1 -l $1 -eps "$2-crop.pdf" 
rm  "$2-crop.pdf"
mv  "$2-crop.eps" $2.eps

これをしましたが、間違っていると思います。

  1. sudo vim /usr/local/bin/pdf2eps.sh
  2. そこにコードをコピーして貼り付けます。
  3. sudo chmod 777 /usr/local/bin/pdf2eps.sh
  4. rehash
  5. スクリプトがpdf2eps.shPATHにあることがわかります。

私はここにいるのが好きではありません。

  • vim次に実行sudo
  • 私の中の他のものは/usr/local/bin/ファイル自体ではなく、私がここで何か間違っていることを示すシンボリックリンクです。

パスにスクリプトを正しく/安全に追加するには?

ベストアンサー1

vim何の問題もなく動作しますsudo。これは、ルートアクセスが必要なディレクトリにファイルを作成する正しい方法です。残りのファイルはリンクもあるので問題ありません。気分が良くなると、代わりにスクリプトを作成できますが、実際には/usr/bin/usr/local/binファイルシステム階層標準:

/usr/local階層は、システム管理者がソフトウェアをローカルにインストールするときに使用します。システムソフトウェアが更新されたら上書きしないでください。ホストグループ間で共有できますが、/usrにはないプログラムやデータに使用できます。

ローカルにインストールされているソフトウェアは、/usrのソフトウェアを交換またはアップグレードするためにインストールしない限り、/usrではなく/usr/localになければなりません。[28]

したがって、FSHをフォローしたい場合しなければならない手動でインストールしたすべてのものをダウンロードすると、/usr/local正しいことが行われました。

これで、拡張機能が必要ない場合は.sh削除してください。 *nixシステムでは機能しません。

sudo mv /usr/local/bin/pdf2eps.sh /usr/local/bin/pdf2eps

これでスクリプトは$PATHasに配置されますpdf2eps


しかし、あなたがしなければならないことは、スペースや他の奇妙な文字を含むファイル名で実行された場合にスクリプトが失敗する原因となるいくつかの問題を解決することです。次のように修正します。

#!/bin/sh
# http://tex.stackexchange.com/a/20886/13173
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

if [ $# -ne 2 ]; then
    echo "Exactly 2 filenames are needed"
    exit 1
fi

pdfcrop "$2.pdf"
pdftops -f "$1" -l "$1" -eps "$2-crop.pdf"
rm  "$2-crop.pdf"
mv  "$2-crop.eps" "$2.eps"

おすすめ記事