ਬੈਸ਼ ਵਿੱਚ "2 ਅਤੇ 1" ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਸਮਝਣਾ

Bash

Bash ਵਿੱਚ stderr ਅਤੇ stdout ਨੂੰ ਜੋੜਨਾ

In the world of Bash scripting, managing error and output streams efficiently is crucial for robust script execution. One common requirement is to combine the standard error (stderr) and standard output (stdout) streams. This is often achieved using the "2>Bash ਸਕ੍ਰਿਪਟਿੰਗ ਦੀ ਦੁਨੀਆ ਵਿੱਚ, ਮਜ਼ਬੂਤ ​​​​ਸਕ੍ਰਿਪਟ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਲਈ ਗਲਤੀ ਅਤੇ ਆਉਟਪੁੱਟ ਸਟ੍ਰੀਮ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇੱਕ ਆਮ ਲੋੜ ਸਟੈਂਡਰਡ ਐਰਰ (stderr) ਅਤੇ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ (stdout) ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਜੋੜਨਾ ਹੈ। ਇਹ ਅਕਸਰ "2>&1" ਸੰਕੇਤ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

For instance, when compiling a program with g++, you might want to see both error messages and regular output in one stream. The "2>ਉਦਾਹਰਨ ਲਈ, g++ ਨਾਲ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਕੰਪਾਇਲ ਕਰਦੇ ਸਮੇਂ, ਤੁਸੀਂ ਇੱਕ ਸਟ੍ਰੀਮ ਵਿੱਚ ਗਲਤੀ ਸੁਨੇਹੇ ਅਤੇ ਨਿਯਮਤ ਆਉਟਪੁੱਟ ਦੋਵੇਂ ਦੇਖਣਾ ਚਾਹ ਸਕਦੇ ਹੋ। "2>&1" ਰਚਨਾ ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਇੱਕ ਮਹੱਤਵਪੂਰਣ ਭੂਮਿਕਾ ਨਿਭਾਉਂਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਗਲਤੀ ਸੁਨੇਹੇ ਖੁੰਝੇ ਨਾ ਹੋਣ ਅਤੇ ਮਿਆਰੀ ਆਉਟਪੁੱਟ ਦੇ ਨਾਲ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੇ ਜਾਣ।

ਹੁਕਮ ਵਰਣਨ
2>2>&1 ਮਿਆਰੀ ਗਲਤੀ (stderr) ਨੂੰ ਮਿਆਰੀ ਆਉਟਪੁੱਟ (stdout) ਵਿੱਚ ਰੀਡਾਇਰੈਕਟ ਕਰਦਾ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਜੋੜਦਾ ਹੈ।
| ਇੱਕ ਕਮਾਂਡ ਦੇ ਆਉਟਪੁੱਟ ਨੂੰ ਦੂਜੀ ਕਮਾਂਡ ਵਿੱਚ ਪਾਈਪ ਕਰਦਾ ਹੈ।
head ਆਉਟਪੁੱਟ ਦੀਆਂ ਪਹਿਲੀਆਂ ਕੁਝ ਲਾਈਨਾਂ ਦਿਖਾਉਂਦਾ ਹੈ।
subprocess.Popen() ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਦੇ ਅੰਦਰ ਇੱਕ ਨਵੀਂ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਇੱਕ ਕਮਾਂਡ ਚਲਾਉਂਦੀ ਹੈ।
stderr=subprocess.STDOUT ਪਾਈਥਨ ਵਿੱਚ ਇੱਕ ਸਬਪ੍ਰੋਸੈਸ ਕਾਲ ਵਿੱਚ ਮਿਆਰੀ ਆਉਟਪੁੱਟ ਦੇ ਨਾਲ ਮਿਆਰੀ ਗਲਤੀ ਨੂੰ ਜੋੜਦਾ ਹੈ।
subprocess.PIPE ਪਾਈਥਨ ਵਿੱਚ ਹੋਰ ਪ੍ਰਕਿਰਿਆ ਲਈ ਉਪ-ਪ੍ਰਕਿਰਿਆ ਦੇ ਆਉਟਪੁੱਟ ਨੂੰ ਕੈਪਚਰ ਕਰਦਾ ਹੈ।
tee ਸਟੈਂਡਰਡ ਇਨਪੁਟ ਤੋਂ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ ਅਤੇ ਫਾਈਲਾਂ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਲਿਖਦਾ ਹੈ।
command 2>command 2>&1 | tee output.log ਕਮਾਂਡ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ, stderr ਅਤੇ stdout ਨੂੰ ਜੋੜਦਾ ਹੈ, ਅਤੇ ਇਸ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਆਉਟਪੁੱਟ ਨੂੰ ਲੌਗ ਕਰਦਾ ਹੈ।

