Вступление
- && Operator (AND оператор)
- OR Оператор (||)
- Оператор AND & OR (&& и ||)
- Оператор PIPE (|)
- Оператор точка с запятой (;)
- Оператор амперсанда (&)
Теперь давайте обсудим каждый Оператор один за другим.
1. && Оператор (AND оператор)
Синтаксис использования оператора AND:
# command 1 && command 2
Оператор выполнит вторую команду только в том случае, если команда 1 успешно выполнена.
Теперь рассмотрим синтаксис выше.
Здесь команда 2 будет выполняться только в том случае, если команда 1 выполнена успешно. Например :
Здесь, как вы можете видеть ниже, первая команда успешно завершена, тогда выполняется вторая команда df -h.
$ ping -c 5 localhost && df -h PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.067 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.086 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.081 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms --- localhost ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4100ms rtt min/avg/max/mdev = 0.067/0.081/0.086/0.007 ms Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 60K 199M 1% /run/user/1000
Теперь давайте проверим оператор AND по-другому.
Здесь я не буду выполнять первую команду и посмотрю, выполняется ли вторая команда или нет.
$ ping -c 5 local && df -h ping: unknown host local
Как вы можете видеть выше, первая команда не работает, поэтому вторая команда не выполняется.
2. OR Оператор (||)
Синтаксис использования оператора OR:
# command 1 || command 2
OR полностью противоположна оператору &&.
OR выполнит вторую команду только в том случае, если первая команда провалится.
Теперь давайте приведем пример:
$ ping -c 5 local || df -h ping: unknown host local Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 60K 199M 1% /run/user/1000
Как вы можете видеть выше, вторая команда выполнена, то есть «df -h», когда первая команда не удалась.
3. Оператор AND & OR (&& и ||)
Комбинация оператора && и OR (||) довольно интересна и даст вам хороший результат, если вы используете его правильно.
Комбинация этих двух операторов, как например, if … else в программировании.
Давайте приведем пример, чтобы вы получили больше представлений по этому поводу:
$ mkdir data && echo "Directory created successfully" || echo "Directory creation failed" Directory created successfully
Как вы можете видеть выше, наша первая команда успешно выполнена, поэтому мы можем получить требуемое сообщение.
4. Оператор PIPE (|)
PIPE – это своего рода оператор, который может использоваться для отображения вывода первой команды, принимая ввод второй команды.
Например, вы хотите проверить все текущие системные процессы, используя команду ps -ef. но поскольку список процессов настолько длинный, что его нельзя охватить на одном экране.
В этом случае вы можете использовать фильтр с командой more.
$ ps -ef | more UID PID PPID C STIME TTY TIME CMD 0 1 0 0 19Oct18 ?? 28:26.69 /sbin/launchd 0 47 1 0 19Oct18 ?? 0:39.18 /usr/sbin/syslogd 0 48 1 0 19Oct18 ?? 0:18.18 /usr/libexec/UserEventAgent (System) 0 51 1 0 19Oct18 ?? 0:15.91 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld 0 52 1 0 19Oct18 ?? 0:34.08 /usr/libexec/kextd 0 53 1 0 19Oct18 ?? 4:35.44 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd 55 58 1 0 19Oct18 ?? 0:02.25 /System/Library/CoreServices/appleeventsd --server 0 59 1 0 19Oct18 ?? 11:23.76 /usr/sbin/systemstats --daemon 0 61 1 0 19Oct18 ?? 0:40.65 /usr/libexec/configd 0 62 1 0 19Oct18 ?? 6:05.79 /System/Library/CoreServices/powerd.bundle/powerd 0 63 1 0 19Oct18 ?? 1:16.99 /Library/PrivilegedHelperTools/com.80pct.FreedomHelper 0 67 1 0 19Oct18 ?? 3:01.31 /usr/libexec/logd
5. Оператор точка с запятой (;)
Оператор точка с запятой выполняет несколько команд одновременно последовательно, как упоминалось, и обеспечивает вывод без зависимости от успеха и отказа других команд, таких как && и OR (||).
Посмотрите пример ниже:
$ ping -c 5 localhost ; ifconfig ens33 ; df -h PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.063 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.086 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms --- localhost ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4091ms rtt min/avg/max/mdev = 0.063/0.082/0.091/0.011 ms ens33 Link encap:Ethernet HWaddr 00:0c:29:ff:cd:2e inet addr:192.168.43.185 Bcast:192.168.43.255 Mask:255.255.255.0 inet6 addr: 2405:204:f017:75dd:65af:f027:85c2:88eb/64 Scope:Global inet6 addr: 2405:204:f017:75dd:f076:72b8:fd36:757f/64 Scope:Global inet6 addr: fe80::b396:d285:b5b3:81c3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:146608 errors:0 dropped:0 overruns:0 frame:0 TX packets:78275 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:188124508 (188.1 MB) TX bytes:6912561 (6.9 MB) Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 60K 199M 1% /run/user/1000
6. Амперсанд Оператор (&)
Оператор Амперсанда – это своего рода оператор, который выполняет заданные команды в фоновом режиме.
Вы можете использовать этот оператор для одновременного выполнения нескольких команд.
$ ping -c 50 localhost &
Вы также можете выполнять несколько команд с помощью оператора Ampersand. См. Команду ниже.
$ ping -c 5 localhost & df -h & [1] 25962 [2] 25963 $ PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 199M 12M 187M 6% /run /dev/sda1 18G 5.3G 12G 32% / tmpfs 992M 212K 992M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 992M 0 992M 0% /sys/fs/cgroup tmpfs 199M 56K 199M 1% /run/user/1000 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.070 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.091 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.117 ms --- localhost ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4072ms rtt min/avg/max/mdev = 0.052/0.084/0.117/0.022 ms
1 comment
[…] уже написал, как тестировать свои навыки BASH, а также я описал, как запустить Linux на […]