1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
TITLE(«
Tell me and I forget. Teach me and I remember. Involve me
and I learn. – Benjamin Franklin
», __file__, «Advanced Problems in the Linux Environment»)
OVERVIEW(«
This practical training course covers basic and advanced Unix
and Linux topics. It targets scientists, programmers and system
administrators. Readers will find plenty of material and exercises
of varying difficulty. Move the pointer to the icon at the top left
corner to open the navigation menu.
»)
SECTION(«Table of Contents»)
TABLE_OF_CONTENTS(«chapter_list_introduction»)
SECTION(«About»)
ifelse(PUBLIC(), «true», «dnl public version of the pages
<p> These pages were originally written to provide the necessary
background for using the IT infrastructure of the Max Planck Institute
for Developmental Biology and the Friedrich Miescher Laboratory in
Tübingen, Germany. Over time they morphed into a generic document
that was made public in December 2019. </p>
<p> The title is of course a pun on the famous book <em>Advanced
Programming in the Unix Environment</em> by W. Richard Stevens. While
Stevens' book centers around C programming, we try to convey
fundamental ideas without assuming substantial programming skills.
An elementary knowledge of shell and C programming is certainly
helpful, though. We also put an emphasis on Linux, which was still
in its infancy when Stevens' book was published in 1992. </p>
<p> All pages are served as static html files with no active
contents. They do not require javascript, work with any browser and do
not track the user in any way. In particular, we don't use cookies,
there is no "like" button, and we do not employ any web analysis
service like google analytics. Also, there are no advertisements of
any kind. </p>
SUBSECTION(«Exercises and Homeworks»)
<p> The exercises generally try to encourage the reader to
think about a specific topic rather than solve meaningless
problems mechanically. Many exercises suggest to examine further
literature. Longer or more challenging exercises are labelled as
homework. Solutions to homework exercises are only provided if at least
one person hands in a draft of a solution. To do so, send plain text
email to <a href="mailto:maan@tuebingen.mpg.de">Andre Noll</a>. </p>
SUBSECTION(«Feedback»)
<p> These pages get updated when errors are found, contents become
obsolete, or improvements are suggested. Feedback via the above
mailto link is appreciated. Besides solutions of homework exercises,
suggestions for additional topics or improvements of existing contents
are welcome. Please also point out unclear wording, grammar mistakes
and typos. </p>
SUBSECTION(«License»)
<p> This work is published under the
<a href="https://www.gnu.org/licenses/fdl-1.3.html">GNU Free
Documentation License</a> (GFDL). You may copy, redistribute, and
modify these pages but all copies and derivatives are required to be
available under the same license. </p>
SUBSECTION(«See Also»)
<p> Go back to the author's <a href="..">home page</a>. </p>
», « dnl internal version: different Introduction and Motivation
<p> These pages aim to provide the necessary background for using the
IT infrastructure of the MPI for developmental biology and the FML.
They complement the
<a href="http://ilm.eb.local/user-guide/">User guide</a>,
but are meant to be a practical training course rather than just a
text document. While the contents of the user guide are relevant to
almost every member of the institute, the primary target audience of
the Unix course is scientists with an emphasis on IT. In particular,
computer scientists who intent to use the compute cluster will find
plenty of material of varying difficulty to learn basic and advanced
topics related to Unix and Linux. </p>
<p> We first cover the general concepts of the Unix operating system while
later chapters focus on Linux specific topics and selected command
line tools. The exercises aim to convey understanding by inviting the
reader to read background information and to think about the topic
at hand. This is in contrast to many other tutorials which provide
quick solutions to frequently asked questions, targeting users who
do not wish to spend the time necessary to gain insight. Longer or
more challenging exercises are labelled as homework. </p>
<p> Feedback is appreciated. In fact, significant changes to these
pages are always triggered by the users asking questions. On one
hand, this makes sure that new material stays relevant to the target
audience. On the other hand, it also helps to fine-tune the degree
of difficulty and the detail of the solutions. As a general rule,
solutions to existing exercises are only provided if at least one
person hands in a proposal. To do so, send plain text email to <a
href="mailto:maan@tuebingen.mpg.de">Andre Noll</a>. </p>
SECTION(«Motivation»)
A quick glance at the table of contents reveals that the topics
of this course center around command line utilities rather than
software which comes with a <em> Graphical User Interface </em>
(GUI). While GUIs serve a purpose, especially for graphical tasks
(image manipulation, presentation writing, etc.), they are harmful
for scientific analysis. The remainder of this section explains why,
and tries to convince the reader that although <em> Command Line
Interfaces </em> (CLIs) can be scary in the beginning, learning how
to use them is worth the work.
SUBSECTION(«Why GUIs are harmful»)
<ul>
<li> GUIs give people comfort by presenting choices. </li>
<li> GUIs limit you by limiting choices. </li>
<li> Science is a unique situation. </li>
<li> As a scientist, you don't want to be influenced by the GUI
choices of the programmer. </li>
<li> As a scientist, you know which analyses you want to
perform. </li>
<li> In this situation, hand-holding GUIs hurt you. </li>
<li> GUIs make you dependent on their style of hand-holding. </li>
<li> GUIs change from version to version. </li>
<li> GUI-based software is often commercial, so your data can
be trapped if new versions cannot read the data files of old
versions. </li>
<li> GUIs make you less expert in your field </li>
<li> You will get bad habits </li>
<ul>
<li> GUIs make it easy to make bad choices (analysis,
plotting. etc). </li>
<li> GUIs make it easy to add unstructured data to your dataset
(e.g. spreadsheets with formatting as data). </li>
</ul>
<li> Your colleagues do not use the GUI </li>
<ul>
<li> Even if you do not program yourself, you will generate data that
is easy for programmers to work on. </li>
</ul>
</ul>
SUBSECTION(«Advantages of CLIs»)
<ul>
<li> You can do more without a GUI </li>
<ul>
<li> As you work more with the CLI, you will see problems in a different
way. You will realize that you can do new things. </li>
<li> Automation: </li>
<ul>
<li> Reduces your manual labor. </li>
<li> Produces more consistent results. </li>
<li> Allows you to work on bigger datasets. </li>
</ul>
</ul>
<li> You are faster without GUI </li>
<ul>
<li> You will perform similar analyses over and over again. Using
GUI-based software requires many clicks. Each click is an opportunity
for a mistake. </li>
<li> If you have to perform an analysis or make a conversion again,
you don't have to figure it out again if you have a little script. </li>
<li> As you continue to work with the CLI, you will see problems
differently, and realize there are many ways. </li>
</ul>
<li> You will make fewer errors </li>
<ul>
<li> GUIs are easy, but there is no record of your clicks. It can be
difficult to detect a mis-click, so sometimes it is impossible
to tell what you did (for example, which options you selected for
an analysis). </li>
<li> GUI-based software such as Excel can provide comfort, because
you "see" the data, but it hides the calculations, connections
between cells, and even which cells are entered data and which are
calculated. This has led to huge, world changing mistakes. </li>
</ul>
<li> You need the CLI </li>
<ul>
<li> Data is too big for GUIs. </li>
<li> Almost all cutting-edge tools are CLI. </li>
<li> You will probably need to convert formats to use new tools. </li>
<li> You will need to do this over dozens or hundreds or thousands
of files to use the servers and the cluster. </li>
</ul>
<li> Using the CLI makes you a better scientist </li>
<ul>
<li> CLI brings you closer to your data. </li>
<li> CLI brings you closer to your analysis. </li>
<li> CLI lets you use the most current tools. </li>
<li> CLI makes your analyses more repeatable. </li>
<li> CLI give you more control and accountability in your analyses. </li>
<li> CLI makes you more expert in your field. </li>
<li> Do not fear the CLI. </li>
<li> Learning the CLI takes work and time, but you will only have less
time as you progress in you career. </li>
</ul>
</ul>
»)
|