ਸਕ੍ਰਿਪਟ ਦੀ ਕਾਰਜਸ਼ੀਲਤਾ ਨੂੰ ਸਮਝਣਾ

ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਜੋੜਨ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਦਾ ਪ੍ਰਦਰਸ਼ਨ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਵੱਖ-ਵੱਖ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸੰਕੇਤ. ਪਹਿਲੀ ਸਕ੍ਰਿਪਟ ਇੱਕ Bash ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ਇੱਕ C++ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਕੰਪਾਇਲ ਕਰਦੀ ਹੈ। ਵਰਤ ਕੇ g++ main.cpp 2>&1 | head, ਸਕ੍ਰਿਪਟ ਸਰੋਤ ਫਾਈਲ ਨੂੰ ਕੰਪਾਇਲ ਕਰਦੀ ਹੈ ਅਤੇ ਆਉਟਪੁੱਟ ਸਟ੍ਰੀਮ ਨਾਲ ਗਲਤੀ ਸਟ੍ਰੀਮ ਨੂੰ ਜੋੜਦੀ ਹੈ। ਇਸ ਸੰਯੁਕਤ ਧਾਰਾ ਨੂੰ ਫਿਰ ਪਾਈਪ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਮਾਂਡ, ਜੋ ਕਿ ਸੰਯੁਕਤ ਆਉਟਪੁੱਟ ਦੀਆਂ ਪਹਿਲੀਆਂ ਕੁਝ ਲਾਈਨਾਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦੀ ਹੈ। ਇਹ ਸਮੁੱਚੀ ਆਉਟਪੁੱਟ ਦੀ ਜਾਂਚ ਕੀਤੇ ਬਿਨਾਂ ਕੰਪਾਇਲੇਸ਼ਨ ਦੌਰਾਨ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਤਰੁੱਟੀਆਂ ਦੀ ਤੁਰੰਤ ਪਛਾਣ ਕਰਨ ਲਈ ਲਾਭਦਾਇਕ ਹੈ।

ਦੂਜੀ ਸਕ੍ਰਿਪਟ ਇੱਕ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ਇੱਕ ਸਮਾਨ ਕੰਮ ਨੂੰ ਪੂਰਾ ਕਰਦੀ ਹੈ ਪਰ ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ ਮੋਡੀਊਲ. ਹੁਕਮ ਦੇ ਨਾਲ ਕੰਪਾਇਲੇਸ਼ਨ ਕਮਾਂਡ ਨੂੰ ਚਲਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜੋੜਨਾ stderr ਅਤੇ . ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੰਯੁਕਤ ਆਉਟਪੁੱਟ ਨੂੰ ਕੈਪਚਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਪਹਿਲੀਆਂ ਕੁਝ ਲਾਈਨਾਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਦੇ ਅੰਦਰ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਵਿਧੀ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਪਾਈਥਨ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਆਉਟਪੁੱਟ ਦੀ ਹੋਰ ਹੇਰਾਫੇਰੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਤੀਜੀ ਉਦਾਹਰਣ ਇੱਕ ਹੋਰ Bash ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ਇੱਕ ਕਮਾਂਡ ਚਲਾਉਂਦੀ ਹੈ ਅਤੇ ਇਸਦੇ ਆਉਟਪੁੱਟ ਅਤੇ ਗਲਤੀਆਂ ਨੂੰ ਲੌਗ ਕਰਦੀ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਕਮਾਂਡ, ਸੰਯੁਕਤ ਆਉਟਪੁੱਟ ਨੂੰ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਕਿ ਟਰਮੀਨਲ 'ਤੇ ਵੀ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਭਵਿੱਖ ਵਿੱਚ ਸੰਦਰਭ ਲਈ ਅਸਲ-ਸਮੇਂ ਦੀ ਨਿਗਰਾਨੀ ਅਤੇ ਲੌਗਿੰਗ ਦੋਵਾਂ ਦੀ ਸਹੂਲਤ ਦਿੰਦਾ ਹੈ।

