##// END OF EJS Templates
Capitalising Python...
Joe Borg -
Show More
@@ -1,213 +1,213 b''
1 .. _ipython_as_shell:
1 .. _ipython_as_shell:
2
2
3 =========================
3 =========================
4 IPython as a system shell
4 IPython as a system shell
5 =========================
5 =========================
6
6
7
7
8
8
9 Overview
9 Overview
10 ========
10 ========
11
11
12 It is possible to adapt IPython for system shell usage. In the past, IPython
12 It is possible to adapt IPython for system shell usage. In the past, IPython
13 shipped a special 'sh' profile for this purpose, but it had been quarantined
13 shipped a special 'sh' profile for this purpose, but it had been quarantined
14 since 0.11 release, and in 1.0 it was removed altogether. Nevertheless, much
14 since 0.11 release, and in 1.0 it was removed altogether. Nevertheless, much
15 of this section relies on machinery which does not require a custom profile.
15 of this section relies on machinery which does not require a custom profile.
16
16
17 You can set up your own 'sh' :ref:`profile <Profiles>` to be different from
17 You can set up your own 'sh' :ref:`profile <Profiles>` to be different from
18 the default profile such that:
18 the default profile such that:
19
19
20 * Prompt shows the current directory (see `Prompt customization`_)
20 * Prompt shows the current directory (see `Prompt customization`_)
21 * Make system commands directly available (in alias table) by running the
21 * Make system commands directly available (in alias table) by running the
22 ``%rehashx`` magic. If you install new programs along your PATH, you might
22 ``%rehashx`` magic. If you install new programs along your PATH, you might
23 want to run ``%rehashx`` to update the alias table
23 want to run ``%rehashx`` to update the alias table
24 * turn ``%autocall`` to full mode
24 * turn ``%autocall`` to full mode
25
25
26
26
27 Environment variables
27 Environment variables
28 =====================
28 =====================
29
29
30 Rather than manipulating os.environ directly, you may like to use the magic
30 Rather than manipulating os.environ directly, you may like to use the magic
31 `%env` command. With no arguments, this displays all environment variables
31 `%env` command. With no arguments, this displays all environment variables
32 and values. To get the value of a specific variable, use `%env var`. To set
32 and values. To get the value of a specific variable, use `%env var`. To set
33 the value of a specific variable, use `%env foo bar`, `%env foo=bar`. By
33 the value of a specific variable, use `%env foo bar`, `%env foo=bar`. By
34 default values are considered to be strings so quoting them is unnecessary.
34 default values are considered to be strings so quoting them is unnecessary.
35 However, python variables are expanded as usual in the magic command, so
35 However, Python variables are expanded as usual in the magic command, so
36 `%env foo=$bar` means "set the environment variable foo to the value of the
36 `%env foo=$bar` means "set the environment variable foo to the value of the
37 python variable `bar`".
37 Python variable `bar`".
38
38
39 Aliases
39 Aliases
40 =======
40 =======
41
41
42 Once you run ``%rehashx``, all of your $PATH has been loaded as IPython aliases,
42 Once you run ``%rehashx``, all of your $PATH has been loaded as IPython aliases,
43 so you should be able to type any normal system command and have it executed.
43 so you should be able to type any normal system command and have it executed.
44 See ``%alias?`` and ``%unalias?`` for details on the alias facilities. See also
44 See ``%alias?`` and ``%unalias?`` for details on the alias facilities. See also
45 ``%rehashx?`` for details on the mechanism used to load $PATH.
45 ``%rehashx?`` for details on the mechanism used to load $PATH.
46
46
47
47
48 Directory management
48 Directory management
49 ====================
49 ====================
50
50
51 Since each command passed by ipython to the underlying system is executed
51 Since each command passed by IPython to the underlying system is executed
52 in a subshell which exits immediately, you can NOT use !cd to navigate
52 in a subshell which exits immediately, you can NOT use !cd to navigate
53 the filesystem.
53 the filesystem.
54
54
55 IPython provides its own builtin ``%cd`` magic command to move in the
55 IPython provides its own builtin ``%cd`` magic command to move in the
56 filesystem (the % is not required with automagic on). It also maintains
56 filesystem (the % is not required with automagic on). It also maintains
57 a list of visited directories (use ``%dhist`` to see it) and allows direct
57 a list of visited directories (use ``%dhist`` to see it) and allows direct
58 switching to any of them. Type ``cd?`` for more details.
58 switching to any of them. Type ``cd?`` for more details.
59
59
60 ``%pushd``, ``%popd`` and ``%dirs`` are provided for directory stack handling.
60 ``%pushd``, ``%popd`` and ``%dirs`` are provided for directory stack handling.
61
61
62
62
63 Prompt customization
63 Prompt customization
64 ====================
64 ====================
65
65
66 Here are some prompt configurations you can try out interactively by using the
66 Here are some prompt configurations you can try out interactively by using the
67 ``%config`` magic::
67 ``%config`` magic::
68
68
69 %config PromptManager.in_template = r'{color.LightGreen}\u@\h{color.LightBlue}[{color.LightCyan}\Y1{color.LightBlue}]{color.Green}|\#> '
69 %config PromptManager.in_template = r'{color.LightGreen}\u@\h{color.LightBlue}[{color.LightCyan}\Y1{color.LightBlue}]{color.Green}|\#> '
70 %config PromptManager.in2_template = r'{color.Green}|{color.LightGreen}\D{color.Green}> '
70 %config PromptManager.in2_template = r'{color.Green}|{color.LightGreen}\D{color.Green}> '
71 %config PromptManager.out_template = r'<\#> '
71 %config PromptManager.out_template = r'<\#> '
72
72
73
73
74 You can change the prompt configuration to your liking permanently by editing
74 You can change the prompt configuration to your liking permanently by editing
75 ``ipython_config.py``::
75 ``ipython_config.py``::
76
76
77 c.PromptManager.in_template = r'{color.LightGreen}\u@\h{color.LightBlue}[{color.LightCyan}\Y1{color.LightBlue}]{color.Green}|\#> '
77 c.PromptManager.in_template = r'{color.LightGreen}\u@\h{color.LightBlue}[{color.LightCyan}\Y1{color.LightBlue}]{color.Green}|\#> '
78 c.PromptManager.in2_template = r'{color.Green}|{color.LightGreen}\D{color.Green}> '
78 c.PromptManager.in2_template = r'{color.Green}|{color.LightGreen}\D{color.Green}> '
79 c.PromptManager.out_template = r'<\#> '
79 c.PromptManager.out_template = r'<\#> '
80
80
81 Read more about the :ref:`configuration system <config_overview>` for details
81 Read more about the :ref:`configuration system <config_overview>` for details
82 on how to find ``ipython_config.py``.
82 on how to find ``ipython_config.py``.
83
83
84 .. _string_lists:
84 .. _string_lists:
85
85
86 String lists
86 String lists
87 ============
87 ============
88
88
89 String lists (IPython.utils.text.SList) are handy way to process output
89 String lists (IPython.utils.text.SList) are handy way to process output
90 from system commands. They are produced by ``var = !cmd`` syntax.
90 from system commands. They are produced by ``var = !cmd`` syntax.
91
91
92 First, we acquire the output of 'ls -l'::
92 First, we acquire the output of 'ls -l'::
93
93
94 [Q:doc/examples]|2> lines = !ls -l
94 [Q:doc/examples]|2> lines = !ls -l
95 ==
95 ==
96 ['total 23',
96 ['total 23',
97 '-rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py',
97 '-rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py',
98 '-rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py',
98 '-rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py',
99 '-rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py',
99 '-rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py',
100 '-rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py',
100 '-rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py',
101 '-rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py',
101 '-rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py',
102 '-rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py',
102 '-rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py',
103 '-rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc']
103 '-rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc']
104
104
105 Now, let's take a look at the contents of 'lines' (the first number is
105 Now, let's take a look at the contents of 'lines' (the first number is
106 the list element number)::
106 the list element number)::
107
107
108 [Q:doc/examples]|3> lines
108 [Q:doc/examples]|3> lines
109 <3> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
109 <3> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
110
110
111 0: total 23
111 0: total 23
112 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py
112 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py
113 2: -rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py
113 2: -rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py
114 3: -rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py
114 3: -rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py
115 4: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py
115 4: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py
116 5: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py
116 5: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py
117 6: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py
117 6: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py
118 7: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc
118 7: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc
119
119
120 Now, let's filter out the 'embed' lines::
120 Now, let's filter out the 'embed' lines::
121
121
122 [Q:doc/examples]|4> l2 = lines.grep('embed',prune=1)
122 [Q:doc/examples]|4> l2 = lines.grep('embed',prune=1)
123 [Q:doc/examples]|5> l2
123 [Q:doc/examples]|5> l2
124 <5> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
124 <5> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
125
125
126 0: total 23
126 0: total 23
127 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py
127 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py
128 2: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py
128 2: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py
129 3: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py
129 3: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py
130 4: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py
130 4: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py
131 5: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc
131 5: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc
132
132
133 Now, we want strings having just file names and permissions::
133 Now, we want strings having just file names and permissions::
134
134
135 [Q:doc/examples]|6> l2.fields(8,0)
135 [Q:doc/examples]|6> l2.fields(8,0)
136 <6> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
136 <6> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
137
137
138 0: total
138 0: total
139 1: example-demo.py -rw-rw-rw-
139 1: example-demo.py -rw-rw-rw-
140 2: example-gnuplot.py -rwxrwxrwx
140 2: example-gnuplot.py -rwxrwxrwx
141 3: extension.py -rwxrwxrwx
141 3: extension.py -rwxrwxrwx
142 4: seteditor.py -rwxrwxrwx
142 4: seteditor.py -rwxrwxrwx
143 5: seteditor.pyc -rwxrwxrwx
143 5: seteditor.pyc -rwxrwxrwx
144
144
145 Note how the line with 'total' does not raise IndexError.
145 Note how the line with 'total' does not raise IndexError.
146
146
147 If you want to split these (yielding lists), call fields() without
147 If you want to split these (yielding lists), call fields() without
148 arguments::
148 arguments::
149
149
150 [Q:doc/examples]|7> _.fields()
150 [Q:doc/examples]|7> _.fields()
151 <7>
151 <7>
152 [['total'],
152 [['total'],
153 ['example-demo.py', '-rw-rw-rw-'],
153 ['example-demo.py', '-rw-rw-rw-'],
154 ['example-gnuplot.py', '-rwxrwxrwx'],
154 ['example-gnuplot.py', '-rwxrwxrwx'],
155 ['extension.py', '-rwxrwxrwx'],
155 ['extension.py', '-rwxrwxrwx'],
156 ['seteditor.py', '-rwxrwxrwx'],
156 ['seteditor.py', '-rwxrwxrwx'],
157 ['seteditor.pyc', '-rwxrwxrwx']]
157 ['seteditor.pyc', '-rwxrwxrwx']]
158
158
159 If you want to pass these separated with spaces to a command (typical
159 If you want to pass these separated with spaces to a command (typical
160 for lists if files), use the .s property::
160 for lists if files), use the .s property::
161
161
162
162
163 [Q:doc/examples]|13> files = l2.fields(8).s
163 [Q:doc/examples]|13> files = l2.fields(8).s
164 [Q:doc/examples]|14> files
164 [Q:doc/examples]|14> files
165 <14> 'example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc'
165 <14> 'example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc'
166 [Q:doc/examples]|15> ls $files
166 [Q:doc/examples]|15> ls $files
167 example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc
167 example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc
168
168
169 SLists are inherited from normal python lists, so every list method is
169 SLists are inherited from normal Python lists, so every list method is
170 available::
170 available::
171
171
172 [Q:doc/examples]|21> lines.append('hey')
172 [Q:doc/examples]|21> lines.append('hey')
173
173
174
174
175 Real world example: remove all files outside version control
175 Real world example: remove all files outside version control
176 ------------------------------------------------------------
176 ------------------------------------------------------------
177
177
178 First, capture output of "hg status"::
178 First, capture output of "hg status"::
179
179
180 [Q:/ipython]|28> out = !hg status
180 [Q:/ipython]|28> out = !hg status
181 ==
181 ==
182 ['M IPython\\extensions\\ipy_kitcfg.py',
182 ['M IPython\\extensions\\ipy_kitcfg.py',
183 'M IPython\\extensions\\ipy_rehashdir.py',
183 'M IPython\\extensions\\ipy_rehashdir.py',
184 ...
184 ...
185 '? build\\lib\\IPython\\Debugger.py',
185 '? build\\lib\\IPython\\Debugger.py',
186 '? build\\lib\\IPython\\extensions\\InterpreterExec.py',
186 '? build\\lib\\IPython\\extensions\\InterpreterExec.py',
187 '? build\\lib\\IPython\\extensions\\InterpreterPasteInput.py',
187 '? build\\lib\\IPython\\extensions\\InterpreterPasteInput.py',
188 ...
188 ...
189
189
190 (lines starting with ? are not under version control).
190 (lines starting with ? are not under version control).
191
191
192 ::
192 ::
193
193
194 [Q:/ipython]|35> junk = out.grep(r'^\?').fields(1)
194 [Q:/ipython]|35> junk = out.grep(r'^\?').fields(1)
195 [Q:/ipython]|36> junk
195 [Q:/ipython]|36> junk
196 <36> SList (.p, .n, .l, .s, .grep(), .fields() availab
196 <36> SList (.p, .n, .l, .s, .grep(), .fields() availab
197 ...
197 ...
198 10: build\bdist.win32\winexe\temp\_ctypes.py
198 10: build\bdist.win32\winexe\temp\_ctypes.py
199 11: build\bdist.win32\winexe\temp\_hashlib.py
199 11: build\bdist.win32\winexe\temp\_hashlib.py
200 12: build\bdist.win32\winexe\temp\_socket.py
200 12: build\bdist.win32\winexe\temp\_socket.py
201
201
202 Now we can just remove these files by doing 'rm $junk.s'.
202 Now we can just remove these files by doing 'rm $junk.s'.
203
203
204 The .s, .n, .p properties
204 The .s, .n, .p properties
205 -------------------------
205 -------------------------
206
206
207 The ``.s`` property returns one string where lines are separated by
207 The ``.s`` property returns one string where lines are separated by
208 single space (for convenient passing to system commands). The ``.n``
208 single space (for convenient passing to system commands). The ``.n``
209 property return one string where the lines are separated by a newline
209 property return one string where the lines are separated by a newline
210 (i.e. the original output of the function). If the items in string
210 (i.e. the original output of the function). If the items in string
211 list are file names, ``.p`` can be used to get a list of "path" objects
211 list are file names, ``.p`` can be used to get a list of "path" objects
212 for convenient file manipulation.
212 for convenient file manipulation.
213
213
General Comments 0
You need to be logged in to leave comments. Login now