Quy trình con python 2.7 ví dụ

Hàm tiện tay quy trình con. check_output rất hấp dẫn khiến người ta khó có thể từ chối sử dụng nó. To check out a command, only required.
In [1]. import subprocess as spr

In [2]. đầu ra = spr. check_output[['ls', '/etc/hosts']]

In [3]. print[output]
b'/etc/hosts\n'
Chuyện này không có gì sai cho đến khi có điều gì sai xảy ra


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]

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
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 😲

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 $GOAL
6 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 $GOAL
7, our hostname happens to be
>>> $GOAL = 'Become the Lord of the Files'
>>> print[$GOAL]
Become the Lord of the Files
>>> del $GOAL
8, and we are in our home directory [
>>> $GOAL = 'Become the Lord of the Files'
>>> print[$GOAL]
Become the Lord of the Files
>>> del $GOAL
9]. 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 ${...}
True
0 to prefix [or prompt] any xonsh input. This follows the Python convention and helps trick syntax highlighting, though
>>> 'HOME' in ${...}
True
1 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 ${...}
True
1 followed by a name. For example,
>>> 'HOME' in ${...}
True
3,
>>> 'HOME' in ${...}
True
4, and
>>> 'HOME' in ${...}
True
5

$ 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 ${...}
True
6 when the xonsh environment changes set $UPDATE_OS_ENVIRON to
>>> 'HOME' in ${...}
True
7.

The Environment Itself
>>> 'HOME' in ${...}
True
8#

All environment variables live in the built-in

>>> 'HOME' in ${...}
True
8 [aka
>>> 1 + 1
2
00] 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 $GOAL
6 script] you can use the membership operator

>>> 'HOME' in ${...}
True

To get information about a specific environment variable you can use the

>>> 1 + 1
2
02 method

>>> 1 + 1
2
0

One helpful method on the

>>> 'HOME' in ${...}
True
8 is
>>> 1 + 1
2
04. It can be used to temporarily set an environment variable

>>> 1 + 1
2
1

Environment Lookup with
>>> 1 + 1
2
05#

The

>>> 1 + 1
2
06 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
2
07 operator

Warning

In Bash,

>>> 1 + 1
2
06 and
>>> 1 + 1
2
09 are syntactically equivalent. In xonsh, they have separate meanings

We can place any valid Python expression inside of the curly braces in

>>> 1 + 1
2
05. 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
2
2

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
2
13. là một số nguyên và *
>>> 1 + 1
2
14. 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
2
15, ngoại trừ chúng là
>>> 1 + 1
2
16. 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
2
3

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
2
17 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
2
4

Đ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
2
18. This is valid Python code, though it could have also been written as
>>> 1 + 1
2
19 or
>>> 1 + 1
2
20. So how does xonsh know that
>>> 1 + 1
2
18 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
2
22 and
>>> 1 + 1
2
23 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
2
18. Then we’ll make new variable names
>>> 1 + 1
2
22 and
>>> 1 + 1
2
23 and then subtract them. Finally, we will delete
>>> 1 + 1
2
22 and
>>> 1 + 1
2
23 and be able to list the directories again

>>> 1 + 1
2
5

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
2
29

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
2
6

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
2
32 operator in xonsh executes a subprocess command and captures some information about that command

The

>>> 1 + 1
2
30 syntax captures and returns the standard output stream of the command as a Python string. This is similar to how
>>> 1 + 1
2
30 performs in Bash. Ví dụ,

>>> 1 + 1
2
7

Cú pháp

>>> 1 + 1
2
31 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
2
36. Đố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
2
8

Đố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
2
37] 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
2
9

Nếu bạn lặp lại đối tượng

>>> 1 + 1
2
36, 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
2
39, hoạt động giống như trình vòng lặp tích hợp sẵn nhưng tăng
>>> 1 + 1
2
40 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
2
30 và
>>> 1 + 1
2
31 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
2
06 hoặc cú pháp
>>> 1 + 1
2
07 hoặc thêm các giá trị Python bằng toán tử
>>> 1 + 1
2
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]]
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
2
46 và
>>> 1 + 1
2
47. Chúng giống như các quy trình con đã bắt của
>>> 1 + 1
2
30 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
2
46 luôn là
>>> 1 + 1
2
16

Trong phần sau đây, chúng ta có thể thấy rằng kết quả của

>>> 1 + 1
2
46 đượ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
2
47 tương tự như
>>> 1 + 1
2
31 ở 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
2
57 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
2
58. 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
2
45 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
2
45 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
2
61 đánh giá thành một lần lặp không phải chuỗi,
>>> 1 + 1
2
45 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
2
45 và
>>> 1 + 1
2
30 là cho phép đầu ra của lệnh thay thế chính lệnh đó [thay thế lệnh].
>>> 1 + 1
2
66. Xonsh cung cấp một cú pháp ngắn cho hoạt động này.
>>> 1 + 1
2
67

Xem xét ví dụ sau

>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
0

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
2
30,
>>> 1 + 1
2
46,
>>> 1 + 1
2
07,
>>> 1 + 1
2
45,
>>> 1 + 1
2
63]. Một trường hợp của
>>> 1 + 1
2
18 ở 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]
False
1

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
2
30 và/hoặc
>>> 1 + 1
2
46 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
2
45 và
>>> 1 + 1
2
07 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 ${...}
True
7.