Bash ਦੀ ਵਰਤੋਂ ਕਰਕੇ stderr ਅਤੇ stdout ਨੂੰ ਜੋੜਨਾ

ਬੈਸ਼ ਸਕ੍ਰਿਪਟ ਉਦਾਹਰਨ

# This script compiles a C++ program and combines stderr and stdout
# Usage: ./compile.sh

#!/bin/bash

# Define the source file
source_file="main.cpp"

# Compile the source file and combine stderr and stdout
g++ $source_file 2>&1 | head

# Explanation:
# '2>&1' redirects stderr (file descriptor 2) to stdout (file descriptor 1)
# '|' pipes the combined output to the 'head' command to display the first few lines

ਪਾਈਥਨ ਵਿੱਚ ਲੌਗਿੰਗ ਆਉਟਪੁੱਟ ਅਤੇ ਗਲਤੀਆਂ

ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਉਦਾਹਰਨ

import subprocess

# Define the command to compile the C++ source file
command = ["g++", "main.cpp"]

# Execute the command and combine stderr and stdout
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

# Read the combined output
output, _ = process.communicate()

# Display the first few lines of the output
print("".join(output.decode().splitlines(True)[:10]))

# Explanation:
# 'stderr=subprocess.STDOUT' combines stderr and stdout
# 'subprocess.PIPE' captures the output for further processing

ਸ਼ੈੱਲ ਸਕ੍ਰਿਪਟ ਵਿੱਚ stderr ਅਤੇ stdout ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨਾ

ਸ਼ੈੱਲ ਸਕ੍ਰਿਪਟ ਉਦਾਹਰਨ

# This script executes a command and logs its output and errors
# Usage: ./log_output.sh

#!/bin/bash

# Define the command to run
command="ls /nonexistent_directory"

# Run the command and redirect stderr to stdout, then save to a log file
$command 2>&1 | tee output.log

# Explanation:
# '2>&1' redirects stderr (file descriptor 2) to stdout (file descriptor 1)
# '|' pipes the combined output to the 'tee' command, which writes to a file and stdout

ਵੱਖ-ਵੱਖ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ ਅਸ਼ੁੱਧੀ ਅਤੇ ਆਉਟਪੁੱਟ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਜੋੜਨਾ

ਦੀ ਬੁਨਿਆਦੀ ਵਰਤੋਂ ਤੋਂ ਇਲਾਵਾ ਜੋੜਨ ਲਈ ਅਤੇ , ਇੱਥੇ ਕਈ ਹੋਰ ਦ੍ਰਿਸ਼ ਹਨ ਜਿੱਥੇ ਇਸ ਤਕਨੀਕ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਗੁੰਝਲਦਾਰ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਬਾਅਦ ਵਿੱਚ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਕਈ ਕਮਾਂਡਾਂ ਦੇ ਸੰਯੁਕਤ ਆਉਟਪੁੱਟ ਨੂੰ ਲੌਗ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਸਵੈਚਲਿਤ ਟੈਸਟਿੰਗ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਅਸਫਲਤਾਵਾਂ ਦਾ ਨਿਦਾਨ ਕਰਨ ਲਈ ਲਾਗਾਂ ਦੀ ਸਮੀਖਿਆ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਸੰਯੁਕਤ ਰੀਡਾਇਰੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਡੀਬੱਗਿੰਗ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਰਲ ਬਣਾਉਣ, ਇੱਕ ਸਿੰਗਲ ਲੌਗ ਫਾਈਲ ਵਿੱਚ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ ਅਤੇ ਗਲਤੀ ਸੁਨੇਹੇ ਦੋਵੇਂ ਕੈਪਚਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।

ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਵਰਤੋਂ ਕੇਸ ਕ੍ਰੋਨ ਨੌਕਰੀਆਂ ਵਿੱਚ ਹੈ, ਜਿੱਥੇ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਨਿਸ਼ਚਿਤ ਅੰਤਰਾਲਾਂ 'ਤੇ ਚਲਾਉਣ ਲਈ ਤਹਿ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹਨਾਂ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਸਾਰੇ ਆਉਟਪੁੱਟ ਨੂੰ ਕੈਪਚਰ ਕਰਨਾ, ਗਲਤੀਆਂ ਸਮੇਤ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਕਿਸੇ ਵੀ ਮੁੱਦੇ ਨੂੰ ਤੁਰੰਤ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਰੀਡਾਇਰੈਕਟ ਕਰਕੇ ਨੂੰ ਅਤੇ ਫਿਰ ਇੱਕ ਲੌਗ ਫਾਈਲ ਵਿੱਚ, ਸਿਸਟਮ ਪ੍ਰਸ਼ਾਸਕ ਸਕ੍ਰਿਪਟਾਂ ਦੇ ਸਫਲ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਅਤੇ ਕਿਸੇ ਵੀ ਸਮੱਸਿਆ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਲਾਗਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰ ਸਕਦੇ ਹਨ। ਇਹ ਪਹੁੰਚ ਤੈਨਾਤੀ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ ਵੀ ਲਾਭਦਾਇਕ ਹੈ, ਜਿੱਥੇ ਕਮਾਂਡਾਂ ਨੂੰ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਕਿਸੇ ਵੀ ਤਰੁੱਟੀ ਨੂੰ ਨਿਪਟਾਰਾ ਕਰਨ ਲਈ ਲਾਗਇਨ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਦੀ ਵਰਤੋਂ ਸਧਾਰਨ ਕਮਾਂਡ-ਲਾਈਨ ਕਾਰਜਾਂ ਤੋਂ ਪਰੇ ਹੋਰ ਗੁੰਝਲਦਾਰ ਅਤੇ ਸਵੈਚਾਲਿਤ ਸਿਸਟਮਾਂ ਤੱਕ ਵਿਸਤਾਰ ਕਰਦਾ ਹੈ।

