In [1]. import subprocess as sprChuyện này không có gì sai cho đến khi có điều gì sai xảy ra
In [2]. đầu ra = spr. check_output[['ls', '/etc/hosts']]
In [3]. print[output]
b'/etc/hosts\n'
Nếu có lỗi xảy ra, ta chỉ nhận được một ngoại lệ chứ không phải là phần lỗi của câu lệnh [stderr].
Trong [4]. đầu ra = spr. check_output[['ls', '/etc/hostx']]
ls. /etc/hostx. Không có tệp hoặc thư mục như vậy
---------------------------------- . check_output[['ls', '/etc/hostx']]
CalledProcessError Traceback [most recent call last]
in []
----> 1 output = spr.check_output[['ls', '/etc/hostx']]
/usr/local/lib/python3. 5/quy trình con. py trong check_output[timeout, *popenargs, **kwargs]
627
628 lượt chạy trở lại[*popenargs, stdout=PIPE, timeout=timeout, check=True . thiết bị xuất chuẩn
--> 629 **kwargs].stdout
630
631
/usr/local/lib/python3. 5/quy trình con. py đang chạy[đầu vào, thời gian chờ, kiểm tra, *popenargs, **kwargs]
709 nếu kiểm tra và mã hóa lại.
710 tăng CalledProcessError[retcode, process. args,
--> 711 output=stdout, stderr=stderr]
712 return CompletedProcess[ process. args, retcode, stdout, stderr]
713
CalledProcessError. Lệnh '['ls', '/etc/hostx']' trả về trạng thái thoát khác không 1
Bỏ qua lỗi luôn là nguồn gốc của đau thương, hãy sử dụng Popen để thu được cả thiết bị xuất chuẩn và thiết bị xuất chuẩn.
Trong [8]. p = mùa xuân. Popen[['ls', '/etc/hostx'], stdout=spr. ỐNG, stderr=spr. PIPE]Nếu đã quen dùng check_ouput, hãy thay đổi thói quen, vì một thế giới ít lỗi hơn 😲
Trong [9]. thiết bị xuất chuẩn, thiết bị xuất chuẩn = p. giao tiếp[]
Trong [10]. in [thiết bị xuất chuẩn, thiết bị xuất chuẩn, p. mã trả về]
b'' b'ls. /etc/hostx. Không có tệp hoặc thư mục nào như vậy\n' 1
Bài viết thực hiện trên Python.
In [7]. nhập sys; . phiên bản]
3. 5. 1 [mặc định, ngày 21 tháng 4 năm 2016, 17. 24. 52]
[GCC 4. 2. 1 Apple LLVM 5 tương thích. 1 [clang-503. 0. 40]]
Hết.
HVN at http. //www. familug. org/ and http. // pymi. vn
xonsh is a shell language and command prompt. Unlike other shells, xonsh is based on Python, with additional syntax added that makes calling subprocess commands, manipulating the environment, and dealing with the file system easy. The xonsh command prompt gives users interactive access to the xonsh language
While all Python code is also xonsh, not all Bash code can be used in xonsh. That would defeat the purpose, and Python is better anyway. Still, xonsh is Bash-wards compatible in the ways that matter, such as for running commands, reading in the Bash environment, and utilizing Bash tab completion
The purpose of this tutorial is to teach you xonsh. There are many excellent guides out there for learning Python, and this will not join their ranks. Similarly, you’d probably get the most out of this tutorial if you have already used a command prompt or interactive interpreter
Let’s dive in
Starting xonsh#
Assuming you have successfully installed xonsh [see http. //xon. sh], you can start up the xonsh interpreter via the
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL6 command. Suppose you are in a lesser terminal
$ xonsh snail@home ~ $
Now we are in a xonsh shell. Our username happens to be
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL7, our hostname happens to be
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL8, and we are in our home directory [
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL9]. Alternatively, you can setup your terminal emulator [xterm, gnome-terminal, etc] to run xonsh automatically when it starts up. This is recommended
Basics#
The xonsh language is based on Python, and the xonsh shell uses Python to interpret any input it receives. This makes simple things, like arithmetic, simple
>>> 1 + 1 2
Note
From here on we’ll be using
>>> 'HOME' in ${...} True0 to prefix [or prompt] any xonsh input. This follows the Python convention and helps trick syntax highlighting, though
>>> 'HOME' in ${...} True1 is more traditional for shells
Since this is just Python, we are able to import modules, print values, and use other built-in Python functionality
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
We can also create and use literal data types, such as ints, floats, lists, sets, and dictionaries. Everything that you are used to if you already know Python is there
>>> d = {'xonsh': True} >>> d.get['bash', False] False
The xonsh shell also supports multi-line input for more advanced flow control. The multi-line mode is automatically entered whenever the first line of input is not syntactically valid on its own. Multi-line mode is then exited when enter [or return] is pressed when the cursor is in the first column
$ xonsh snail@home ~ $0
Flow control, of course, includes loops
$ xonsh snail@home ~ $1
We can also define and call functions and classes. I’ll mostly spare you the details, but this is pretty cool
$ xonsh snail@home ~ $2
For easier indentation, Shift+Tab will enter 4 spaces. And that about wraps it up for the basics section. It is just like Python
Environment Variables#
Environment variables are written as
>>> 'HOME' in ${...} True1 followed by a name. For example,
>>> 'HOME' in ${...} True3,
>>> 'HOME' in ${...} True4, and
>>> 'HOME' in ${...} True5
$ xonsh snail@home ~ $7
You can set [and export] environment variables like you would set any other variable in Python. The same is true for deleting them too
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL
Very nice
Note
To update
>>> 'HOME' in ${...} True6 when the xonsh environment changes set $UPDATE_OS_ENVIRON to
>>> 'HOME' in ${...} True7.
The Environment Itself >>> 'HOME' in ${...}
True
8#
All environment variables live in the built-in
>>> 'HOME' in ${...} True8 [aka
>>> 1 + 1 200] mapping. You can access this mapping directly, but in most situations, you shouldn’t need to
If you want for example to check if an environment variable is present in your current session [say, in your awesome new
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL6 script] you can use the membership operator
>>> 'HOME' in ${...} True
To get information about a specific environment variable you can use the
>>> 1 + 1 202 method
>>> 1 + 1 20
One helpful method on the
>>> 'HOME' in ${...} True8 is
>>> 1 + 1 204. It can be used to temporarily set an environment variable
>>> 1 + 1 21
Environment Lookup with >>> 1 + 1
2
05#
The
>>> 1 + 1 206 is great as long as you know the name of the environment variable you want to look up. But what if you want to construct the name programmatically, or read it from another variable? Enter the
>>> 1 + 1 207 operator
Warning
In Bash,
>>> 1 + 1 206 and
>>> 1 + 1 209 are syntactically equivalent. In xonsh, they have separate meanings
We can place any valid Python expression inside of the curly braces in
>>> 1 + 1 205. This result of this expression will then be used to look up a value in the environment. Here are a couple of examples in action
>>> 1 + 1 22
Not bad, xonsh, not bad
Environment Types#
Like other variables in Python, environment variables have a type. Sometimes this type is imposed based on the variable name. The current rules are pretty simple
>>> 1 + 1 2
11. bất kỳ biến nào có tên kết thúc bằng PATH là danh sách các chuỗi>>> 1 + 1 2
12. bất kỳ biến nào có tên kết thúc bằng DIRS là danh sách các chuỗi
Hơn nữa, một số biến môi trường được xác định trước được liệt kê ở đây có kiểu tĩnh. Ví dụ: *
>>> 1 + 1 213. là một số nguyên và *
>>> 1 + 1 214. là một phép toán
xonsh sẽ tự động chuyển đổi qua lại thành các biểu diễn môi trường chưa được nhập [chỉ chuỗi] khi cần [chủ yếu bằng các lệnh quy trình con]. Khi ở xonsh, bạn sẽ luôn có phiên bản đã nhập
Các biến không khớp với các quy tắc trên được chuyển đổi thành chuỗi bằng cách sử dụng
>>> 1 + 1 215, ngoại trừ chúng là
>>> 1 + 1 216. Trong trường hợp này, chuỗi rỗng được sử dụng
Dưới đây là một vài ví dụ về PATH
>>> 1 + 1 23
Cũng lưu ý rằng bất kỳ đối tượng Python nào cũng có thể đi vào môi trường. Đôi khi sẽ hữu ích khi có các loại phức tạp hơn, chẳng hạn như hàm, trong môi trường. Có một số biến môi trường mà xonsh coi là đặc biệt. Chúng có thể được nhìn thấy trên trang Biến môi trường
Note
Trong chế độ quy trình con, việc tham chiếu một biến môi trường không xác định sẽ tạo ra một chuỗi rỗng. Tuy nhiên, trong chế độ Python, một
>>> 1 + 1 217 sẽ được nâng lên nếu biến không tồn tại trong môi trường
Lệnh chạy #
Là một trình bao, xonsh có nghĩa là làm cho các lệnh chạy trở nên dễ dàng và thú vị. Chạy các lệnh quy trình con sẽ hoạt động như trong bất kỳ trình bao nào khác
>>> 1 + 1 24
Điều này sẽ cảm thấy rất tự nhiên
Python-mode vs Subprocess-mode#
It is sometimes helpful to make the distinction between lines that operate in pure Python mode and lines that use shell-specific syntax, edit the execution environment, and run commands. Unfortunately, it is not always clear from the syntax alone what mode is desired. This ambiguity stems from most command line utilities looking a lot like Python operators
Take the case of
>>> 1 + 1 218. This is valid Python code, though it could have also been written as
>>> 1 + 1 219 or
>>> 1 + 1 220. So how does xonsh know that
>>> 1 + 1 218 is meant to be run in subprocess-mode?
For any given line that only contains an expression statement [expr-stmt, see the Python AST docs for more information], if all the names cannot be found as current variables xonsh will try to parse the line as a subprocess command instead. In the above, if
>>> 1 + 1 222 and
>>> 1 + 1 223 are not variables, then subprocess mode will be attempted. If parsing in subprocess mode fails, then the line is left in Python-mode
In the following example, we will list the contents of the directory with
>>> 1 + 1 218. Then we’ll make new variable names
>>> 1 + 1 222 and
>>> 1 + 1 223 and then subtract them. Finally, we will delete
>>> 1 + 1 222 and
>>> 1 + 1 223 and be able to list the directories again
>>> 1 + 1 25
The determination between Python- and subprocess-modes is always done in the safest possible way. If anything goes wrong, it will favor Python-mode. The determination between the two modes is done well ahead of any execution. You do not need to worry about partially executed commands - that is impossible
Note
If you would like to explicitly run a subprocess command, you can always use the formal xonsh subprocess syntax that we will see in the following sections. For example.
>>> 1 + 1 229
Quoting#
Single or double quotes can be used to remove the special meaning of certain characters or words to xonsh. If a subprocess command contains characters that collide with xonsh syntax then quotes must be used to force xonsh to not interpret them
>>> 1 + 1 26
Warning
There is no notion of an escaping character in xonsh like the backslash [\] in bash
Captured Subprocess with >>> 1 + 1
2
30 and >>> 1 + 1
2
31#
The
>>> 1 + 1 232 operator in xonsh executes a subprocess command and captures some information about that command
The
>>> 1 + 1 230 syntax captures and returns the standard output stream of the command as a Python string. This is similar to how
>>> 1 + 1 230 performs in Bash. Ví dụ,
>>> 1 + 1 27
Cú pháp
>>> 1 + 1 231 nắm bắt thêm thông tin về lệnh, như một thể hiện của lớp có tên là
>>> 1 + 1 236. Đối tượng này chứa nhiều thông tin hơn về kết quả của lệnh đã cho, bao gồm mã trả về, id tiến trình, đầu ra tiêu chuẩn và luồng lỗi tiêu chuẩn cũng như thông tin về cách đầu vào và đầu ra được chuyển hướng. Ví dụ
>>> 1 + 1 28
Đối tượng này sẽ là “trung thực” nếu mã trả về của nó là 0 và nó bằng [thông qua
>>> 1 + 1 237] với mã trả về của nó. Nó cũng băm vào mã trả về của nó. Chuyển đổi đối tượng thành chuỗi sẽ trả về đầu ra. Điều này cho phép một số loại tương tác mới thú vị với các lệnh quy trình con, chẳng hạn
>>> 1 + 1 29
Nếu bạn lặp lại đối tượng
>>> 1 + 1 236, nó sẽ tạo ra các dòng đầu ra của nó. Sử dụng điều này, bạn có thể xử lý đầu ra nhanh chóng và rõ ràng từ các lệnh. Ngoài ra, các đối tượng này hiển thị một phương thức
>>> 1 + 1 239, hoạt động giống như trình vòng lặp tích hợp sẵn nhưng tăng
>>> 1 + 1 240 nếu quy trình có mã trả về khác không
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]0
Bản thân các toán tử
>>> 1 + 1 230 và
>>> 1 + 1 231 là các biểu thức. Điều này có nghĩa là chúng ta có thể gán kết quả cho một biến hoặc thực hiện bất kỳ thao tác nào khác mà chúng ta muốn
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]1
Warning
Kiểm soát công việc không được triển khai cho các quy trình con đã bắt
Khi ở chế độ quy trình con hoặc bên trong quy trình con đã bắt, chúng ta vẫn có thể truy vấn môi trường bằng các biến
>>> 1 + 1 206 hoặc cú pháp
>>> 1 + 1 207 hoặc thêm các giá trị Python bằng toán tử
>>> 1 + 1 245
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]2
Quy trình con chưa được khai thác với >>> 1 + 1
2
46 và >>> 1 + 1
2
47#
Các quy trình con chưa được xử lý được biểu thị bằng toán tử
>>> 1 + 1 246 và
>>> 1 + 1 247. Chúng giống như các quy trình con đã bắt của
>>> 1 + 1 230 theo hầu hết mọi cách. Sự khác biệt duy nhất là thiết bị xuất chuẩn của quy trình con chuyển trực tiếp qua xonsh và tới màn hình. Giá trị trả về của
>>> 1 + 1 246 luôn là
>>> 1 + 1 216
Trong phần sau đây, chúng ta có thể thấy rằng kết quả của
>>> 1 + 1 246 được in tự động và giá trị trả về không phải là một chuỗi
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]3
Toán tử
>>> 1 + 1 247 tương tự như
>>> 1 + 1 231 ở chỗ nó trả về một đối tượng chứa thông tin về kết quả thực hiện lệnh đã cho. Tuy nhiên, các luồng lỗi tiêu chuẩn và đầu ra tiêu chuẩn của nó được hướng đến thiết bị đầu cuối và đối tượng kết quả không được hiển thị. Ví dụ
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]4
Đánh giá Python với >>> 1 + 1
2
45#
Biểu mẫu toán tử
>>> 1 + 1 257 hoạt động ở chế độ quy trình con và sẽ đánh giá mã Python tùy ý. Kết quả được thêm vào danh sách lệnh quy trình con. Nếu kết quả là một chuỗi hoặc byte, nó sẽ được thêm vào danh sách đối số. Nếu kết quả là một danh sách hoặc chuỗi không phải chuỗi khác, thì nội dung được chuyển thành chuỗi và nối vào danh sách đối số theo thứ tự. Nếu kết quả ở vị trí đầu tiên là một hàm, thì nó được coi là bí danh [xem phần Bí danh bên dưới], ngay cả khi nó không được thêm rõ ràng vào ánh xạ
>>> 1 + 1 258. Nếu không, kết quả sẽ tự động được chuyển đổi thành một chuỗi. Ví dụ,
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]5
Cú pháp này có thể được sử dụng bên trong quy trình con đã bắt hoặc chưa bị bắt và có thể được sử dụng để tạo bất kỳ mã thông báo nào trong danh sách lệnh quy trình con
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]6
Do đó,
>>> 1 + 1 245 cho phép chúng tôi tạo các lệnh phức tạp trong chế độ Python và sau đó cung cấp chúng cho một quy trình con khi cần. Ví dụ
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]7
Cú pháp
>>> 1 + 1 245 cũng có thể được sử dụng bên trong các đối số quy trình con, không chỉ như một đối số độc lập. Ví dụ
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]8
Khi được sử dụng bên trong đối số quy trình con và
>>> 1 + 1 261 đánh giá thành một lần lặp không phải chuỗi,
>>> 1 + 1 245 sẽ mở rộng thành tích bên ngoài của tất cả các giá trị đã cho
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]9
Thay thế lệnh bằng >>> 1 + 1
2
63#
Một cách sử dụng phổ biến của toán tử
>>> 1 + 1 245 và
>>> 1 + 1 230 là cho phép đầu ra của lệnh thay thế chính lệnh đó [thay thế lệnh].
>>> 1 + 1 266. Xonsh cung cấp một cú pháp ngắn cho hoạt động này.
>>> 1 + 1 267
Xem xét ví dụ sau
>>> d = {'xonsh': True} >>> d.get['bash', False] False0
Quy trình con lồng nhau #
Mặc dù tôi xin bạn đừng lạm dụng điều này, nhưng có thể lồng các toán tử quy trình con mà chúng ta đã thấy cho đến nay [
>>> 1 + 1 230,
>>> 1 + 1 246,
>>> 1 + 1 207,
>>> 1 + 1 245,
>>> 1 + 1 263]. Một trường hợp của
>>> 1 + 1 218 ở phía bên trái của đường viền phi lý được hiển thị bên dưới
>>> d = {'xonsh': True} >>> d.get['bash', False] False1
Với sức mạnh to lớn, vân vân…
Note
Việc lồng các toán tử quy trình con này bên trong
>>> 1 + 1 230 và/hoặc
>>> 1 + 1 246 hoạt động vì nội dung của các toán tử đó được thực thi trong chế độ quy trình con. Vì
>>> 1 + 1 245 và
>>> 1 + 1 207 chạy nội dung của chúng ở chế độ Python, nên không thể lồng các toán tử quy trình con khác bên trong chúng
Để hiểu cách xonsh thực thi các lệnh của quy trình con, hãy thử đặt $XONSH_TRACE_SUBPROC thành
>>> 'HOME' in ${...} True7.
>>> d = {'xonsh': True} >>> d.get['bash', False] False2
ống #
Trong chế độ quy trình con, xonsh cho phép bạn sử dụng ký tự
>>> 1 + 1 279 để kết hợp các lệnh lại với nhau như trong các trình bao khác
>>> d = {'xonsh': True} >>> d.get['bash', False] False3
Điều này chỉ khả dụng trong chế độ quy trình con vì
>>> 1 + 1 279 nếu không thì là toán tử Python. Nếu bạn không chắc đường ống là gì, có rất nhiều tài liệu tham khảo tuyệt vời ngoài kia. Bạn sẽ có thể tìm thông tin trên StackOverflow hoặc Google
Quy trình con logic And#
Chế độ quy trình con cũng cho phép bạn sử dụng toán tử
>>> 1 + 1 281 để xâu chuỗi các lệnh quy trình con lại với nhau. Giá trị thực của một lệnh được đánh giá là liệu mã trả về của nó có bằng 0 hay không [i. e.
>>> 1 + 1 282]. Giống như trong Python, nếu lệnh có giá trị là
>>> 1 + 1 283, các lệnh tiếp theo sẽ không được thực thi. Ví dụ: giả sử chúng tôi muốn liệt kê các tệp có thể tồn tại hoặc không tồn tại
>>> d = {'xonsh': True} >>> d.get['bash', False] False4
Tuy nhiên, nếu bạn liệt kê tệp không tồn tại trước, bạn sẽ chỉ thấy lỗi
>>> d = {'xonsh': True} >>> d.get['bash', False] False5
Ngoài ra, đừng lo lắng. Xonsh dịch trực tiếp toán tử
>>> 1 + 1 284 thành
>>> 1 + 1 281 cho bạn. Tất nhiên, nó ít Pythonic hơn, nhưng nó là trình bao của bạn
Quy trình con logic Hoặc #
Giống như với
>>> 1 + 1 281, bạn có thể sử dụng toán tử
>>> 1 + 1 287 để xâu chuỗi các lệnh quy trình con lại với nhau. Sự khác biệt, chắc chắn, là các lệnh tiếp theo sẽ chỉ được thực thi nếu nếu mã trả về khác không [i. e. thất bại]. Sử dụng ví dụ về tệp từ phía trên
>>> d = {'xonsh': True} >>> d.get['bash', False] False6
Điều này thậm chí không cố gắng liệt kê một tệp không tồn tại. Tuy nhiên, nếu bạn liệt kê tệp không tồn tại trước, bạn sẽ thấy lỗi và sau đó là tệp tồn tại
>>> d = {'xonsh': True} >>> d.get['bash', False] False7
không bao giờ sợ hãi. Xonsh cũng dịch trực tiếp toán tử
>>> 1 + 1 288 thành
>>> 1 + 1 287 nữa. Your muscle memory is safe now, here with us
Chuyển hướng đầu vào/đầu ra#
xonsh cũng cho phép bạn chuyển hướng
>>> 1 + 1 290,
>>> 1 + 1 291 và/hoặc
>>> 1 + 1 292. Điều này cho phép bạn kiểm soát nơi đầu ra của lệnh được gửi và nơi nó nhận đầu vào từ. xonsh có cú pháp riêng cho các hoạt động này, nhưng vì mục đích tương thích, xonsh cũng hỗ trợ cú pháp giống như Bash
Các thao tác cơ bản là “ghi vào” [
>>> 1 + 1 293], “chắp thêm vào” [
>>> 1 + 1 294] và “đọc từ” [
>>> 1 + 1 295]. Các chi tiết này có lẽ được giải thích tốt nhất thông qua các ví dụ
Note
Mục tiêu của chuyển hướng phải được phân tách bằng dấu cách, nếu không xonsh sẽ gây ra lỗi SyntaxError
Đang chuyển hướng >>> 1 + 1
2
91#
Tất cả các ví dụ sau sẽ thực thi
>>> 1 + 1 297 và ghi đầu ra thông thường của nó [thiết bị xuất chuẩn] vào một tệp có tên là
>>> 1 + 1 298, tạo nó nếu nó không tồn tại
>>> d = {'xonsh': True} >>> d.get['bash', False] False8
Chúng có thể được tạo để nối thêm vào
>>> 1 + 1 298 thay vì ghi đè nội dung của nó bằng cách thay thế
>>> 1 + 1 293 bằng
>>> 1 + 1 294 [lưu ý rằng
>>> 1 + 1 294 vẫn sẽ tạo tệp nếu nó không tồn tại]
Đang chuyển hướng >>> 1 + 1
2
92#
Tất cả các ví dụ sau sẽ thực thi
>>> 1 + 1 297 và ghi đầu ra lỗi của nó [stderr] vào một tệp có tên là
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]05, tạo nó nếu nó không tồn tại
>>> d = {'xonsh': True} >>> d.get['bash', False] False9
Như trên, thay thế
>>> 1 + 1 293 bằng
>>> 1 + 1 294 sẽ khiến đầu ra lỗi được thêm vào
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]05, thay vì thay thế nội dung của nó
Kết hợp các luồng #
Có thể gửi tất cả đầu ra của
>>> 1 + 1 297 [cả đầu ra thông thường và đầu ra lỗi] đến cùng một vị trí. Tất cả các ví dụ sau đây hoàn thành nhiệm vụ đó
$ xonsh snail@home ~ $00
Cũng có thể hợp nhất rõ ràng thiết bị xuất chuẩn vào thiết bị xuất chuẩn để các thông báo lỗi được báo cáo ở cùng một vị trí như đầu ra thông thường. Bạn có thể làm điều này với cú pháp sau
$ xonsh snail@home ~ $01
Việc hợp nhất này có thể được kết hợp với các chuyển hướng khác, bao gồm cả đường ống [xem phần về Đường ống ở trên]
$ xonsh snail@home ~ $02
Điều đáng chú ý là ví dụ cuối cùng này tương đương với.
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]10
Tương tự, bạn cũng có thể gửi thiết bị xuất chuẩn tới thiết bị xuất chuẩn với cú pháp sau
$ xonsh snail@home ~ $03
Đang chuyển hướng >>> 1 + 1
2
90#
Cũng có thể yêu cầu một lệnh đọc đầu vào của nó từ một tệp, thay vì từ
>>> 1 + 1 290. Các ví dụ sau minh họa hai cách để thực hiện điều này
$ xonsh snail@home ~ $04
Kết hợp chuyển hướng I/O#
Điều đáng chú ý là tất cả các chuyển hướng này có thể được kết hợp. Dưới đây là một ví dụ về chuyển hướng phức tạp
$ xonsh snail@home ~ $05
Dòng này sẽ chạy
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]13 với nội dung của
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]14 được đưa vào stdin và sẽ chuyển tất cả đầu ra [thiết bị xuất chuẩn và thiết bị xuất chuẩn] sang
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]15;
Công việc nền#
Thông thường, khi bạn khởi động một chương trình đang chạy trong xonsh, bản thân xonsh sẽ tạm dừng và đợi chương trình đó kết thúc. Tuy nhiên, đôi khi bạn có thể muốn tiếp tục ra lệnh cho xonsh trong khi chương trình đó đang chạy. Trong chế độ quy trình con, bạn có thể bắt đầu một quy trình “trong nền” [i. e. , theo cách cho phép tiếp tục sử dụng trình bao] bằng cách thêm dấu và [
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]18] vào cuối lệnh của bạn. Công việc nền rất hữu ích khi chạy các chương trình có giao diện người dùng đồ họa
Sau đây là một ví dụ với
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]19
$ xonsh snail@home ~ $06
Lưu ý rằng lời nhắc được trả lại cho bạn sau khi bắt đầu emacs
Thông thường các lệnh nền kết thúc khi đóng trình bao. Để cho phép lệnh nền tiếp tục chạy sau khi trình bao đã thoát, hãy sử dụng lệnh
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]20 không chấp nhận đối số [để từ chối công việc gần đây nhất] hoặc số lượng định danh công việc tùy ý
Kiểm soát công việc#
Nếu bạn bắt đầu một chương trình ở phía trước [không có dấu và], bạn có thể tạm dừng thực thi chương trình đó và quay lại dấu nhắc xonsh bằng cách nhấn Control-Z. Điều này sẽ trao quyền kiểm soát thiết bị đầu cuối trở lại xonsh và sẽ giữ cho chương trình tạm dừng ở chế độ nền
Note
Tạm ngưng các tiến trình qua Control-Z chưa được hỗ trợ khi chạy trên Windows
Để bỏ tạm dừng chương trình và đưa nó trở lại nền trước, bạn có thể sử dụng lệnh
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]21. Để bỏ tạm dừng chương trình để chương trình tiếp tục ở chế độ nền [cho phép bạn tiếp tục truy cập vào dấu nhắc xonsh], bạn có thể sử dụng lệnh
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]22
Bạn có thể nhận danh sách tất cả các công việc hiện đang chạy bằng lệnh
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]23
Each job has a unique identifier [starting with 1 and counting upward]. Theo mặc định, các lệnh
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]21 và
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]22 hoạt động trên công việc được bắt đầu gần đây nhất. Bạn có thể đưa các công việc cũ hơn lên nền trước hoặc nền sau bằng cách chỉ định ID thích hợp; . Ngoài ra, chỉ định “+” cho công việc gần đây nhất và “-” cho công việc gần đây thứ hai
Chuỗi ký tự trong chế độ quy trình con #
Các chuỗi có thể được sử dụng để thoát các ký tự đặc biệt trong chế độ quy trình con. Nội dung của chuỗi được chuyển trực tiếp tới lệnh quy trình con dưới dạng một đối số. Vì vậy, bất cứ khi nào bạn nghi ngờ hoặc nếu có lỗi cú pháp xonsh do tên tệp, chỉ cần bọc phần vi phạm trong một chuỗi
Một trường hợp sử dụng phổ biến cho điều này là các tệp có dấu cách trong tên của chúng. Thực hành ghê tởm này từ chối chết. "Không vấn đề gì. ” xonsh nói, “Tôi có dây. ” Hãy xem nó đi
$ xonsh snail@home ~ $07
Theo mặc định, tên của một biến môi trường bên trong một chuỗi sẽ được thay thế bằng nội dung của biến đó [chỉ trong chế độ quy trình con]. Ví dụ
$ xonsh snail@home ~ $08
Bạn có thể tránh việc mở rộng này trong một lệnh cụ thể bằng cách buộc các chuỗi được đánh giá trong chế độ Python bằng cú pháp
>>> 1 + 1 245
$ xonsh snail@home ~ $09
Note
Bạn cũng có thể tắt hoàn toàn việc mở rộng biến môi trường bằng cách đặt
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]28 thành
>>> 1 + 1 283
Chuỗi ký tự nâng cao #
Để kiểm soát tốt các thay thế biến môi trường [envvar], thay thế dấu ngoặc nhọn và thoát dấu gạch chéo ngược, có danh sách mở rộng các chữ cái
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
30 - chuỗi thông thường. dấu gạch chéo ngược thoát. Thay thế Envvar trong chế độ quy trình con>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
31 - chuỗi thô. không sửa đổi>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
32 - chuỗi được định dạng. thay thế cú đúp, thoát dấu gạch chéo ngược. Thay thế Envvar trong chế độ quy trình con>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
33 - chuỗi định dạng thô. thay thế cú đúp>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
34 - chuỗi đường dẫn. thoát dấu gạch chéo ngược, thay thế envvar, trả về Đường dẫn>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
35 - chuỗi Đường dẫn thô. thay thế envvar, trả về Đường dẫn>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
36 - chuỗi Đường dẫn được định dạng. thoát dấu gạch chéo ngược, thay thế dấu ngoặc nhọn và envvar, trả về Đường dẫn
Để hoàn thành việc hiểu, hãy đặt biến môi trường
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]37 thành
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]38 và biến cục bộ
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]39 thành
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]40 và tạo một bảng cho biết cách thay đổi chuỗi theo nghĩa đen trong Python- và chế độ quy trình con
Chuỗi chữ
Là đối tượng trăn
print[]
echo
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]41
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]42
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]43
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]44
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]45
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]46
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]47
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]47
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]49
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]50
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]51
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]52
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]53
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]54
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]55
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]55
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]57
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]58
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]44
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]44
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]61
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]62
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]63
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]63
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]65
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]66
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]52
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]52
Tên tệp Globing với >>> import sys
>>> print[sys.version]
3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37]
[GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
69#
Tên tệp toàn cầu với ký tự
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]69 cũng được cho phép trong chế độ quy trình con. Điều này chỉ đơn giản là sử dụng mô-đun toàn cầu dưới vỏ bọc của Python. Xem ở đó để biết thêm chi tiết. Ví dụ, hãy bắt đầu với một loạt xonsh đáng yêu
$ xonsh snail@home ~ $10
Điều này không khả dụng trong chế độ Python vì phép nhân khá quan trọng
Tìm kiếm đường dẫn nâng cao với Backticks#
xonsh cung cấp các cách bổ sung để tìm tên đường dẫn ngoài tính năng toàn cầu hóa thông thường, cả ở chế độ Python và chế độ quy trình con
Biểu thức chính quy Globing#
Nếu bạn đã từng cảm thấy rằng việc tạo khối bình thường có thể sử dụng thêm một số chỉ số octan, thì khối cầu regex chính là công cụ dành cho bạn. Bất kỳ chuỗi nào sử dụng dấu gạch ngược [
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]71] thay vì dấu ngoặc kép [
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]72,
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]73] được hiểu là biểu thức chính quy để khớp tên tệp với. Giống như toàn cầu hóa thông thường, một danh sách các kết quả phù hợp thành công được trả về. Ở chế độ Python, đây chỉ là danh sách các chuỗi. Trong chế độ quy trình con, mỗi tên tệp trở thành đối số riêng của nó đối với lệnh quy trình con
Hãy xem minh họa với một số tên tệp đơn giản
$ xonsh snail@home ~ $11
Loại tìm kiếm tương tự này được thực hiện nếu backticks được mở đầu bằng
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]74. Vậy các biểu thức sau là tương đương.
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]75 và
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]76
Khác với khớp regex, chức năng này giống như cách toàn cầu bình thường. Để biết thêm thông tin, vui lòng xem tài liệu về mô-đun
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]77 trong thư viện chuẩn Python
Warning
Trong Xonsh, ý nghĩa của backticks rất khác với ý nghĩa của chúng trong Bash. Trong Bash, backticks có nghĩa là chạy một quy trình con đã bắt [
>>> 1 + 1 230 trong Xonsh]
Hình cầu bình thường #
Trong chế độ quy trình con, toàn cầu hóa bình thường xảy ra mà không có bất kỳ cú pháp đặc biệt nào. Tuy nhiên, cú pháp backtick có một tính năng bổ sung. nó có sẵn bên trong chế độ Python cũng như chế độ quy trình con
Tương tự như toàn cầu hóa regex, có thể thực hiện toàn cầu hóa bình thường [ở chế độ Python hoặc chế độ quy trình con] bằng cách sử dụng
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]79
$ xonsh snail@home ~ $12
Chữ Glob được định dạng #
Sử dụng công cụ sửa đổi
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]80 với biểu thức chính quy hoặc hình cầu bình thường làm cho mẫu hình cầu hoạt động giống như một chuỗi ký tự được định dạng. Điều này có thể được sử dụng để thay thế các biến và các biểu thức khác vào mẫu hình cầu
$ xonsh snail@home ~ $13
Tìm kiếm đường dẫn tùy chỉnh#
Ngoài ra, nếu toàn cầu thông thường và toàn cầu biểu thức chính quy là không đủ, xonsh cho phép bạn chỉ định các chức năng tìm kiếm của riêng mình
Hàm tìm kiếm được định nghĩa là một hàm của một đối số [một chuỗi] trả về danh sách các kết quả khớp có thể có với chuỗi đó. Các chức năng tìm kiếm sau đó có thể được sử dụng với backticks với cú pháp sau.
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]81
Ví dụ sau đây cho thấy hình thức của các chức năng này
$ xonsh snail@home ~ $14
Đầu ra đường dẫn #
Sử dụng công cụ sửa đổi
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]82 với dấu ngược regex hoặc toàn cầu sẽ thay đổi kiểu trả về từ danh sách chuỗi thành danh sách đối tượng
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]83
$ xonsh snail@home ~ $15
Đường dẫn chữ #
Các đối tượng đường dẫn có thể được khởi tạo trực tiếp bằng cú pháp chuỗi p. Các đối tượng đường dẫn có thể được chuyển đổi trở lại các chuỗi đơn giản bằng str[] và chuyển đổi này được xử lý hoàn toàn trong chế độ quy trình con
$ xonsh snail@home ~ $16
Path object allows do some tricks with paths. Đánh cầu đường đi nhất định, kiểm tra và lấy thông tin
$ xonsh snail@home ~ $17
Trợ giúp & Siêu trợ giúp với >>> import sys
>>> print[sys.version]
3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37]
[GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
84 & >>> import sys
>>> print[sys.version]
3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37]
[GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]
85#
Từ IPython, xonsh cho phép bạn kiểm tra các đối tượng có dấu chấm hỏi. Một dấu hỏi duy nhất [
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]84] được sử dụng để hiển thị mức độ trợ giúp thông thường. Dấu hỏi kép [
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]85] được sử dụng để hiển thị mức độ trợ giúp cao hơn, được gọi là siêu trợ giúp. Superhelp thường bao gồm mã nguồn nếu đối tượng được viết bằng Python thuần túy
Hãy bắt đầu bằng cách xem phần trợ giúp cho kiểu int
$ xonsh snail@home ~ $18
Bây giờ, chúng ta hãy xem siêu trợ giúp cho xonsh tích hợp sẵn cho phép regex toàn cầu
$ xonsh snail@home ~ $19
Lưu ý rằng cả help và superhelp đều trả về đối tượng mà chúng đang kiểm tra. Điều này cho phép bạn xâu chuỗi trợ giúp bên trong các hoạt động khác và yêu cầu trợ giúp nhiều lần trong hệ thống phân cấp đối tượng. Chẳng hạn, hãy nhận trợ giúp đồng thời cho cả loại dict và phương thức key[] của nó
$ xonsh snail@home ~ $20
Tất nhiên, đối với các lệnh quy trình con, bạn vẫn muốn sử dụng lệnh
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]88
Biên dịch, Đánh giá và Thực thi#
Giống như Python và Bash, xonsh cung cấp các hook tích hợp để biên dịch, đánh giá và thực thi các chuỗi mã xonsh. Để ngăn chức năng này có xung đột tên nghiêm trọng với các hàm
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]89,
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]90 và
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]91 tích hợp sẵn của Python, tất cả các từ tương đương xonsh đều thêm một 'x'. Vì vậy, đối với mã xonsh, bạn muốn sử dụng các hàm
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]92,
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]93 và
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]94. Nếu bạn không biết những thứ này làm gì, có lẽ bạn không cần chúng
Bí danh #
Một tích hợp xonsh quan trọng khác là ánh xạ
>>> 1 + 1 258. Đây giống như một cuốn từ điển ảnh hưởng đến cách các lệnh của quy trình con được chạy. Nếu bạn đã quen thuộc với Bash
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]96 tích hợp sẵn, điều này cũng tương tự. Khớp lệnh bí danh chỉ xảy ra đối với phần tử đầu tiên của lệnh quy trình con
Các khóa của
>>> 1 + 1 258 là các chuỗi hoạt động như các lệnh trong chế độ quy trình con. Các giá trị là danh sách các chuỗi, trong đó phần tử đầu tiên là lệnh và phần còn lại là các đối số
$ xonsh snail@home ~ $21
Bạn cũng có thể đặt giá trị thành một chuỗi. Nếu chuỗi là một biểu thức xonsh, nó sẽ tự động được chuyển đổi thành một danh sách bằng phương thức xonsh’s
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]98. Ví dụ: phần sau tạo một số bí danh cho phần mềm kiểm soát phiên bản
>>> import sys >>> print[sys.version] 3.4.2 |Continuum Analytics, Inc.| [default, Oct 21 2014, 17:16:37] [GCC 4.4.7 20120313 [Red Hat 4.4.7-1]]99. Cả hai kiểu [danh sách chuỗi và chuỗi đơn] đều được hiển thị
$ xonsh snail@home ~ $22
Nếu bạn chạy
>>> d = {'xonsh': True} >>> d.get['bash', False] False00 với các bí danh trên có hiệu lực, lệnh sẽ giảm xuống
>>> d = {'xonsh': True} >>> d.get['bash', False] False01 trước khi được thực thi
Nếu chuỗi đại diện cho một khối mã xonsh, bí danh sẽ được đăng ký là
>>> d = {'xonsh': True} >>> d.get['bash', False] False02, đây là bí danh có thể gọi được. Khối mã này sau đó sẽ được thực thi bất cứ khi nào bí danh được chạy. Các đối số có sẵn trong danh sách
>>> d = {'xonsh': True} >>> d.get['bash', False] False03 hoặc theo chỉ mục trong biến môi trường
>>> d = {'xonsh': True} >>> d.get['bash', False] False04
$ xonsh snail@home ~ $23
Note
Để thêm nhiều bí danh, có toán tử hợp nhất.
>>> d = {'xonsh': True} >>> d.get['bash', False] False05
Bí danh có thể gọi #
Cuối cùng, nếu một giá trị bí danh là một hàm [hoặc có thể gọi khác], thì hàm này được gọi thay vì chuyển đến lệnh quy trình con. Các chức năng như vậy có thể có một trong các chữ ký sau
$ xonsh snail@home ~ $24
Thêm, sửa đổi và xóa bí danh#
Chúng ta có thể tự động thay đổi các bí danh hiện tại đơn giản bằng cách sửa đổi ánh xạ tích hợp. Đây là một ví dụ sử dụng một giá trị chức năng
$ xonsh snail@home ~ $25
Để xác định lại bí danh, chỉ cần gán một chức năng mới, ở đây sử dụng lambda python với các đối số từ khóa
$ xonsh snail@home ~ $26
Xóa bí danh cũng dễ như xóa khóa khỏi từ điển bí danh
$ xonsh snail@home ~ $27
Note
Các hàm bí danh thường được xác định bằng dấu gạch dưới ở đầu. Mặt khác, chúng có thể ẩn bí danh, vì các biến Python được ưu tiên hơn bí danh khi xonsh thực thi các lệnh
Bí danh ẩn danh #
As mentioned above, it is also possible to treat functions outside this mapping as aliases, by wrapping them in
>>> 1 + 1 245. Ví dụ
$ xonsh snail@home ~ $28
Bí danh không thể đọc được #
Thông thường, các lệnh bí danh có thể gọi được sẽ được chạy trong một chuỗi riêng biệt để chúng có thể chạy trong nền. Tuy nhiên, một số bí danh có thể cần được thực thi trên luồng mà chúng được gọi từ. Điều này chủ yếu hữu ích cho trình gỡ lỗi và trình lược tả. Để tạo bí danh chạy ở nền trước, hãy trang trí chức năng của nó bằng trình trang trí
>>> d = {'xonsh': True} >>> d.get['bash', False] False07
$ xonsh snail@home ~ $29
Bí danh không thể lấy được #
Ngoài ra, các bí danh có thể gọi theo mặc định sẽ được thực thi sao cho đầu ra của chúng được ghi lại [giống như hầu hết các lệnh trong xonsh không vào chế độ thay thế]. Tuy nhiên, một số bí danh có thể muốn tự chạy các lệnh ở chế độ thay thế. Do đó, bí danh có thể gọi được không thể bị bắt nếu không có hậu quả nghiêm trọng [tm]. Để ngăn chặn điều này, bạn có thể khai báo một alias có thể gọi được là uncapturable. Điều này chủ yếu hữu ích cho các bí danh sau đó mở trình soạn thảo văn bản, máy nhắn tin hoặc tương tự. Để làm cho một bí danh không thể bị bắt, hãy trang trí chức năng của nó bằng trình trang trí
>>> d = {'xonsh': True} >>> d.get['bash', False] False08. Điều này có lẽ được sử dụng tốt nhất cùng với trình trang trí
>>> d = {'xonsh': True} >>> d.get['bash', False] False09. Ví dụ
$ xonsh snail@home ~ $70
Lưu ý rằng cần phải có
>>> 1 + 1 245 để chuyển danh sách python
>>> d = {'xonsh': True} >>> d.get['bash', False] False11 cho lệnh quy trình con
Bí danh là một cách mạnh mẽ mà xonsh cho phép bạn tương tác liền mạch với Python và quy trình con
Warning
Nếu biến môi trường
>>> d = {'xonsh': True} >>> d.get['bash', False] False12 là Sai [mặc định], thì các bí danh Shell nước ngoài cố ghi đè lên các bí danh xonsh sẽ bị bỏ qua. Việc thiết lập biến môi trường này phải diễn ra bên ngoài nếu xonsh, i. e. trong quá trình bắt đầu xonsh
Lên, Xuống, Tab #
Lịch sử tìm kiếm các phím lên và xuống khớp với nhau từ đầu dòng, giống như chúng làm trong trình bao IPython
Hoàn thành tab cũng có mặt. Theo mặc định, trong chế độ Python, bạn có thể hoàn thành dựa trên tên biến trong nội trang, toàn cầu và cục bộ hiện tại, cũng như từ khóa ngôn ngữ xonsh & toán tử, tệp & thư mục và tên biến môi trường. Trong chế độ quy trình con, bạn cũng hoàn thành tên của các tệp thực thi trên
>>> 'HOME' in ${...} True5, khóa bí danh và hoàn thành đầy đủ Bash cho chính các lệnh đó
xonsh cũng cung cấp một phương tiện sửa đổi hành vi của trình hoàn thành tab. Chi tiết hơn có sẵn trên trang Hoàn thành tab
Tùy chỉnh Lời nhắc#
Tùy chỉnh lời nhắc bằng cách sửa đổi
>>> d = {'xonsh': True} >>> d.get['bash', False] False14,
>>> d = {'xonsh': True} >>> d.get['bash', False] False15 hoặc
>>> d = {'xonsh': True} >>> d.get['bash', False] False16 có lẽ là lý do phổ biến nhất để thay đổi biến môi trường
Note
Lưu ý rằng biến
>>> d = {'xonsh': True} >>> d.get['bash', False] False14 sẽ không bao giờ được kế thừa từ quy trình mẹ [bất kể quy trình mẹ đó là trình bao nước ngoài hay phiên bản của xonsh]
Biến
>>> d = {'xonsh': True} >>> d.get['bash', False] False14 có thể là một chuỗi hoặc có thể là một hàm [không có đối số] trả về một chuỗi. Kết quả có thể chứa các đối số từ khóa, sẽ được thay thế tự động
$ xonsh snail@home ~ $71
- làm. chuyển đổi mẫu này thành mẫu jinja và tạo các nội dung này một cách linh hoạt và đề cập về $PROMPT_FIELDS
Theo mặc định, các biến sau đây có sẵn để sử dụng
– loại bỏ các biến phụ này và đặt thuộc tính trên chính trường đó
>>> d = {'xonsh': True} >>> d.get['bash', False] False19. Tên người dùng của người dùng hiện tại >>> d = {'xonsh': True} >>> d.get['bash', False] False20. Tên máy chủ >>> d = {'xonsh': True} >>> d.get['bash', False] False21. Thư mục làm việc hiện tại, bạn có thể sử dụng>>> d = {'xonsh': True} >>> d.get['bash', False] False22 để đặt chiều rộng tối đa cho biến này và>>> d = {'xonsh': True} >>> d.get['bash', False] False23 để đặt ký tự được sử dụng trong đường dẫn rút gọn >>> d = {'xonsh': True} >>> d.get['bash', False] False24. Một dạng rút gọn của thư mục làm việc hiện tại; . g. ,>>> d = {'xonsh': True} >>> d.get['bash', False] False25 trở thành>>> d = {'xonsh': True} >>> d.get['bash', False] False26 >>> d = {'xonsh': True} >>> d.get['bash', False] False27. Dirname của thư mục làm việc hiện tại, e. g.>>> d = {'xonsh': True} >>> d.get['bash', False] False28 trong>>> d = {'xonsh': True} >>> d.get['bash', False] False25 >>> d = {'xonsh': True} >>> d.get['bash', False] False30. Tên cơ sở của thư mục làm việc hiện tại, e. g.>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL6 trong>>> d = {'xonsh': True} >>> d.get['bash', False] False25 >>> d = {'xonsh': True} >>> d.get['bash', False] False33. Tên của môi trường ảo đang hoạt động, nếu có. Kết xuất của biến này bị ảnh hưởng bởi các biến môi trường>>> d = {'xonsh': True} >>> d.get['bash', False] False34 và>>> d = {'xonsh': True} >>> d.get['bash', False] False35; >>> d = {'xonsh': True} >>> d.get['bash', False] False36. The prefix characters if there is an active virtual environment, defaults to>>> d = {'xonsh': True} >>> d.get['bash', False] False37 >>> d = {'xonsh': True} >>> d.get['bash', False] False38. Các ký tự hậu tố nếu có một môi trường ảo đang hoạt động, mặc định là>>> d = {'xonsh': True} >>> d.get['bash', False] False39 >>> d = {'xonsh': True} >>> d.get['bash', False] False40. Tên của nhánh git hiện tại, nếu có >>> d = {'xonsh': True} >>> d.get['bash', False] False41.>>> d = {'xonsh': True} >>> d.get['bash', False] False42 nếu nhánh git hiện tại sạch, nếu không thì>>> d = {'xonsh': True} >>> d.get['bash', False] False43. Đây là màu vàng nếu không xác định được màu nhánh >>> d = {'xonsh': True} >>> d.get['bash', False] False44. Giống như,>>> d = {'xonsh': True} >>> d.get['bash', False] False45, nhưng thay vào đó đặt màu nền >>> d = {'xonsh': True} >>> d.get['bash', False] False46.>>> d = {'xonsh': True} >>> d.get['bash', False] False47 nếu người dùng có quyền root/admin>>> 'HOME' in ${...} True1 ngược lại >>> d = {'xonsh': True} >>> d.get['bash', False] False49. Tên của lệnh hiện đang chạy ở nền trước, nếu có >>> d = {'xonsh': True} >>> d.get['bash', False] False50. Sự cố trình tự thoát VTE để mở tab mới trong thư mục làm việc hiện tại trên một số thiết bị đầu cuối linux. Điều này thường không cần thiết >>> d = {'xonsh': True} >>> d.get['bash', False] False51. Trạng thái git thông tin, như>>> d = {'xonsh': True} >>> d.get['bash', False] False52, bạn có thể tham khảo>>> d = {'xonsh': True} >>> d.get['bash', False] False53 để biết các tùy chọn tùy chỉnh >>> d = {'xonsh': True} >>> d.get['bash', False] False54. Giờ địa phương hiện tại được đưa ra bởi>>> d = {'xonsh': True} >>> d.get['bash', False] False55. Điều này được định dạng với chuỗi định dạng thời gian được tìm thấy trong>>> d = {'xonsh': True} >>> d.get['bash', False] False56 >>> d = {'xonsh': True} >>> d.get['bash', False] False56. Chuỗi định dạng thời gian, mặc định là>>> d = {'xonsh': True} >>> d.get['bash', False] False58 >>> d = {'xonsh': True} >>> d.get['bash', False] False59. Mã trả về của lệnh ban hành cuối cùng >>> d = {'xonsh': True} >>> d.get['bash', False] False60. Mã trả về của lệnh ban hành cuối cùng nếu nó khác 0, nếu không thì>>> 1 + 1 216. Điều này hữu ích cho việc chỉ in mã trong trường hợp có lỗi
Note
Xem phần bên dưới trên
>>> d = {'xonsh': True} >>> d.get['bash', False] False62 để biết thêm thông tin về việc thay đổi
xonsh tuân theo biến môi trường
>>> d = {'xonsh': True} >>> d.get['bash', False] False35 như được định nghĩa bởi virtualenv. Nếu biến này là thật, xonsh sẽ luôn thay thế một chuỗi rỗng cho
>>> d = {'xonsh': True} >>> d.get['bash', False] False64. Lưu ý rằng không giống như các shell khác,
>>> d = {'xonsh': True} >>> d.get['bash', False] False35 có hiệu lực ngay sau khi được đặt—không cần kích hoạt lại môi trường
xonsh cũng cho phép ghi đè rõ ràng kết xuất của
>>> d = {'xonsh': True} >>> d.get['bash', False] False64, thông qua biến môi trường
>>> d = {'xonsh': True} >>> d.get['bash', False] False34. Nếu biến này được xác định và có bất kỳ giá trị nào khác ngoài
>>> 1 + 1 216, thì
>>> d = {'xonsh': True} >>> d.get['bash', False] False64 sẽ luôn hiển thị là
>>> d = {'xonsh': True} >>> d.get['bash', False] False70 khi một môi trường được kích hoạt. Nó sẽ vẫn hiển thị dưới dạng một chuỗi trống khi không có môi trường nào đang hoạt động.
>>> d = {'xonsh': True} >>> d.get['bash', False] False34 bị ghi đè bởi
>>> d = {'xonsh': True} >>> d.get['bash', False] False35
Ví dụ
$ xonsh snail@home ~ $72
Bạn cũng có thể tô màu lời nhắc của mình [hoặc in các thông báo có màu bằng chức năng
>>> d = {'xonsh': True} >>> d.get['bash', False] False73] một cách dễ dàng bằng cách chèn các từ khóa như
>>> d = {'xonsh': True} >>> d.get['bash', False] False74 hoặc
>>> d = {'xonsh': True} >>> d.get['bash', False] False75. Màu sắc có dạng như hình bên dưới
>>> d = {'xonsh': True} >>> d.get['bash', False] False
76. Đặt lại mọi kiểu dáng đã sử dụng trước đó>>> d = {'xonsh': True} >>> d.get['bash', False] False
77. Chèn mã màu cho các màu cơ bản sau, có dạng thông thường [tối] và đậm [sáng]>>> d = {'xonsh': True} >>> d.get['bash', False] False
78 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
79>>> d = {'xonsh': True} >>> d.get['bash', False] False
80 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
81>>> d = {'xonsh': True} >>> d.get['bash', False] False
82 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
83>>> d = {'xonsh': True} >>> d.get['bash', False] False
84 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
85>>> d = {'xonsh': True} >>> d.get['bash', False] False
86 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
87>>> d = {'xonsh': True} >>> d.get['bash', False] False
88 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
89>>> d = {'xonsh': True} >>> d.get['bash', False] False
90 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
91>>> d = {'xonsh': True} >>> d.get['bash', False] False
92 hoặc>>> d = {'xonsh': True} >>> d.get['bash', False] False
93
>>> d = {'xonsh': True} >>> d.get['bash', False] False
94. Mã màu cho màu nền trước mặc định của thiết bị đầu cuối>>> d = {'xonsh': True} >>> d.get['bash', False] False
95. Một>>> d = {'xonsh': True} >>> d.get['bash', False] False
47 trước mã hex len-3 hoặc len-6 sẽ sử dụng màu hex đó hoặc giá trị gần đúng nhất được vỏ và thiết bị đầu cuối hỗ trợ. Ví dụ:>>> d = {'xonsh': True} >>> d.get['bash', False] False
97 và>>> d = {'xonsh': True} >>> d.get['bash', False] False
98 đều hợp lệ>>> d = {'xonsh': True} >>> d.get['bash', False] False
99 có thể được thêm vào đầu tên màu hoặc màu hex để đặt màu nền. For example,$ xonsh snail@home ~ $
000 and$ xonsh snail@home ~ $
001 can both be used$ xonsh snail@home ~ $
002 hoặc$ xonsh snail@home ~ $
003 là các phím tắt để đặt màu nền hex. Vì vậy, bạn có thể đặt$ xonsh snail@home ~ $
004 hoặc phiên bản chữ hoa$ xonsh snail@home ~ $
005 là công cụ sửa đổi tiền tố làm tăng cường độ của phông chữ. Nó có thể được sử dụng với bất kỳ màu nền trước nào. Ví dụ:$ xonsh snail@home ~ $
006 và$ xonsh snail@home ~ $
007 đều được$ xonsh snail@home ~ $
008 là công cụ sửa đổi tiền tố làm giảm cường độ của phông chữ. Ví dụ,$ xonsh snail@home ~ $
009$ xonsh snail@home ~ $
010 là công cụ sửa đổi tiền tố chuyển sang phông chữ nghiêng. Ví dụ,$ xonsh snail@home ~ $
011$ xonsh snail@home ~ $
012 là một từ hạn định tiền tố cũng có thể được sử dụng với bất kỳ màu nền trước nào. Ví dụ,$ xonsh snail@home ~ $
013$ xonsh snail@home ~ $
014 là một công cụ sửa đổi tiền tố làm cho văn bản nhấp nháy chậm. Ví dụ,$ xonsh snail@home ~ $
015$ xonsh snail@home ~ $
016 là một công cụ sửa đổi tiền tố làm cho văn bản nhấp nháy nhanh chóng. Ví dụ,$ xonsh snail@home ~ $
017$ xonsh snail@home ~ $
018 là công cụ sửa đổi tiền tố hoán đổi màu nền trước và màu nền. Ví dụ:$ xonsh snail@home ~ $
019$ xonsh snail@home ~ $
020 là công cụ sửa đổi tiền tố ẩn văn bản. Điều này có thể không được hỗ trợ rộng rãi. Ví dụ:$ xonsh snail@home ~ $
021$ xonsh snail@home ~ $
022 là một công cụ sửa đổi tiền tố vẽ một dòng qua văn bản. Ví dụ:$ xonsh snail@home ~ $
023$ xonsh snail@home ~ $
024 là công cụ sửa đổi tiền tố để loại bỏ cường độ của phông chữ. Nó có thể được sử dụng với bất kỳ màu nền trước nào. Ví dụ:$ xonsh snail@home ~ $
025 và$ xonsh snail@home ~ $
026 đều được$ xonsh snail@home ~ $
027 là công cụ sửa đổi tiền tố để loại bỏ độ mờ của phông chữ. Ví dụ:$ xonsh snail@home ~ $
028$ xonsh snail@home ~ $
029 là công cụ sửa đổi tiền tố loại bỏ phông chữ in nghiêng. Ví dụ:$ xonsh snail@home ~ $
030$ xonsh snail@home ~ $
031 là bộ định danh tiền tố để xóa phần gạch chân của màu nền trước. Ví dụ,$ xonsh snail@home ~ $
032$ xonsh snail@home ~ $
033 là công cụ sửa đổi tiền tố loại bỏ văn bản nhấp nháy, cho dù đó là chậm hay nhanh. Ví dụ:$ xonsh snail@home ~ $
034$ xonsh snail@home ~ $
035 là công cụ sửa đổi tiền tố khôi phục màu nền trước và nền sau. Ví dụ:$ xonsh snail@home ~ $
036$ xonsh snail@home ~ $
037 là công cụ sửa đổi tiền tố hiển thị văn bản. Điều này có thể không được hỗ trợ rộng rãi. Ví dụ:$ xonsh snail@home ~ $
038$ xonsh snail@home ~ $
039 là công cụ sửa đổi tiền tố loại bỏ các dòng trong văn bản. Ví dụ:$ xonsh snail@home ~ $
040Hoặc bất kỳ tổ hợp sửa đổi nào khác, chẳng hạn như
$ xonsh snail@home ~ $
041, đây là màu kim loại nhất mà bạn có thể sử dụng
Bạn có thể sử dụng các biến bổ sung ngoài những biến này bằng cách thêm chúng vào biến môi trường
>>> d = {'xonsh': True} >>> d.get['bash', False] False62. Các giá trị trong từ điển này phải là các chuỗi [sẽ được chèn vào nguyên văn lời nhắc] hoặc các hàm đối số [sẽ được gọi mỗi khi lời nhắc được tạo và kết quả của các cuộc gọi đó sẽ được chèn vào lời nhắc]. Ví dụ
$ xonsh snail@home ~ $73
Các biến và hàm môi trường cũng có sẵn với tiền tố
>>> 'HOME' in ${...} True1. Ví dụ
$ xonsh snail@home ~ $74
Lưu ý rằng một số mục của
$ xonsh snail@home ~ $044 không phải lúc nào cũng áp dụng được, ví dụ:
>>> d = {'xonsh': True} >>> d.get['bash', False] False40 trả về
>>> 1 + 1 216 nếu thư mục hiện tại không có trong kho lưu trữ.
>>> 1 + 1 216 sẽ được hiểu là một chuỗi rỗng
Nhưng hãy xem xét một vấn đề
$ xonsh snail@home ~ $75
Chúng tôi muốn nhánh được hiển thị trong dấu ngoặc vuông, nhưng chúng tôi cũng không muốn dấu ngoặc [và khoảng trắng thừa] được hiển thị khi không có nhánh. Giải pháp là thêm một chuỗi định dạng lồng nhau [được phân tách bằng dấu hai chấm] sẽ chỉ được gọi nếu giá trị không phải là
>>> 1 + 1 216
$ xonsh snail@home ~ $76
Dấu ngoặc nhọn hoạt động như một trình giữ chỗ, vì phần bổ sung là một chuỗi định dạng thông thường. Những gì chúng ta đang làm ở đây tương đương với biểu thức này
$ xonsh snail@home ~ $77
Executing Commands and Scripts#
Khi bắt đầu với cờ
$ xonsh snail@home ~ $049 và một lệnh, xonsh sẽ thực hiện lệnh đó và thoát ra, thay vì vào vòng lặp lệnh
Note
Khi thực hiện các lệnh theo cách này các tệp điều khiển chạy [“xonshrc”] không được áp dụng.
$ xonsh snail@home ~ $78
Các tập lệnh dài hơn có thể được chạy bằng cách chỉ định tên tệp chứa tập lệnh hoặc bằng cách cung cấp chúng cho xonsh qua stdin. Ví dụ: xem xét tập lệnh sau, được lưu trữ trong
$ xonsh snail@home ~ $050
$ xonsh snail@home ~ $79
Tập lệnh này có thể được chạy bằng cách chuyển nội dung của nó sang xonsh
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL0
hoặc bằng cách gọi xonsh với tên tệp của nó làm đối số
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL1
tập lệnh xonsh cũng có thể chấp nhận các đối số và tham số dòng lệnh. Các đối số này được cung cấp cho tập lệnh theo hai cách khác nhau
Ở cả hai chế độ, dưới dạng các biến riêng lẻ
$ xonsh snail@home ~ $
051 [e. g. ,$ xonsh snail@home ~ $
052]Chỉ ở chế độ Python, dưới dạng danh sách
$ xonsh snail@home ~ $
053
Ví dụ: hãy xem xét một biến thể nhỏ của tập lệnh ví dụ ở trên hoạt động trên một đối số đã cho, thay vì trên chuỗi
$ xonsh snail@home ~ $054 [chú ý cách sử dụng
$ xonsh snail@home ~ $053 và
$ xonsh snail@home ~ $052]
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL2
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL3
Ngoài ra, nếu tập lệnh sẽ thoát nếu một lệnh không thành công, hãy đặt biến môi trường
$ xonsh snail@home ~ $057 ở đầu tệp. Các lỗi trong chế độ Python sẽ đưa ra các ngoại lệ và do đó, điều này gần tương đương với Bash's
$ xonsh snail@home ~ $058
Hơn nữa, bạn cũng có thể chuyển đổi khả năng in các dòng mã nguồn bằng lệnh
$ xonsh snail@home ~ $059 và
$ xonsh snail@home ~ $060. Điều này gần tương đương với Bash's
$ xonsh snail@home ~ $061 hoặc Python's
$ xonsh snail@home ~ $062, nhưng bạn biết đấy, tốt hơn
Nhập Xonsh [$ xonsh
snail@home ~ $
063]#
Bạn có thể nhập các tệp nguồn xonsh có phần mở rộng tệp
$ xonsh snail@home ~ $063 bằng cú pháp Python thông thường. Giả sử bạn có một tệp có tên là
$ xonsh snail@home ~ $065, do đó, bạn có thể thực hiện một nguồn giống như Bash vào trình bao hiện tại của mình bằng cách sau
>>> $GOAL = 'Become the Lord of the Files' >>> print[$GOAL] Become the Lord of the Files >>> del $GOAL4
Đó là tất cả, mọi người #
Để rời khỏi xonsh, nhấn
$ xonsh snail@home ~ $066, gõ
$ xonsh snail@home ~ $067, gõ
$ xonsh snail@home ~ $068 hoặc gõ
$ xonsh snail@home ~ $069. Trên Windows, bạn cũng có thể gõ
$ xonsh snail@home ~ $070