>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
2

ống #

Trong chế độ quy trình con, xonsh cho phép bạn sử dụng ký tự

>>> 1 + 1
2
79 để 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]
False
3

Điều này chỉ khả dụng trong chế độ quy trình con vì

>>> 1 + 1
2
79 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
2
81 để 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
2
82]. Giống như trong Python, nếu lệnh có giá trị là
>>> 1 + 1
2
83, 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]
False
4

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]
False
5

Ngoài ra, đừng lo lắng. Xonsh dịch trực tiếp toán tử

>>> 1 + 1
2
84 thành
>>> 1 + 1
2
81 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
2
81, bạn có thể sử dụng toán tử
>>> 1 + 1
2
87 để 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]
False
6

Đ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]
False
7

không bao giờ sợ hãi. Xonsh cũng dịch trực tiếp toán tử

>>> 1 + 1
2
88 thành
>>> 1 + 1
2
87 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
2
90,
>>> 1 + 1
2
91 và/hoặc
>>> 1 + 1
2
92. Đ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
2
93], “chắp thêm vào” [
>>> 1 + 1
2
94] và “đọc từ” [
>>> 1 + 1
2
95]. 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
2
97 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
2
98, tạo nó nếu nó không tồn tại

>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
8

Chúng có thể được tạo để nối thêm vào

>>> 1 + 1
2
98 thay vì ghi đè nội dung của nó bằng cách thay thế
>>> 1 + 1
2
93 bằng
>>> 1 + 1
2
94 [lưu ý rằng
>>> 1 + 1
2
94 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
2
97 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]
False
9

Như trên, thay thế

>>> 1 + 1
2
93 bằng
>>> 1 + 1
2
94 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
2
97 [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
2
90. 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
2
45

$ 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
2
83

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
2
30 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
2
58. Đâ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
2
58 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]
False
00 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]
False
01 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]
False
02, đâ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]
False
03 hoặc theo chỉ mục trong biến môi trường
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
04

$ 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]
False
05

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
2
45. 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]
False
07

$ 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]
False
08. Đ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]
False
09. Ví dụ

$ xonsh
snail@home ~ $
70

Lưu ý rằng cần phải có

>>> 1 + 1
2
45 để chuyển danh sách python
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
11 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]
False
12 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 ${...}
True
5, 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]
False
14,
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
15 hoặc
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
16 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]
False
14 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]
False
14 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]
    False
    
    19. Tên người dùng của người dùng hiện tại

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    20. Tên máy chủ

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    21. 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]
    False
    
    22 để đặt chiều rộng tối đa cho biến này và
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    23 để đặt ký tự được sử dụng trong đường dẫn rút gọn

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    24. 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]
    False
    
    25 trở thành
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    26

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    27. Dirname của thư mục làm việc hiện tại, e. g.
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    28 trong
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    25

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    30. 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 $GOAL
    
    6 trong
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    25

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    33. 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]
    False
    
    34 và
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    35;

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    36. The prefix characters if there is an active virtual environment, defaults to
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    37

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    38. 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]
    False
    
    39

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    40. Tên của nhánh git hiện tại, nếu có

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    41.
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    42 nếu nhánh git hiện tại sạch, nếu không thì
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    43. Đâ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]
    False
    
    44. Giống như,
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    45, nhưng thay vào đó đặt màu nền

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    46.
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    47 nếu người dùng có quyền root/admin
    >>> 'HOME' in ${...}
    True
    
    1 ngược lại

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    49. 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]
    False
    
    50. 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]
    False
    
    51. Trạng thái git thông tin, như
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    52, bạn có thể tham khảo
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    53 để biết các tùy chọn tùy chỉnh

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    54. Giờ địa phương hiện tại được đưa ra bởi
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    55. Đ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]
    False
    
    56

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    56. Chuỗi định dạng thời gian, mặc định là
    >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    58

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    59. Mã trả về của lệnh ban hành cuối cùng

  • >>> d = {'xonsh': True}
    >>> d.get['bash', False]
    False
    
    60. 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
    2
    
    16. Đ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]
False
62 để 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]
False
35 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]
False
64. Lưu ý rằng không giống như các shell khác,
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
35 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]
False
64, thông qua biến môi trường
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
34. 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
2
16, thì
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
64 sẽ luôn hiển thị là
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
70 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]
False
34 bị ghi đè bởi
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
35

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]
False
73] 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]
False
74 hoặc
>>> d = {'xonsh': True}
>>> d.get['bash', False]
False
75. 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 ~ $
    
    040

  • Hoặ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]
False
62. 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 ${...}
True
1. 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]
False
40 trả về
>>> 1 + 1
2
16 nếu thư mục hiện tại không có trong kho lưu trữ.
>>> 1 + 1
2
16 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
2
16

$ 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 $GOAL
0

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 $GOAL
1

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

  1. Ở cả hai chế độ, dưới dạng các biến riêng lẻ

    $ xonsh
    snail@home ~ $
    
    051 [e. g. ,
    $ xonsh
    snail@home ~ $
    
    052]

  2. 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 $GOAL
2

>>> $GOAL = 'Become the Lord of the Files'
>>> print[$GOAL]
Become the Lord of the Files
>>> del $GOAL
3

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 $GOAL
4

Đó 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

Chủ Đề