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
이렇게 했는데 잘못된 것 같아요
sudo vim /usr/local/bin/pdf2eps.sh
- 거기에 코드를 복사해서 붙여넣으세요.
sudo chmod 777 /usr/local/bin/pdf2eps.sh
rehash
- 스크립트가
pdf2eps.sh
PATH에 있는 것을 볼 수 있습니다.
난 여기 있는 게 마음에 안 들어
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
이제 스크립트는 $PATH
as 에 위치하게 됩니다 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"