stderr ਅਤੇ stdout ਨੂੰ ਜੋੜਨ 'ਤੇ ਆਮ ਸਵਾਲ ਅਤੇ ਜਵਾਬ

  1. ਕੀ ਇਹ ਕਰਦੇ ਹਾਂ?
  2. ਇਹ ਸਟੈਂਡਰਡ ਐਰਰ (stderr) ਨੂੰ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ (stdout) ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਦਾ ਹੈ, ਦੋਵਾਂ ਸਟ੍ਰੀਮਾਂ ਨੂੰ ਜੋੜਦਾ ਹੈ।
  3. stderr ਅਤੇ stdout ਨੂੰ ਜੋੜਨਾ ਲਾਭਦਾਇਕ ਕਿਉਂ ਹੈ?
  4. ਇਹ ਇੱਕ ਸਿੰਗਲ ਸਟ੍ਰੀਮ ਵਿੱਚ ਸਾਰੇ ਆਉਟਪੁੱਟ ਨੂੰ ਕੈਪਚਰ ਕਰਕੇ ਲੌਗਿੰਗ ਅਤੇ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ।
  5. ਮੈਂ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਸੰਯੁਕਤ ਆਉਟਪੁੱਟ ਨੂੰ ਕਿਵੇਂ ਲੌਗ ਕਰਾਂ?
  6. ਵਰਤੋ ਸੰਯੁਕਤ ਆਉਟਪੁੱਟ ਨੂੰ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਲੌਗ ਕਰਨ ਲਈ ਜਦੋਂ ਇਸਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦੇ ਹੋ।
  7. ਕੀ ਮੈਂ ਇਸਨੂੰ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਵਰਤ ਸਕਦਾ ਹਾਂ?
  8. ਜੀ, ਵਰਤ ਕੇ ਨਾਲ ਅਤੇ .
  9. ਜੇਕਰ ਮੈਂ stderr ਅਤੇ stdout ਨੂੰ ਜੋੜਦਾ ਨਹੀਂ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ?
  10. ਗਲਤੀਆਂ ਅਤੇ ਆਉਟਪੁੱਟ ਨੂੰ ਵੱਖ ਕੀਤਾ ਜਾਵੇਗਾ, ਜੋ ਡੀਬੱਗਿੰਗ ਨੂੰ ਹੋਰ ਮੁਸ਼ਕਲ ਬਣਾ ਸਕਦਾ ਹੈ।
  11. ਕੀ ਸਿਰਫ stderr ਨੂੰ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਰੀਡਾਇਰੈਕਟ ਕਰਨਾ ਸੰਭਵ ਹੈ?
  12. ਹਾਂ, ਵਰਤੋਂ stderr ਨੂੰ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ.
  13. ਕੀ ਮੈਂ ਅਜੇ ਵੀ ਕੰਸੋਲ 'ਤੇ ਤਰੁੱਟੀਆਂ ਦੇਖ ਸਕਦਾ ਹਾਂ ਜੇਕਰ ਮੈਂ ਉਹਨਾਂ ਨੂੰ ਕਿਸੇ ਫਾਈਲ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਦਾ ਹਾਂ?
  14. ਵਰਤੋ ਇੱਕੋ ਸਮੇਂ ਗਲਤੀਆਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਅਤੇ ਲੌਗ ਕਰਨ ਲਈ।
  15. ਮੈਂ stdout ਨੂੰ stderr ਤੇ ਕਿਵੇਂ ਰੀਡਾਇਰੈਕਟ ਕਰਾਂ?
  16. ਵਰਤੋ stdout ਨੂੰ stderr 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ।

ਦ ਨੋਟੇਸ਼ਨ ਬੈਸ਼ ਸਕ੍ਰਿਪਟਿੰਗ ਵਿੱਚ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਟੂਲ ਹੈ, ਜੋ ਸਟੈਂਡਰਡ ਐਰਰ ਅਤੇ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ ਸਟ੍ਰੀਮ ਦੇ ਸਹਿਜ ਸੁਮੇਲ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਤਕਨੀਕ ਨਿਗਰਾਨੀ, ਡੀਬੱਗਿੰਗ, ਅਤੇ ਸਕ੍ਰਿਪਟ ਆਉਟਪੁੱਟ ਨੂੰ ਲੌਗ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਮੁੱਦਿਆਂ ਦੀ ਪਛਾਣ ਕਰਨਾ ਅਤੇ ਹੱਲ ਕਰਨਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ। ਇਸ ਸੰਕਲਪ ਵਿੱਚ ਮੁਹਾਰਤ ਹਾਸਲ ਕਰਕੇ, ਡਿਵੈਲਪਰ ਆਪਣੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਅਤੇ ਰੱਖ-ਰਖਾਅ ਨੂੰ ਵਧਾ ਸਕਦੇ ਹਨ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਸਾਰੀ ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ ਹਾਸਲ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ ਪਹੁੰਚਯੋਗ ਹੈ।