2

Via this post, I am using the following command to export all .java files recursively in a directory to PDF form (files.pdf):

enscript -r -1 --file-align=2 --font=Courier7 --pretty-print=java --line-numbers -o - `find . -name '*.java'` | ps2pdf - files.pdf

This works fine. However, when I add the following line to my bash_profile:

alias printJavaFiles="enscript -r -1 --file-align=2 --font=Courier7 --pretty-print=java --line-numbers -o - `find . -name '*.java'` | ps2pdf - files.pdf"

and source the bash_profile, running printJavaFiles gives me a permission denied error for each .java file that I am trying to print, like so:

bash: ./datastructuretradeoffs/Main.java: Permission denied
bash: ./graphs/Main.java: Permission denied
bash: ./linkedlists/ListNode.java: Permission denied
bash: ./linkedlists/Main.java: Permission denied
bash: ./recursion/Main.java: Permission denied
bash: ./sorting/BinarySearch.java: Permission denied
bash: ./sorting/MergeSort.java: Permission denied
bash: ./stacksqueues/Main.java: Permission denied
bash: ./stacksqueues/MyQueue.java: Permission denied
bash: ./stacksqueues/Node.java: Permission denied
bash: ./stacksqueues/Queue.java: Permission denied
bash: ./stacksqueues/SetOfStacks.java: Permission denied
bash: ./stacksqueues/Stack.java: Permission denied
bash: ./strings/Main.java: Permission denied
bash: ./trees/BinaryTree.java: Permission denied
bash: ./trees/BTreePrinter.java: Permission denied
bash: ./trees/ExampleTrees.java: Permission denied
bash: ./trees/Main.java: Permission denied
bash: ./trees/TreeNode.java: Permission denied

Any ideas? Thanks.

Community
  • 1
  • 1
r123454321
  • 3,323
  • 11
  • 44
  • 63

1 Answers1

3

Because you're using double quotes when you define the alias, the inner backticks are executed immediately. Use single quotes to define the alias:

alias printJavaFiles='enscript ... -o - $(find . -name "*.java") | ps2pdf - files.pdf'
# changes ...........^..................^^.............^......^^.....................^

With what you have, the alias looks like:

alias printJavaFiles="enscript ... -o - ./a.java
./b.java
./c.java | ps2pdf - files.pdf"

Which illustrates where all the permission denied errors come from.

glenn jackman
  • 238,783
  • 38
  • 220
  • 352