ಕನ್ಸೋಲ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸುವುದು ಹೇಗೆ. ಫೈಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿ. ಲಿನಕ್ಸ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳು

  • ಅನುವಾದ

ನೀವು ಈಗಾಗಲೇ ಟರ್ಮಿನಲ್‌ನ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಂಡಿದ್ದರೆ, ನೀವು ಕಲಿತ ಆಜ್ಞೆಗಳನ್ನು ಸಂಯೋಜಿಸಲು ನೀವು ಸಿದ್ಧರಾಗಿರಬಹುದು. ಕೆಲವೊಮ್ಮೆ ಶೆಲ್ ಆಜ್ಞೆಗಳನ್ನು ಒಂದು ಸಮಯದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸಾಕಾಗುತ್ತದೆ, ಆದರೆ ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಆಜ್ಞೆಯ ನಂತರ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸುವುದು ತುಂಬಾ ಬೇಸರದ ಮತ್ತು ಅಭಾಗಲಬ್ಧವಾಗಿದೆ. ಇಂತಹ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ಕೋನ ಆವರಣಗಳಂತಹ ಕೆಲವು ವಿಶೇಷ ಚಿಹ್ನೆಗಳು ಸೂಕ್ತವಾಗಿ ಬರುತ್ತವೆ.

ಶೆಲ್ಗಾಗಿ, ಇಂಟರ್ಪ್ರಿಟರ್ Linux ಆಜ್ಞೆಗಳು, ಈ ಹೆಚ್ಚುವರಿ ಅಕ್ಷರಗಳು ಪರದೆಯ ಸ್ಥಳವನ್ನು ವ್ಯರ್ಥ ಮಾಡುವುದಿಲ್ಲ. ಅವು ಶಕ್ತಿಯುತ ತಂಡಗಳಾಗಿದ್ದು, ಅವು ವಿಭಿನ್ನ ಮಾಹಿತಿಯ ತುಣುಕುಗಳನ್ನು ಒಟ್ಟಿಗೆ ಜೋಡಿಸಬಹುದು, ಹಿಂದೆ ಸಂಪೂರ್ಣವಾದುದನ್ನು ಪ್ರತ್ಯೇಕಿಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಮಾಡಬಹುದು. ಶೆಲ್‌ನ ಸರಳವಾದ, ಆದರೆ ಅತ್ಯಂತ ಶಕ್ತಿಶಾಲಿ ಮತ್ತು ವ್ಯಾಪಕವಾಗಿ ಬಳಸಲಾಗುವ ವೈಶಿಷ್ಟ್ಯವೆಂದರೆ ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್/ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳ ಮರುನಿರ್ದೇಶನ.

ಮೂರು ಪ್ರಮಾಣಿತ I/O ಸ್ಟ್ರೀಮ್‌ಗಳು

ನಾವು ಇಲ್ಲಿ ಏನು ಮಾತನಾಡಲಿದ್ದೇವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಮರುನಿರ್ದೇಶಿಸಬಹುದಾದ ಡೇಟಾ ಎಲ್ಲಿಂದ ಬರುತ್ತದೆ ಮತ್ತು ಅದು ಎಲ್ಲಿಗೆ ಹೋಗುತ್ತದೆ ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. Linux ಮೂರು ಪ್ರಮಾಣಿತ I/O ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಹೊಂದಿದೆ.

ಮೊದಲನೆಯದು ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್. ವ್ಯವಸ್ಥೆಯಲ್ಲಿ, ಇದು ಥ್ರೆಡ್ ಸಂಖ್ಯೆ 0 ಆಗಿದೆ (ಕಂಪ್ಯೂಟರ್‌ಗಳಲ್ಲಿ, ಎಣಿಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಶೂನ್ಯದಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ). ಥ್ರೆಡ್ ಸಂಖ್ಯೆಗಳನ್ನು ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ. ಈ ಸ್ಟ್ರೀಮ್ ಟರ್ಮಿನಲ್‌ಗೆ ರವಾನಿಸಲಾದ ಕೆಲವು ಮಾಹಿತಿಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ, ನಿರ್ದಿಷ್ಟವಾಗಿ, ಕಾರ್ಯಗತಗೊಳಿಸಲು ಶೆಲ್‌ಗೆ ಸೂಚನೆಗಳನ್ನು ರವಾನಿಸಲಾಗಿದೆ. ವಿಶಿಷ್ಟವಾಗಿ, ಬಳಕೆದಾರರು ಈ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಕೀಬೋರ್ಡ್‌ನಿಂದ ನಮೂದಿಸಿದಂತೆ ಡೇಟಾ ಪ್ರವೇಶಿಸುತ್ತದೆ.

ಎರಡನೇ ಸ್ಟ್ರೀಮ್ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ, ಸಂಖ್ಯೆ 1. ಇದು ಕೆಲವು ಕ್ರಿಯೆಯನ್ನು ಮಾಡಿದ ನಂತರ ಶೆಲ್ ಔಟ್‌ಪುಟ್ ಮಾಡುವ ಡೇಟಾದ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ವಿಶಿಷ್ಟವಾಗಿ, ಈ ಡೇಟಾವು ಕಾಣಿಸಿಕೊಳ್ಳಲು ಕಾರಣವಾದ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿದ ಅದೇ ಟರ್ಮಿನಲ್ ವಿಂಡೋದಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ.

ಮತ್ತು ಅಂತಿಮವಾಗಿ, ಮೂರನೇ ಸ್ಟ್ರೀಮ್ ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ, ಇದು ಹ್ಯಾಂಡಲ್ 2 ಅನ್ನು ಹೊಂದಿದೆ. ಈ ಸ್ಟ್ರೀಮ್ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗೆ ಹೋಲುತ್ತದೆ, ಏಕೆಂದರೆ ಸಾಮಾನ್ಯವಾಗಿ ಅದರೊಳಗೆ ಹೋದದ್ದು ಟರ್ಮಿನಲ್ ಪರದೆಯ ಮೇಲೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಇದು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ನಿಂದ ಅಂತರ್ಗತವಾಗಿ ವಿಭಿನ್ನವಾಗಿದೆ ಮತ್ತು ಪರಿಣಾಮವಾಗಿ, ಬಯಸಿದಲ್ಲಿ ಈ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ನಿಯಂತ್ರಿಸಬಹುದು. ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ಇನ್ ಮುಂದಿನ ಪರಿಸ್ಥಿತಿ. ಪ್ರಕ್ರಿಯೆ ಮಾಡುವ ತಂಡವಿದೆ ದೊಡ್ಡ ಪರಿಮಾಣಡೇಟಾ, ಸಂಕೀರ್ಣ ಮತ್ತು ದೋಷ ಪೀಡಿತ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಈ ಆಜ್ಞೆಯು ಉತ್ಪಾದಿಸುವ ಪೇಲೋಡ್ ದೋಷ ಸಂದೇಶಗಳೊಂದಿಗೆ ಮಿಶ್ರಣವಾಗಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನೀವು ಬಯಸುತ್ತೀರಿ. ಔಟ್‌ಪುಟ್ ಮತ್ತು ದೋಷ ಸ್ಟ್ರೀಮ್‌ಗಳ ಪ್ರತ್ಯೇಕ ಮರುನಿರ್ದೇಶನದ ಮೂಲಕ ಇದನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ.

ನೀವು ಬಹುಶಃ ಈಗಾಗಲೇ ಊಹಿಸಿದಂತೆ, I/O ಮರುನಿರ್ದೇಶನ ಎಂದರೆ ಮೇಲೆ ವಿವರಿಸಿದ ಸ್ಟ್ರೀಮ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್‌ಗೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಮರುನಿರ್ದೇಶಿಸುವುದು ಎಂದರ್ಥ. ಇದನ್ನು ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸಿ ಮಾಡಲಾಗುತ್ತದೆ > ಮತ್ತು< в ವಿವಿಧ ಸಂಯೋಜನೆಗಳು, ಮರುನಿರ್ದೇಶಿಸಲಾದ ಡೇಟಾವು ಅಂತಿಮವಾಗಿ ಎಲ್ಲಿಗೆ ಹೋಗಬೇಕು ಎಂಬುದರ ಮೇಲೆ ಇದರ ಬಳಕೆಯು ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ.

ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿ

ನೀವು ಬರೆಯುವ ಫೈಲ್ ಅನ್ನು ರಚಿಸಲು ಬಯಸುತ್ತೀರಿ ಎಂದು ಹೇಳೋಣ ಪ್ರಸ್ತುತ ದಿನಾಂಕಮತ್ತು ಸಮಯ. ವಿಷಯಗಳನ್ನು ಸುಲಭಗೊಳಿಸಲು, ನಮಗೆ ಬೇಕಾದುದನ್ನು ಹಿಂದಿರುಗಿಸುವ ಆದೇಶವನ್ನು ಸೂಕ್ತವಾಗಿ ಹೆಸರಿಸಲಾದ ದಿನಾಂಕವಿದೆ. ವಿಶಿಷ್ಟವಾಗಿ ಔಟ್‌ಪುಟ್ ಡೇಟಾವನ್ನು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ ಆದೇಶಿಸುತ್ತದೆ. ಈ ಡೇಟಾ ಫೈಲ್‌ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು, ನೀವು ಗುರಿಯ ಫೈಲ್‌ನ ಹೆಸರಿನ ಮೊದಲು ಆಜ್ಞೆಯ ನಂತರ > ಚಿಹ್ನೆಯನ್ನು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ. ಮೊದಲು ಮತ್ತು ನಂತರ > ನೀವು ಜಾಗವನ್ನು ಹಾಕಬೇಕು.

ಮರುನಿರ್ದೇಶನವನ್ನು ಬಳಸುವಾಗ, > ನಂತರ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಯಾವುದೇ ಫೈಲ್ ಅನ್ನು ತಿದ್ದಿ ಬರೆಯಲಾಗುತ್ತದೆ. ಫೈಲ್ನಲ್ಲಿ ಮೌಲ್ಯಯುತವಾದ ಏನೂ ಇಲ್ಲದಿದ್ದರೆ ಮತ್ತು ಅದರ ವಿಷಯಗಳು ಕಳೆದುಹೋದರೆ, ನಮ್ಮ ವಿನ್ಯಾಸದಲ್ಲಿ ಅದನ್ನು ಈಗಾಗಲೇ ಬಳಸಲು ಅನುಮತಿಸಲಾಗಿದೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್. ಈ ಸಂದರ್ಭದಲ್ಲಿ ಇನ್ನೂ ಅಸ್ತಿತ್ವದಲ್ಲಿರದ ಫೈಲ್ ಹೆಸರನ್ನು ಬಳಸುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಉತ್ತಮವಾಗಿದೆ. ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ ಈ ಫೈಲ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ. ಅದನ್ನು date.txt ಎಂದು ಕರೆಯೋಣ. ಡಾಟ್ ನಂತರ ಫೈಲ್ ವಿಸ್ತರಣೆಯು ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚು ವಿಷಯವಲ್ಲ, ಆದರೆ ವಿಸ್ತರಣೆಗಳು ವಿಷಯಗಳನ್ನು ವ್ಯವಸ್ಥಿತವಾಗಿರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಆದ್ದರಿಂದ ನಮ್ಮ ಆಜ್ಞೆ ಇಲ್ಲಿದೆ:

$date>date.txt
ಈ ಆಜ್ಞೆಯು ಸ್ವತಃ ನಂಬಲಾಗದಷ್ಟು ಉಪಯುಕ್ತವಾಗಿದೆ ಎಂದು ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ, ಆದಾಗ್ಯೂ, ಅದರ ಆಧಾರದ ಮೇಲೆ, ನಾವು ಈಗಾಗಲೇ ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕವಾದದ್ದನ್ನು ಮಾಡಬಹುದು. ದೈನಂದಿನ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವ ಮೂಲಕ ನಿಮ್ಮ ಟ್ರಾಫಿಕ್ ಇಂಟರ್ನೆಟ್‌ನಾದ್ಯಂತ ಕೆಲವು ಅಂತಿಮ ಬಿಂದುವಿಗೆ ಹೇಗೆ ಮರುಹೊಂದಿಸುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೀವು ತಿಳಿದುಕೊಳ್ಳಲು ಬಯಸುತ್ತೀರಿ ಎಂದು ಹೇಳೋಣ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವಲ್ಲಿ ಟ್ರೇಸರೌಟ್ ಆಜ್ಞೆಯು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಇದು ನಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಮತ್ತು ಎಂಡ್ ಪಾಯಿಂಟ್ ನಡುವಿನ ಟ್ರಾಫಿಕ್ ಮಾರ್ಗದ ವಿವರಗಳನ್ನು URL ರೂಪದಲ್ಲಿ ಕಮಾಂಡ್ ಅನ್ನು ಕರೆ ಮಾಡುವಾಗ ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ಡೇಟಾವು ಟ್ರಾಫಿಕ್ ಹಾದುಹೋಗುವ ಎಲ್ಲಾ ಮಾರ್ಗನಿರ್ದೇಶಕಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿದೆ.

ನಾವು ಈಗಾಗಲೇ ದಿನಾಂಕದೊಂದಿಗೆ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿರುವುದರಿಂದ, ಈ ಫೈಲ್‌ಗೆ ಟ್ರೇಸರೌಟ್‌ನಿಂದ ಸ್ವೀಕರಿಸಿದ ಡೇಟಾವನ್ನು ಸರಳವಾಗಿ ಸೇರಿಸಲು ಇದು ಸಾಕಷ್ಟು ಸಮರ್ಥನೆಯಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ನೀವು ಎರಡು > ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ, ಒಂದರ ನಂತರ ಒಂದನ್ನು ಇರಿಸಲಾಗುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ ಹೊಸ ತಂಡ, ಇದು ಫೈಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ, ಆದರೆ ಅದನ್ನು ಓವರ್‌ರೈಟ್ ಮಾಡುವುದಿಲ್ಲ, ಆದರೆ ಹಳೆಯದಾದ ನಂತರ ಹೊಸ ಡೇಟಾವನ್ನು ಸೇರಿಸುತ್ತದೆ, ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

$ traceroute google.com >> date.txt
ಈಗ ನಾವು ಮಾಡಬೇಕಾಗಿರುವುದು mv ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್ ಹೆಸರನ್ನು ಹೆಚ್ಚು ಅರ್ಥಪೂರ್ಣವಾಗಿ ಬದಲಾಯಿಸುವುದು, ಇದು ಮೂಲ ಫೈಲ್ ಹೆಸರನ್ನು ಮೊದಲ ಆರ್ಗ್ಯುಮೆಂಟ್ ಆಗಿ ಮತ್ತು ಹೊಸ ಫೈಲ್ ಹೆಸರನ್ನು ಎರಡನೆಯದಾಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ:

$ mv date.txt trace1.txt

ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿ

ಚಿಹ್ನೆಯನ್ನು ಬಳಸುವುದು< вместо >ಫೈಲ್‌ನ ವಿಷಯಗಳೊಂದಿಗೆ ಅದನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ ನಾವು ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಬಹುದು.

ಎರಡು ಫೈಲ್‌ಗಳಿವೆ ಎಂದು ಹೇಳೋಣ: list1.txt ಮತ್ತು list2.txt, ಪ್ರತಿಯೊಂದೂ ಸ್ಟ್ರಿಂಗ್‌ಗಳ ವಿಂಗಡಿಸದ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿದೆ. ಪ್ರತಿಯೊಂದು ಪಟ್ಟಿಯು ತನ್ನದೇ ಆದ ಅಂಶಗಳನ್ನು ಹೊಂದಿದೆ, ಆದರೆ ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕೆಲವು ಅಂಶಗಳು ಒಂದೇ ಆಗಿರುತ್ತವೆ. ಕಾಮ್ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಮೊದಲ ಮತ್ತು ಎರಡನೆಯ ಪಟ್ಟಿಗಳೆರಡರಲ್ಲೂ ಇರುವ ಸಾಲುಗಳನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು, ಆದರೆ ಅದನ್ನು ಬಳಸುವ ಮೊದಲು, ಪಟ್ಟಿಗಳನ್ನು ವಿಂಗಡಿಸಬೇಕು.

ವಿಂಗಡಿಸಲಾದ ಡೇಟಾವನ್ನು ಅದನ್ನು ತೆಗೆದುಕೊಂಡ ಫೈಲ್‌ಗೆ ಉಳಿಸದೆಯೇ ವಿಂಗಡಿಸಲಾದ ಪಟ್ಟಿಯನ್ನು ಟರ್ಮಿನಲ್‌ಗೆ ಹಿಂತಿರುಗಿಸುವ ಒಂದು ರೀತಿಯ ಆದೇಶವಿದೆ. ನೀವು ಪ್ರತಿ ಪಟ್ಟಿಯ ವಿಂಗಡಿಸಲಾದ ಆವೃತ್ತಿಯನ್ನು ಕಳುಹಿಸಬಹುದು ಹೊಸ ಫೈಲ್, > ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ, ತದನಂತರ com ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ. ಆದಾಗ್ಯೂ, ಈ ವಿಧಾನಕ್ಕೆ ಕನಿಷ್ಠ ಎರಡು ಆಜ್ಞೆಗಳು ಬೇಕಾಗುತ್ತವೆ, ಆದಾಗ್ಯೂ ಅನಗತ್ಯ ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸದೆ ಒಂದೇ ಸಾಲಿನಲ್ಲಿ ಮಾಡಬಹುದು.

ಆದ್ದರಿಂದ ನಾವು ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು< для перенаправления отсортированной версии каждого файла команде comm . Вот что у нас получилось:

$ ಕಾಮ್<(sort list1.txt) <(sort list2.txt)
ಇಲ್ಲಿ ಆವರಣಗಳು ಗಣಿತದಲ್ಲಿ ಅದೇ ಅರ್ಥವನ್ನು ಹೊಂದಿವೆ. ಶೆಲ್ ಮೊದಲು ಆವರಣದಲ್ಲಿ ಆಜ್ಞೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ, ಮತ್ತು ನಂತರ ಎಲ್ಲವನ್ನೂ. ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಫೈಲ್‌ಗಳಿಂದ ಸಾಲುಗಳನ್ನು ಮೊದಲು ವಿಂಗಡಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ನಂತರ ಫಲಿತಾಂಶವನ್ನು ಕಾಮ್ ಆಜ್ಞೆಗೆ ರವಾನಿಸಲಾಗುತ್ತದೆ, ಅದು ನಂತರ ಪಟ್ಟಿಗಳನ್ನು ಹೋಲಿಸುವ ಫಲಿತಾಂಶವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ.

ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಅಂತಿಮವಾಗಿ, ಪ್ರಮಾಣಿತ ದೋಷ ಮರುನಿರ್ದೇಶನದ ಬಗ್ಗೆ ಮಾತನಾಡೋಣ. ಉದಾಹರಣೆಗೆ, ಲಾಗ್ ಫೈಲ್‌ಗಳನ್ನು ದೋಷಗಳೊಂದಿಗೆ ರಚಿಸಲು ಅಥವಾ ಒಂದು ಫೈಲ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಆಜ್ಞೆಯಿಂದ ಹಿಂತಿರುಗಿದ ದೋಷ ಸಂದೇಶಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಸಂಯೋಜಿಸಲು ಇದು ಅಗತ್ಯವಾಗಬಹುದು.

ಉದಾಹರಣೆಗೆ, ರೂಟ್ ಸವಲತ್ತುಗಳನ್ನು ಹೊಂದಿರದ ಬಳಕೆದಾರರಿಗೆ ಪ್ರವೇಶಿಸಬಹುದಾದ ವೈರ್‌ಲೆಸ್ ಇಂಟರ್ಫೇಸ್‌ಗಳ ಕುರಿತು ಮಾಹಿತಿಗಾಗಿ ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸಿಸ್ಟಮ್ ಅನ್ನು ಹುಡುಕಲು ನೀವು ಬಯಸಿದರೆ ಏನು ಮಾಡಬೇಕು? ಇದನ್ನು ಮಾಡಲು, ನೀವು ಶಕ್ತಿಯನ್ನು ಬಳಸಬಹುದು ಆಜ್ಞೆಯನ್ನು ಹುಡುಕಿ.

ವಿಶಿಷ್ಟವಾಗಿ, ಒಬ್ಬ ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರು ಫೈಂಡ್ ಕಮಾಂಡ್ ಅನ್ನು ಸಂಪೂರ್ಣ ಸಿಸ್ಟಮ್‌ನಾದ್ಯಂತ ಚಲಾಯಿಸಿದಾಗ, ಅದು ಟರ್ಮಿನಲ್‌ಗೆ ಉಪಯುಕ್ತ ಡೇಟಾ ಮತ್ತು ದೋಷಗಳನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಸಾಮಾನ್ಯವಾಗಿ ಹಿಂದಿನದಕ್ಕಿಂತ ಹೆಚ್ಚಿನವುಗಳು ಇವೆ, ಇದು ಕಮಾಂಡ್ ಔಟ್ಪುಟ್ನಲ್ಲಿ ನಿಮಗೆ ಬೇಕಾದುದನ್ನು ಕಂಡುಹಿಡಿಯಲು ಕಷ್ಟವಾಗುತ್ತದೆ. ಈ ಸಮಸ್ಯೆಗೆ ಪರಿಹಾರವು ತುಂಬಾ ಸರಳವಾಗಿದೆ: 2> ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್‌ಗೆ ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿ (ನೆನಪಿಡಿ, 2 ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್‌ಗೆ ವಿವರಣೆಯಾಗಿದೆ). ಪರಿಣಾಮವಾಗಿ, ಆಜ್ಞೆಯು ಪರದೆಯ ಮೇಲೆ ಏನು ಕಳುಹಿಸುತ್ತದೆಯೋ ಅದು ಮಾತ್ರ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್:

$ find / -name wireless 2> ನಿರಾಕರಿಸಲಾಗಿದೆ.txt
ತಂಡದ ಕೆಲಸದ ಫಲಿತಾಂಶಗಳನ್ನು ನೀವು ಉಳಿಸಬೇಕಾದರೆ ಏನು ಮಾಡಬೇಕು ಪ್ರತ್ಯೇಕ ಫೈಲ್ದೋಷ ಮಾಹಿತಿಯೊಂದಿಗೆ ಈ ಡೇಟಾವನ್ನು ಮಿಶ್ರಣ ಮಾಡದೆಯೇ? ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಪರಸ್ಪರ ಸ್ವತಂತ್ರವಾಗಿ ಮರುನಿರ್ದೇಶಿಸಬಹುದಾದ್ದರಿಂದ, ನಮ್ಮ ರಚನೆಯ ಕೊನೆಯಲ್ಲಿ ಫೈಲ್‌ಗೆ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ನಾವು ಆಜ್ಞೆಯನ್ನು ಸೇರಿಸಬಹುದು:

$ find / -name wireless 2> reject.txt > found.txt
ಮೊದಲ ಕೋನ ಬ್ರಾಕೆಟ್ ಸಂಖ್ಯೆ - 2> ಮತ್ತು ಎರಡನೆಯದು ಇಲ್ಲದೆ ಬರುತ್ತದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಏಕೆಂದರೆ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್‌ಪುಟ್ ಹ್ಯಾಂಡಲ್ 1 ಅನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಯಾವುದೇ ಹ್ಯಾಂಡಲ್ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದರೆ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು > ಆಜ್ಞೆಯನ್ನು ಉದ್ದೇಶಿಸಲಾಗಿದೆ.

ಅಂತಿಮವಾಗಿ, ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್‌ಗಳೆಲ್ಲವೂ ಒಂದೇ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳಬೇಕೆಂದು ನೀವು ಬಯಸಿದರೆ, &> ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ಎರಡೂ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಒಂದೇ ಸ್ಥಳಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು:

$ find / -name wireless &> results.txt

ಫಲಿತಾಂಶಗಳು

ಇಲ್ಲಿ ನಾವು ಇಂಟರ್ಪ್ರಿಟರ್‌ನಲ್ಲಿ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಕಾರ್ಯವಿಧಾನದ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸಿದ್ದೇವೆ ಆಜ್ಞಾ ಸಾಲಿನ Linux, ಆದರೆ ಇಂದು ನೀವು ಕಲಿತಿರುವ ಸ್ವಲ್ಪವೂ ಸಹ ನಿಮಗೆ ವಾಸ್ತವಿಕವಾಗಿ ನೀಡುತ್ತದೆ ಅನಿಯಮಿತ ಸಾಧ್ಯತೆಗಳು. ಮತ್ತು ಮೂಲಕ, ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಸಂಬಂಧಿಸಿದ ಎಲ್ಲದರಂತೆ, ಮಾಸ್ಟರಿಂಗ್ ಸ್ಟ್ರೀಮ್ ಮರುನಿರ್ದೇಶನಕ್ಕೆ ಅಭ್ಯಾಸದ ಅಗತ್ಯವಿದೆ. ಆದ್ದರಿಂದ, > ಮತ್ತು ಇದರೊಂದಿಗೆ ನಿಮ್ಮ ಸ್ವಂತ ಪ್ರಯೋಗಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ< .

ಆತ್ಮೀಯ ಓದುಗರೇ! ನಿಮಗೆ ಗೊತ್ತಾ ಆಸಕ್ತಿದಾಯಕ ಉದಾಹರಣೆಗಳುಈ ಟರ್ಮಿನಲ್ ತಂತ್ರದೊಂದಿಗೆ ಹೊಸಬರಿಗೆ ಹೆಚ್ಚು ಆರಾಮದಾಯಕವಾಗಲು ಸಹಾಯ ಮಾಡಲು Linux ನಲ್ಲಿ ಥ್ರೆಡ್ ಮರುನಿರ್ದೇಶನವನ್ನು ಬಳಸುವುದೇ?

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಔಟ್‌ಪುಟ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನೀವು ಈಗಾಗಲೇ ಎರಡು ವಿಧಾನಗಳೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿರುವಿರಿ:

  • ಪರದೆಯ ಮೇಲೆ ಔಟ್ಪುಟ್ ಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ.
  • ಫೈಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿ.
ಕೆಲವೊಮ್ಮೆ ನೀವು ಪರದೆಯ ಮೇಲೆ ಏನನ್ನಾದರೂ ತೋರಿಸಬೇಕು ಮತ್ತು ಫೈಲ್‌ಗೆ ಏನನ್ನಾದರೂ ಬರೆಯಬೇಕು, ಆದ್ದರಿಂದ ಲಿನಕ್ಸ್ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು, ಅಂದರೆ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಸ್ಥಳಕ್ಕೆ ಕಳುಹಿಸುವುದು ಹೇಗೆ ಎಂದು ಕಲಿಯುವುದು. ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುವ ಮೂಲಕ ಪ್ರಾರಂಭಿಸೋಣ.

ಪ್ರಮಾಣಿತ ಫೈಲ್ ವಿವರಣೆಗಳು

ಲಿನಕ್ಸ್‌ನಲ್ಲಿರುವ ಎಲ್ಲವೂ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸೇರಿದಂತೆ ಫೈಲ್‌ಗಳಾಗಿವೆ. ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್‌ಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ.

ಪ್ರತಿ ಪ್ರಕ್ರಿಯೆಯು ಒಂಬತ್ತು ತೆರೆದ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಹೊಂದಲು ಅನುಮತಿಸಲಾಗಿದೆ. ಬ್ಯಾಷ್ ಶೆಲ್ ID ಗಳು 0, 1 ಮತ್ತು 2 ನೊಂದಿಗೆ ಮೊದಲ ಮೂರು ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ. ಅವುಗಳ ಅರ್ಥ ಇಲ್ಲಿದೆ.

  • 0 , STDIN - ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್.
  • 1, STDOUT - ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್.
  • 2, STDERR - ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್.
ಈ ಮೂರು ವಿಶೇಷ ಹ್ಯಾಂಡಲ್‌ಗಳು ಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ.
ನೀವು ಪ್ರಮಾಣಿತ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ನಿಜವಾಗಿಯೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಅವುಗಳನ್ನು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಪರಸ್ಪರ ಕ್ರಿಯೆಯ ಅಡಿಪಾಯಕ್ಕೆ ಹೋಲಿಸಬಹುದು ಹೊರಗಿನ ಪ್ರಪಂಚ. ಅವರ ಬಗ್ಗೆ ವಿವರಗಳನ್ನು ನೋಡೋಣ.

STDIN

STDIN ಶೆಲ್‌ನ ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ಟರ್ಮಿನಲ್‌ಗಾಗಿ, ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಕೀಬೋರ್ಡ್ ಆಗಿದೆ. ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ ಅಕ್ಷರವನ್ನು ಬಳಸಿದಾಗ -< , Linux заменяет дескриптор файла ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್ಆಜ್ಞೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಒಂದಕ್ಕೆ. ಸಿಸ್ಟಮ್ ಫೈಲ್ ಅನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಕೀಬೋರ್ಡ್‌ನಿಂದ ನಮೂದಿಸಿದಂತೆ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ.

ಅನೇಕ ಬ್ಯಾಷ್ ಆಜ್ಞೆಗಳುಡೇಟಾವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾದ ಫೈಲ್ ಅನ್ನು ಆಜ್ಞಾ ಸಾಲಿನ ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದರೆ STDIN ನಿಂದ ಇನ್ಪುಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿ. ಉದಾಹರಣೆಗೆ, ಬೆಕ್ಕು ಆಜ್ಞೆಗೆ ಇದು ನಿಜ.

ನೀವು ಪ್ರವೇಶಿಸಿದಾಗ ಬೆಕ್ಕು ಆಜ್ಞೆಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ, ಯಾವುದೇ ನಿಯತಾಂಕಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದೆ, ಇದು STDIN ನಿಂದ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ನೀವು ಮುಂದಿನ ಸಾಲನ್ನು ನಮೂದಿಸಿದ ನಂತರ, ಬೆಕ್ಕು ಅದನ್ನು ಪರದೆಯ ಮೇಲೆ ಪ್ರದರ್ಶಿಸುತ್ತದೆ.

STDOUT

STDOUT ಶೆಲ್‌ನ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಇದು ಪರದೆಯಾಗಿದೆ. ಹೆಚ್ಚಿನ ಬ್ಯಾಷ್ ಆದೇಶಗಳು STDOUT ಗೆ ಡೇಟಾವನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ, ಅದು ಕನ್ಸೋಲ್‌ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು ಕಾರಣವಾಗುತ್ತದೆ. >> ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅದರ ವಿಷಯಗಳಿಗೆ ಸೇರಿಸುವ ಮೂಲಕ ಡೇಟಾವನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು.

ಆದ್ದರಿಂದ ನಾವು ಈ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಸೇರಿಸಬಹುದಾದ ಡೇಟಾ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ:

Pwd >> myfile
myfile ಫೈಲ್‌ಗೆ ಯಾವ pwd ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಈಗಾಗಲೇ ಅದರಲ್ಲಿರುವ ಡೇಟಾ ಎಲ್ಲಿಯೂ ಹೋಗುವುದಿಲ್ಲ.

ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಇಲ್ಲಿಯವರೆಗೆ ಉತ್ತಮವಾಗಿದೆ, ಆದರೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ xfile ಅನ್ನು ಪ್ರವೇಶಿಸುವ ಮೂಲಕ ನೀವು ಈ ಕೆಳಗಿನಂತೆ ಏನನ್ನಾದರೂ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದರೆ ಏನು ಮಾಡಬೇಕು, ಎಲ್ಲವನ್ನೂ myfile ಗೆ ದೋಷ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.

Ls –l xfile > myfile
ಈ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ನಾವು ಪರದೆಯ ಮೇಲೆ ದೋಷ ಸಂದೇಶಗಳನ್ನು ನೋಡುತ್ತೇವೆ.


ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ

ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ದೋಷ ಉಂಟಾಗುತ್ತದೆ, ಆದರೆ ಶೆಲ್ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸುವ ಮೂಲಕ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಿಲ್ಲ. ಆದರೆ ಫೈಲ್‌ನಲ್ಲಿ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಸೇರಿಸಬೇಕೆಂದು ನಾವು ಬಯಸಿದ್ದೇವೆ. ಏನು ಮಾಡಬೇಕು? ಉತ್ತರ ಸರಳವಾಗಿದೆ - ಮೂರನೇ ಗುಣಮಟ್ಟದ ವಿವರಣೆಯನ್ನು ಬಳಸಿ.

STDERR

STDERR ಶೆಲ್‌ನ ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಈ ಹ್ಯಾಂಡಲ್ STDOUT ಸೂಚಿಸುವ ಅದೇ ವಿಷಯವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಅದಕ್ಕಾಗಿಯೇ ದೋಷ ಸಂಭವಿಸಿದಾಗ ನಾವು ಪರದೆಯ ಮೇಲೆ ಸಂದೇಶವನ್ನು ನೋಡುತ್ತೇವೆ.

ಆದ್ದರಿಂದ, ನಾವು ದೋಷ ಸಂದೇಶಗಳನ್ನು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸುವ ಬದಲು ಲಾಗ್ ಫೈಲ್ ಅಥವಾ ಬೇರೆಡೆಗೆ ಮರುನಿರ್ದೇಶಿಸಲು ಬಯಸುತ್ತೇವೆ ಎಂದು ಹೇಳೋಣ.

▍ಮರುನಿರ್ದೇಶನ ದೋಷ ಹರಿವು

ನಿಮಗೆ ಈಗಾಗಲೇ ತಿಳಿದಿರುವಂತೆ, ಫೈಲ್ ಹ್ಯಾಂಡಲ್ STDERR 2 ಆಗಿದೆ. ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯ ಮೊದಲು ಈ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಇರಿಸುವ ಮೂಲಕ ನಾವು ದೋಷಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸಬಹುದು:

Ls -l xfile 2>myfile cat ./myfile
ದೋಷ ಸಂದೇಶವು ಈಗ myfile ಗೆ ಹೋಗುತ್ತದೆ.


ದೋಷ ಸಂದೇಶವನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

▍ ಮರುನಿರ್ದೇಶನ ದೋಷ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳು

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವಾಗ, ನೀವು ದೋಷ ಸಂದೇಶಗಳು ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಎರಡನ್ನೂ ಮರುನಿರ್ದೇಶಿಸಬೇಕಾದ ಸಂದರ್ಭಗಳು ಇರಬಹುದು. ಇದನ್ನು ಸಾಧಿಸಲು, ನೀವು ಸರಿಯಾದ ವಿವರಣೆಗಳಿಗಾಗಿ ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ, ದೋಷಗಳು ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಹೋಗಬೇಕಾದ ಫೈಲ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ:

Ls –l myfile xfile anotherfile 2> ದೋಷವಿಷಯ 1> ಸರಿಯಾದ ವಿಷಯ

ಮರುನಿರ್ದೇಶನ ದೋಷಗಳು ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್

1> ಕನ್ಸ್ಟ್ರಕ್ಟ್‌ಗೆ ಧನ್ಯವಾದಗಳು ಸರಿಯಾದ ವಿಷಯ ಫೈಲ್‌ಗೆ ls ಆಜ್ಞೆಯು ಸಾಮಾನ್ಯವಾಗಿ STDOUT ಗೆ ಕಳುಹಿಸುವುದನ್ನು ಶೆಲ್ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ. 2> ಮರುನಿರ್ದೇಶನ ಆದೇಶದ ಕಾರಣದಿಂದಾಗಿ STDERR ಗೆ ಹೋಗುವ ದೋಷ ಸಂದೇಶಗಳು ದೋಷದ ವಿಷಯ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತವೆ.

ಅಗತ್ಯವಿದ್ದರೆ, &> ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು STDERR ಮತ್ತು STDOUT ಎರಡನ್ನೂ ಒಂದೇ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು:


STDERR ಮತ್ತು STDOUT ಅನ್ನು ಒಂದೇ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, STDERR ಮತ್ತು STDOUT ಗಾಗಿ ಉದ್ದೇಶಿಸಿರುವುದು ವಿಷಯ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ.

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಎರಡು ವಿಧಾನಗಳಿವೆ:
  • ತಾತ್ಕಾಲಿಕ ಮರುನಿರ್ದೇಶನ, ಅಥವಾ ಏಕ ಸಾಲಿನ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ.
  • ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಔಟ್‌ಪುಟ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಭಾಗದ ಶಾಶ್ವತ ಮರುನಿರ್ದೇಶನ ಅಥವಾ ಮರುನಿರ್ದೇಶನ.

▍ತಾತ್ಕಾಲಿಕ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ, ನೀವು ಒಂದೇ ಸಾಲಿನ ಔಟ್‌ಪುಟ್ ಅನ್ನು STDERR ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ, STDERR ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಮತ್ತು ಆಂಪರ್ಸಂಡ್ ಅಕ್ಷರದೊಂದಿಗೆ (&):

#!/bin/bash echo "ಇದು ದೋಷ" >&2 ಪ್ರತಿಧ್ವನಿ "ಇದು ಸಾಮಾನ್ಯ ಔಟ್‌ಪುಟ್"
ನೀವು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಿದರೆ, ಎರಡೂ ಸಾಲುಗಳು ಪರದೆಯ ಮೇಲೆ ಗೋಚರಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ನೀವು ಈಗಾಗಲೇ ತಿಳಿದಿರುವಂತೆ, ಡೀಫಾಲ್ಟ್ ದೋಷಗಳು ಸಾಮಾನ್ಯ ಡೇಟಾದಂತೆಯೇ ಅದೇ ಸ್ಥಳದಲ್ಲಿ ಔಟ್ಪುಟ್ ಆಗಿರುತ್ತವೆ.


ತಾತ್ಕಾಲಿಕ ಪುನರ್ನಿರ್ದೇಶನ

STDERR ಔಟ್‌ಪುಟ್ ಫೈಲ್‌ಗೆ ಹೋಗುವಂತೆ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡೋಣ.

./myscript 2> myfile
ನೀವು ನೋಡುವಂತೆ, ಈಗ ಸಾಮಾನ್ಯ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಕನ್ಸೋಲ್‌ಗೆ ಬರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ದೋಷ ಸಂದೇಶಗಳು ಫೈಲ್‌ಗೆ ಹೋಗುತ್ತವೆ.


ದೋಷ ಸಂದೇಶಗಳನ್ನು ಫೈಲ್‌ಗೆ ಬರೆಯಲಾಗಿದೆ

▍ಶಾಶ್ವತ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಬಹಳಷ್ಟು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪರದೆಯ ಮೇಲೆ ಮರುನಿರ್ದೇಶಿಸಬೇಕಾದರೆ, ಪ್ರತಿ ಪ್ರತಿಧ್ವನಿ ಕರೆಗೆ ಸೂಕ್ತವಾದ ಆಜ್ಞೆಯನ್ನು ಸೇರಿಸುವುದು ಅನಾನುಕೂಲವಾಗಿದೆ. ಬದಲಿಗೆ, ನೀವು exec ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಅವಧಿಗೆ ನಿರ್ದಿಷ್ಟ ಹ್ಯಾಂಡಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸುವಂತೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಹೊಂದಿಸಬಹುದು:

#!/bin/bash exec 1>ಔಟ್‌ಫೈಲ್ ಪ್ರತಿಧ್ವನಿ "ಇದು ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಪರೀಕ್ಷೆ" ಪ್ರತಿಧ್ವನಿ "ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನಿಂದ ಮತ್ತೊಂದು ಫೈಲ್‌ಗೆ." ಪ್ರತಿಧ್ವನಿ "ಪ್ರತಿ ಸಾಲನ್ನು ಮರುನಿರ್ದೇಶಿಸದೆಯೇ"
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡೋಣ.


ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಫೈಲ್ ಅನ್ನು ನೀವು ನೋಡಿದರೆ, ಪ್ರತಿಧ್ವನಿ ಆಜ್ಞೆಗಳಿಂದ ಔಟ್‌ಪುಟ್ ಮಾಡಿದ ಎಲ್ಲವೂ ಆ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಂಡಿರುವುದನ್ನು ನೀವು ಕಾಣಬಹುದು.

exec ಆಜ್ಞೆಯನ್ನು ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಪ್ರಾರಂಭದಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ ಇತರ ಸ್ಥಳಗಳಲ್ಲಿಯೂ ಬಳಸಬಹುದು:

#!/bin/bash exec 2>myerror echo "ಇದು ಆರಂಭಸ್ಕ್ರಿಪ್ಟ್‌ನ" ಪ್ರತಿಧ್ವನಿ "ಈಗ ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ" ಎಕ್ಸಿಕ್ 1>ಮೈಫೈಲ್ ಎಕೋ "ಇದು ಮೈಫೈಲ್ ಫೈಲ್‌ಗೆ ಹೋಗಬೇಕು" ಎಕೋ "ಮತ್ತು ಇದು ಮೈರರ್ ಫೈಲ್‌ಗೆ ಹೋಗಬೇಕು" >&2
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿದ ನಂತರ ಮತ್ತು ನಾವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿದ ಫೈಲ್‌ಗಳನ್ನು ನೋಡಿದ ನಂತರ ನೀವು ಪಡೆಯುವುದು ಇದನ್ನೇ.


ವಿಭಿನ್ನ ಫೈಲ್‌ಗಳಿಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

exec ಆಜ್ಞೆಯು ಮೊದಲು STDERR ನಿಂದ ಫೈಲ್ myerror ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ. ಹಲವಾರು ಪ್ರತಿಧ್ವನಿ ಆಜ್ಞೆಗಳ ಔಟ್‌ಪುಟ್ ಅನ್ನು ನಂತರ STDOUT ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ. exec ಆಜ್ಞೆಯು ನಂತರ STDOUT ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುವ ಯಾವುದನ್ನಾದರೂ ಫೈಲ್ myfile ಗೆ ಕಳುಹಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ ನಾವು ಎಕೋ ಆಜ್ಞೆಯಲ್ಲಿ STDERR ಗೆ ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು ಫೈಲ್ myerror ಗೆ ಅನುಗುಣವಾದ ಸಾಲನ್ನು ಬರೆಯಲು ಕಾರಣವಾಗುತ್ತದೆ.

ಒಮ್ಮೆ ನೀವು ಇದನ್ನು ಮಾಸ್ಟರಿಂಗ್ ಮಾಡಿದ ನಂತರ, ನೀವು ಎಲ್ಲಿ ಹೋಗಬೇಕೆಂದು ನೀವು ಬಯಸುತ್ತೀರೋ ಅಲ್ಲಿಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಈಗ ಇನ್ಪುಟ್ ಮರುನಿರ್ದೇಶನದ ಬಗ್ಗೆ ಮಾತನಾಡೋಣ.

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು, ನಾವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಬಳಸಿದ ಅದೇ ತಂತ್ರವನ್ನು ನೀವು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, STDIN ಗಾಗಿ ಫೈಲ್ ಅನ್ನು ಡೇಟಾದ ಮೂಲವನ್ನಾಗಿ ಮಾಡಲು exec ಆಜ್ಞೆಯು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ:

Exec 0< myfile
ಈ ಆಜ್ಞೆಯು ಶೆಲ್‌ಗೆ ಇನ್‌ಪುಟ್ ಮೂಲವು ಸಾಮಾನ್ಯ STDIN ಗಿಂತ ಮೈಫೈಲ್ ಆಗಿರಬೇಕು ಎಂದು ಹೇಳುತ್ತದೆ. ಕ್ರಿಯೆಯಲ್ಲಿ ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನವನ್ನು ನೋಡೋಣ:

#!/bin/bash exec 0< testfile count=1 while read line do echo "Line #$count: $line" count=$(($count + 1)) done
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿದ ನಂತರ ಇದು ಪರದೆಯ ಮೇಲೆ ಕಾಣಿಸುತ್ತದೆ.


ಇನ್ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ಹಿಂದಿನ ಲೇಖನದಲ್ಲಿ, ಕೀಬೋರ್ಡ್‌ನಿಂದ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಓದಲು ಓದುವ ಆಜ್ಞೆಯನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ನೀವು ಕಲಿತಿದ್ದೀರಿ. ಡೇಟಾ ಮೂಲವನ್ನು ಫೈಲ್ ಮಾಡುವ ಮೂಲಕ ನೀವು ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿದರೆ, STDIN ನಿಂದ ಡೇಟಾವನ್ನು ಓದಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಓದುವ ಆಜ್ಞೆಯು ಅದನ್ನು ಫೈಲ್‌ನಿಂದ ಓದುತ್ತದೆ ಮತ್ತು ಕೀಬೋರ್ಡ್‌ನಿಂದ ಅಲ್ಲ.

ಕೆಲವು ಲಿನಕ್ಸ್ ನಿರ್ವಾಹಕರು ಲಾಗ್ ಫೈಲ್‌ಗಳನ್ನು ಓದಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಈ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತಾರೆ.

ನಿಮ್ಮ ಸ್ವಂತ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನವನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಮೂಲಕ, ನೀವು ಮೂರು ಪ್ರಮಾಣಿತ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳಿಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ. ಹೇಳಿದಂತೆ, ನೀವು ಒಂಬತ್ತು ತೆರೆದ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಹೊಂದಬಹುದು. 3 ರಿಂದ 8 ರವರೆಗಿನ ಉಳಿದ ಆರು, ಇನ್‌ಪುಟ್ ಅಥವಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಬಳಸಬಹುದು. ಅವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಫೈಲ್‌ಗೆ ನಿಯೋಜಿಸಬಹುದು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು.

exec ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ಔಟ್ಪುಟ್ ಮಾಡಲು ನೀವು ಹ್ಯಾಂಡಲ್ ಅನ್ನು ನಿಯೋಜಿಸಬಹುದು:

#!/bin/bash exec 3>myfile echo "ಇದು ಪರದೆಯ ಮೇಲೆ ಪ್ರದರ್ಶಿಸಬೇಕು" ಪ್ರತಿಧ್ವನಿ "ಮತ್ತು ಇದನ್ನು ಫೈಲ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಕು" >&3 ಪ್ರತಿಧ್ವನಿ "ಮತ್ತು ಇದು ಪರದೆಯ ಮೇಲೆ ಹಿಂತಿರುಗಬೇಕು"
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ಔಟ್ಪುಟ್ನ ಭಾಗವು ಪರದೆಯ ಮೇಲೆ ಕಾಣಿಸುತ್ತದೆ, ಭಾಗ - ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 3 ನೊಂದಿಗೆ ಫೈಲ್ನಲ್ಲಿ.


ಸ್ವಂತ ಹ್ಯಾಂಡಲ್ ಬಳಸಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ

ಡೇಟಾ ಎಂಟ್ರಿಗಾಗಿ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ

ನೀವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ರೀತಿಯಲ್ಲಿಯೇ ನೀವು ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಮೊದಲು STDIN ಅನ್ನು ಮತ್ತೊಂದು ಹ್ಯಾಂಡಲ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ.

ಫೈಲ್ ಅನ್ನು ಓದಿದ ನಂತರ, ನೀವು STDIN ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದು ಮತ್ತು ಅದನ್ನು ಎಂದಿನಂತೆ ಬಳಸಬಹುದು:

#!/bin/bash exec 6<&0 exec 0< myfile count=1 while read line do echo "Line #$count: $line" count=$(($count + 1)) done exec 0<&6 read -p "Are you done now? " answer case $answer in y) echo "Goodbye";; n) echo "Sorry, this is the end.";; esac
ಸನ್ನಿವೇಶವನ್ನು ಪ್ರಯತ್ನಿಸೋಣ.


ಇನ್ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, STDIN ಗೆ ಉಲ್ಲೇಖವನ್ನು ಸಂಗ್ರಹಿಸಲು ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 6 ಅನ್ನು ಬಳಸಲಾಗಿದೆ. ನಂತರ ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನವನ್ನು ಮಾಡಲಾಯಿತು, ಫೈಲ್ STDIN ಗಾಗಿ ಡೇಟಾ ಮೂಲವಾಯಿತು. ನಂತರ ರೀಡ್ ಕಮಾಂಡ್‌ಗೆ ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶಿಸಲಾದ STDIN ನಿಂದ ಬಂದಿದೆ, ಅಂದರೆ ಫೈಲ್‌ನಿಂದ.

ಫೈಲ್ ಅನ್ನು ಓದಿದ ನಂತರ, ಅದನ್ನು ಹ್ಯಾಂಡಲ್ 6 ಗೆ ಮರುನಿರ್ದೇಶಿಸುವ ಮೂಲಕ ನಾವು STDIN ಅನ್ನು ಮರುಹೊಂದಿಸುತ್ತೇವೆ. ಈಗ, ಎಲ್ಲವೂ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು, ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಕೆದಾರರಿಗೆ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುತ್ತದೆ, ಕೀಬೋರ್ಡ್ ಇನ್‌ಪುಟ್‌ಗಾಗಿ ಕಾಯುತ್ತದೆ ಮತ್ತು ನಮೂದಿಸಿದದನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ.

ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಮುಚ್ಚಲಾಗುತ್ತಿದೆ

ಸ್ಕ್ರಿಪ್ಟ್ ಪೂರ್ಣಗೊಂಡ ನಂತರ ಶೆಲ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಮುಚ್ಚುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ ರನ್ ಆಗುವ ಮೊದಲು ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಮುಚ್ಚುವುದು ಅವಶ್ಯಕ. ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಮುಚ್ಚಲು, ಅದನ್ನು &- ಗೆ ಮರುನಿರ್ದೇಶಿಸಬೇಕು. ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

#!/bin/bash exec 3> myfile echo "ಇದು ಡೇಟಾದ ಪರೀಕ್ಷಾ ಸಾಲು" >&3 exec 3>&- ಪ್ರತಿಧ್ವನಿ "ಇದು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ" >&3
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ನಾವು ದೋಷ ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ.


ಮುಚ್ಚಿದ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ

ವಿಷಯವೆಂದರೆ ನಾವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ವಿವರಣೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ.

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಮುಚ್ಚುವಾಗ ಜಾಗರೂಕರಾಗಿರಿ. ನೀವು ಫೈಲ್‌ಗೆ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿದರೆ, ನಂತರ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಮುಚ್ಚಿ, ನಂತರ ಅದನ್ನು ಮತ್ತೆ ತೆರೆದರೆ, ಶೆಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಅನ್ನು ಹೊಸದರೊಂದಿಗೆ ಬದಲಾಯಿಸುತ್ತದೆ. ಅಂದರೆ, ಈ ಫೈಲ್‌ಗೆ ಹಿಂದೆ ಬರೆಯಲಾದ ಎಲ್ಲವೂ ಕಳೆದುಹೋಗುತ್ತದೆ.

ತೆರೆದ ಹಿಡಿಕೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯುವುದು

ಲಿನಕ್ಸ್‌ನಲ್ಲಿ ತೆರೆದಿರುವ ಎಲ್ಲಾ ಹ್ಯಾಂಡಲ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು, ನೀವು lsof ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು. ಫೆಡೋರಾದಂತಹ ಅನೇಕ ವಿತರಣೆಗಳಲ್ಲಿ, lsof ಉಪಯುಕ್ತತೆಯು /usr/sbin ನಲ್ಲಿದೆ. ಈ ಆಜ್ಞೆಯು ಸಾಕಷ್ಟು ಉಪಯುಕ್ತವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಸಿಸ್ಟಂನಲ್ಲಿ ತೆರೆದಿರುವ ಪ್ರತಿಯೊಂದು ಹ್ಯಾಂಡಲ್ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಹಿನ್ನಲೆಯಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರಕ್ರಿಯೆಗಳಿಂದ ಏನು ತೆರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಲಾಗ್-ಇನ್ ಮಾಡಿದ ಬಳಕೆದಾರರಿಂದ ಏನು ತೆರೆಯಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಇದು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಈ ಆಜ್ಞೆಯು ಅನೇಕ ಕೀಲಿಗಳನ್ನು ಹೊಂದಿದೆ, ಪ್ರಮುಖವಾದವುಗಳನ್ನು ನೋಡೋಣ.

  • -p ಪ್ರಕ್ರಿಯೆ ID ಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
  • -d ನೀವು ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ಬಯಸುವ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಪ್ರಸ್ತುತ ಪ್ರಕ್ರಿಯೆಯ PID ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು, ನೀವು ವಿಶೇಷವನ್ನು ಬಳಸಬಹುದು ಪರಿಸರ ವೇರಿಯಬಲ್$$ ಶೆಲ್ ಪ್ರಸ್ತುತ PID ಅನ್ನು ಬರೆಯುತ್ತದೆ.

ಇತರ ಎರಡು ಸ್ವಿಚ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹಿಂತಿರುಗಿದ ಫಲಿತಾಂಶಗಳ ಮೇಲೆ ತಾರ್ಕಿಕ ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸಲು -a ಸ್ವಿಚ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ:

Lsof -a -p $$ -d 0,1,2

ತೆರೆದ ಹಿಡಿಕೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

STDIN, STDOUT ಮತ್ತು STDERR ಗೆ ಸಂಬಂಧಿಸಿದ ಫೈಲ್‌ಗಳ ಪ್ರಕಾರವು CHR (ಕ್ಯಾರೆಕ್ಟರ್ ಮೋಡ್) ಆಗಿದೆ. ಅವೆಲ್ಲವೂ ಟರ್ಮಿನಲ್‌ಗೆ ಸೂಚಿಸುವುದರಿಂದ, ಫೈಲ್ ಹೆಸರು ಟರ್ಮಿನಲ್‌ಗೆ ನಿಯೋಜಿಸಲಾದ ಸಾಧನದ ಹೆಸರಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಎಲ್ಲಾ ಮೂರು ಪ್ರಮಾಣಿತ ಫೈಲ್‌ಗಳು ಓದಬಲ್ಲವು ಮತ್ತು ಬರೆಯಬಲ್ಲವು.

ಸ್ಕ್ರಿಪ್ಟ್‌ನಿಂದ lsof ಆಜ್ಞೆಯನ್ನು ಕರೆಯುವುದನ್ನು ನೋಡೋಣ, ಇದರಲ್ಲಿ ಪ್ರಮಾಣಿತ ಪದಗಳಿಗಿಂತ ಹೆಚ್ಚುವರಿಯಾಗಿ, ಇತರ ವಿವರಣೆಗಳು ತೆರೆದಿರುತ್ತವೆ:

#!/bin/bash exec 3> myfile1 exec 6> myfile2 exec 7< myfile3 lsof -a -p $$ -d 0,1,2,3,6,7
ನೀವು ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿದರೆ ಏನಾಗುತ್ತದೆ.


ಸ್ಕ್ರಿಪ್ಟ್ ಮೂಲಕ ತೆರೆಯಲಾದ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ

ಸ್ಕ್ರಿಪ್ಟ್ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ (3 ಮತ್ತು 6) ಮತ್ತು ಇನ್‌ಪುಟ್‌ಗಾಗಿ (7) ಎರಡು ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ತೆರೆಯಿತು. ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಬಳಸಲಾದ ಫೈಲ್‌ಗಳಿಗೆ ಮಾರ್ಗಗಳನ್ನು ಸಹ ತೋರಿಸಲಾಗಿದೆ.

ಔಟ್ಪುಟ್ ನಿಗ್ರಹ

ಕೆಲವೊಮ್ಮೆ ನೀವು ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿರುವ ಆಜ್ಞೆಗಳನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು, ಉದಾಹರಣೆಗೆ, ಹಾಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಹಿನ್ನೆಲೆ ಪ್ರಕ್ರಿಯೆ, ಪರದೆಯ ಮೇಲೆ ಏನನ್ನೂ ಪ್ರದರ್ಶಿಸಲಾಗಿಲ್ಲ. ಇದನ್ನು ಮಾಡಲು, ನೀವು ಔಟ್‌ಪುಟ್ ಅನ್ನು /dev/null ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇದು "ಕಪ್ಪು ರಂಧ್ರ" ದಂತಿದೆ.

ದೋಷ ಸಂದೇಶಗಳನ್ನು ಹೇಗೆ ನಿಗ್ರಹಿಸುವುದು ಎಂಬುದರ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:

Ls -al ಬ್ಯಾಡ್‌ಫೈಲ್ ಇನ್ನೊಂದು ಫೈಲ್ 2> /dev/null
ಉದಾಹರಣೆಗೆ, ನೀವು ಫೈಲ್ ಅನ್ನು ಅಳಿಸದೆಯೇ ಅದನ್ನು ತೆರವುಗೊಳಿಸಬೇಕಾದರೆ ಅದೇ ವಿಧಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ:

Cat /dev/null > myfile

ಫಲಿತಾಂಶಗಳು

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ಇಂದು ನೀವು ಕಲಿತಿದ್ದೀರಿ. ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು, ಅವುಗಳನ್ನು ರಚಿಸುವುದು, ವೀಕ್ಷಿಸುವುದು ಮತ್ತು ಮುಚ್ಚುವುದು ಮತ್ತು ಇನ್‌ಪುಟ್, ಔಟ್‌ಪುಟ್ ಮತ್ತು ದೋಷ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಬಗ್ಗೆ ಈಗ ನಿಮಗೆ ತಿಳಿದಿದೆ. ಬ್ಯಾಷ್ ಲಿಪಿಗಳ ಬೆಳವಣಿಗೆಯಲ್ಲಿ ಇದೆಲ್ಲವೂ ಬಹಳ ಮುಖ್ಯ.

ಮುಂದಿನ ಬಾರಿ ನಾವು ಮಾತನಾಡುತ್ತೇವೆ ಲಿನಕ್ಸ್ ಸಂಕೇತಗಳು, ಅವುಗಳನ್ನು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಹೇಗೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು, ನಿಗದಿತ ಕೆಲಸಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವ ಬಗ್ಗೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ.

ಆತ್ಮೀಯ ಓದುಗರೇ! ಈ ವಸ್ತುವು ಇನ್ಪುಟ್, ಔಟ್ಪುಟ್ ಮತ್ತು ದೋಷ ಸ್ಟ್ರೀಮ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಎಲ್ಲದರ ಬಗ್ಗೆ ನಿಮಗೆ ಅನುಭವದೊಂದಿಗೆ ಮಾತ್ರ ಹೇಳಬಲ್ಲ ವೃತ್ತಿಪರರು ನಿಮ್ಮ ನಡುವೆ ಇದ್ದಾರೆ ಎಂದು ನಮಗೆ ಖಚಿತವಾಗಿದೆ. ಹಾಗಿದ್ದಲ್ಲಿ, ನಾವು ನಿಮಗೆ ನೆಲವನ್ನು ರವಾನಿಸುತ್ತೇವೆ.

ಪ್ರೋಗ್ರಾಂಗಳು ಸಾಮಾನ್ಯವಾಗಿ I/O ಗಾಗಿ ಪ್ರಮಾಣಿತ ಸ್ಟ್ರೀಮ್‌ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುತ್ತವೆಯಾದರೂ, ಹೇಳಿದಂತೆ, I/O ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಶೆಲ್ ವಿಶೇಷ ಸೌಲಭ್ಯಗಳನ್ನು ಹೊಂದಿದೆ.

5.5.1 ನಿರ್ವಾಹಕರು >,< и >>

ಮರುನಿರ್ದೇಶನವನ್ನು ಸೂಚಿಸಲು "ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ > ", "< "ಮತ್ತು" >> ". ಕಡತಕ್ಕೆ ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವುದು ಸಾಮಾನ್ಯ ಬಳಕೆಯಾಗಿದೆ. ಇಲ್ಲಿ ಒಂದು ಉದಾಹರಣೆಯಾಗಿದೆ:

$ ls -l > /home/jim/dir.txt

ಈ ಆಜ್ಞೆಯು /home/jim/dir.txt ಫೈಲ್‌ನಲ್ಲಿ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ಸಮಯದಲ್ಲಿ ಪ್ರಸ್ತುತವಾಗಿದ್ದ ಡೈರೆಕ್ಟರಿಯ ಫೈಲ್‌ಗಳು ಮತ್ತು ಉಪ ಡೈರೆಕ್ಟರಿಗಳ ಪಟ್ಟಿಯನ್ನು ಉಳಿಸುತ್ತದೆ. ls; ಮತ್ತು ವೇಳೆ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಫೈಲ್ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ, ನಂತರ ಅದನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ; ಅದು ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ, ಅದನ್ನು ತಿದ್ದಿ ಬರೆಯಲಾಗುತ್ತದೆ; ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್‌ನ ಅಂತ್ಯಕ್ಕೆ ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಸೇರಿಸಲು ನೀವು ಬಯಸಿದರೆ, ನಂತರ ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಚಿಹ್ನೆಯ ಬದಲಿಗೆ > ಬಳಸಿ >> . ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಅಕ್ಷರಗಳ ಮೊದಲು ಅಥವಾ ನಂತರದ ಸ್ಥಳಗಳ ಉಪಸ್ಥಿತಿ > ಅಥವಾ >> ಇದು ಅಪ್ರಸ್ತುತವಾಗಿದೆ ಮತ್ತು ಬಳಕೆದಾರರ ಅನುಕೂಲಕ್ಕಾಗಿ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

ನೀವು ಫೈಲ್‌ಗೆ ಮಾತ್ರವಲ್ಲದೆ ಇನ್ನೊಂದು ಆಜ್ಞೆಯ ಇನ್‌ಪುಟ್‌ಗೆ ಅಥವಾ ಸಾಧನಕ್ಕೆ (ಪ್ರಿಂಟರ್‌ನಂತಹ) ಔಟ್‌ಪುಟ್ ಅನ್ನು ಕಳುಹಿಸಬಹುದು. ಆದ್ದರಿಂದ, /home/jim/report.txt ಫೈಲ್‌ನಲ್ಲಿನ ಪದಗಳ ಸಂಖ್ಯೆಯನ್ನು ಎಣಿಸಲು, ನೀವು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು:

$ cat /home/jim/report.txt > wc -w

ಮತ್ತು ಫೈಲ್ ಅನ್ನು ಮುದ್ರಿಸಲು, ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ:

$ cat /home/jim/report.txt > lpr

ನೀವು ನೋಡುವಂತೆ, ಆಪರೇಟರ್ > ಔಟ್ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಆಪರೇಟರ್‌ನಿಂದ ಇದೇ ರೀತಿಯ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ < . ನಿರ್ದಿಷ್ಟ ಫೈಲ್‌ನಲ್ಲಿನ ಪದಗಳ ಸಂಖ್ಯೆಯನ್ನು ಎಣಿಸಲು ಮೇಲಿನ ಉದಾಹರಣೆ ಆಜ್ಞೆಯನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಪುನಃ ಬರೆಯಬಹುದು (ಕಮಾಂಡ್‌ನ ಅನುಪಸ್ಥಿತಿಯನ್ನು ಗಮನಿಸಿ ಬೆಕ್ಕು):

$wc -w< /home/jim/report.txt

ಈ ಮರುನಿರ್ದೇಶನ ಆಯ್ಕೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕೀಬೋರ್ಡ್ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸುವ (ಅಥವಾ ನಿರೀಕ್ಷಿಸುವ) ಆಜ್ಞೆಗಳಿಗಾಗಿ ವಿವಿಧ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಕೆಲವನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ವಾಡಿಕೆಯ ಕಾರ್ಯಾಚರಣೆಗಳು, ಈ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಏನು ನಮೂದಿಸಬೇಕು ಎಂಬುದನ್ನು ಮೊದಲೇ ರೆಕಾರ್ಡ್ ಮಾಡಲಾದ ಫೈಲ್‌ನಿಂದ ನೀವು ಆಜ್ಞೆಗೆ ಅಗತ್ಯವಾದ ಮಾಹಿತಿಯನ್ನು ನೀಡಬಹುದು.

ಚಿಹ್ನೆಗಳು ಎಂಬ ಅಂಶದಿಂದಾಗಿ < , > ಮತ್ತು >> ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸ್ಟ್ರೀಮ್‌ಗಳ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸಿ, ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಮಾಡಿದಂತೆ ಸಾಮಾನ್ಯ ರೀತಿಯಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ ಸ್ವಲ್ಪ ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿಯೂ ಬಳಸಬಹುದು. ಆದ್ದರಿಂದ, ಕೆಳಗಿನ ಆಜ್ಞೆಗಳು ಸಮಾನವಾಗಿವೆ:

$ ಬೆಕ್ಕು > ಫೈಲ್

$cat>ಫೈಲ್

$ >ಫೈಲ್ ಕ್ಯಾಟ್

$ > ಫೈಲ್ ಕ್ಯಾಟ್

ಆದಾಗ್ಯೂ, ಸ್ವತಃ (ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಯಾವುದೇ ಆಜ್ಞೆಯಿಲ್ಲದೆ) ಮರುನಿರ್ದೇಶನ ಚಿಹ್ನೆಯನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಒಬ್ಬರು ಟೈಪ್ ಮಾಡುವ ಮೂಲಕ ಸಾಧ್ಯವಿಲ್ಲ

$file1 > file2

ಕಡತದ ನಕಲನ್ನು ಪಡೆಯಿರಿ. ಆದರೆ ಅದು ಕಡಿಮೆ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನು ನೀಡುವುದಿಲ್ಲ ಈ ಕಾರ್ಯವಿಧಾನ, ಏಕೆಂದರೆ ಯಾವುದೇ ಆಜ್ಞೆಗೆ ಪ್ರಮಾಣಿತ ಹರಿವುಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್ ಮತ್ತು ಔಟ್ಪುಟ್ ಅನ್ನು ಮಾತ್ರ ಮರುನಿರ್ದೇಶಿಸಬಹುದು, ಆದರೆ ಇತರ ಸ್ಟ್ರೀಮ್ಗಳನ್ನು ಸಹ ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ಮರುನಿರ್ದೇಶನ ಚಿಹ್ನೆಯ ಮೊದಲು ಮರುನಿರ್ದೇಶಿಸಲಾದ ಸ್ಟ್ರೀಮ್ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ. ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ stdin ಸಂಖ್ಯೆ 0, ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ stdout ಸಂಖ್ಯೆ 1, ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್ stderr ಸಂಖ್ಯೆ 2. ಅಂದರೆ ಪೂರ್ಣ ಸ್ವರೂಪಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ (ಸಮೀಪದ ಸ್ಥಳಗಳು ಐಚ್ಛಿಕವಾಗಿರುತ್ತವೆ ಎಂಬುದನ್ನು ನೆನಪಿಡಿ):

ಆದೇಶ N>M

ಎಲ್ಲಿ ಎನ್ಮತ್ತು ಎಂ- ಪ್ರಮಾಣಿತ ಸ್ಟ್ರೀಮ್‌ಗಳ ಸಂಖ್ಯೆಗಳು (0,1,2) ಅಥವಾ ಫೈಲ್ ಹೆಸರುಗಳು. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಚಿಹ್ನೆಗಳ ಬಳಕೆ < , > ಮತ್ತು >> ಚಾನಲ್ ಸಂಖ್ಯೆ ಅಥವಾ ಫೈಲ್ ಹೆಸರನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದೆ ಮಾತ್ರ ಸಾಧ್ಯ ಏಕೆಂದರೆ ಕಾಣೆಯಾದ ಸಂಖ್ಯೆಗೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ 1 ಅನ್ನು ಬದಲಿಸಲಾಗಿದೆ, ಅಂದರೆ ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್. ಹೌದು, ಆಪರೇಟರ್ > ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದೆ ಹೀಗೆ ಅರ್ಥೈಸಲಾಗುತ್ತದೆ 1 > .

ಹೊರತುಪಡಿಸಿ ಸರಳ ಮರುನಿರ್ದೇಶನಪ್ರಮಾಣಿತ ಸ್ಟ್ರೀಮ್‌ಗಳು, ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಒಂದು ಅಥವಾ ಇನ್ನೊಂದಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸಲು ಮಾತ್ರವಲ್ಲ, ಪ್ರಮಾಣಿತ ಸ್ಟ್ರೀಮ್‌ನ ವಿಷಯಗಳ ನಕಲನ್ನು ಮಾಡಲು ಸಹ ಸಾಧ್ಯವಿದೆ. ಇದಕ್ಕಾಗಿ ವಿಶೇಷ ಚಿಹ್ನೆ ಇದೆ & , ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾದ ಚಾನಲ್ ಸಂಖ್ಯೆಯ ಮುಂದೆ ಇರಿಸಲಾಗಿದೆ:

ಆದೇಶ N > &M

ಈ ಆಜ್ಞೆಯು ಚಾನಲ್ ಸಂಖ್ಯೆಯ ಔಟ್ಪುಟ್ ಎಂದರ್ಥ ಎನ್ಎರಡನ್ನೂ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಚಾನಲ್ ಸಂಖ್ಯೆಗೆ ನಕಲಿಸಲಾಗುತ್ತದೆ ಎಂ. ಉದಾಹರಣೆಗೆ, ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ದೋಷ ಸಂದೇಶಗಳನ್ನು ನಕಲು ಮಾಡಲು, ನೀವು ಆಜ್ಞೆಯನ್ನು ನೀಡಬೇಕಾಗುತ್ತದೆ 2>&1, ಸಮಯದಲ್ಲಿ 1>&2 stdout ನಿಂದ stderr ಗೆ ನಕಲು ಮಾಡುತ್ತದೆ. ಫೈಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವಾಗ ಈ ವೈಶಿಷ್ಟ್ಯವು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ, ಏಕೆಂದರೆ ನಾವಿಬ್ಬರೂ ಪರದೆಯ ಮೇಲೆ ಸಂದೇಶಗಳನ್ನು ನೋಡುತ್ತೇವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಫೈಲ್‌ಗೆ ಉಳಿಸುತ್ತೇವೆ.

5.5.2 ಆಪರೇಟರ್ |

ಔಟ್ಪುಟ್ ಮರುನಿರ್ದೇಶನಕ್ಕಾಗಿ ವಿಶೇಷ ಆಯ್ಕೆಯನ್ನು ಸಂಘಟಿಸುವುದು ಕಾರ್ಯಕ್ರಮ ಚಾನಲ್(ಕೆಲವೊಮ್ಮೆ ಪೈಪ್ಲೈನ್ ​​ಅಥವಾ ಕನ್ವೇಯರ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ). ಇದನ್ನು ಮಾಡಲು, ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಆಜ್ಞೆಗಳು, ಅಂದರೆ ಹಿಂದಿನದದ ಔಟ್‌ಪುಟ್ ಮುಂದಿನದಕ್ಕೆ ಇನ್‌ಪುಟ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಲಂಬ ಬಾರ್ ಅಕ್ಷರದಿಂದ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ (ಅಥವಾ ನೀವು ಬಯಸಿದಲ್ಲಿ ಪ್ರತ್ಯೇಕಿಸಿ) - "|". ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಆಜ್ಞೆಯ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಚಿಹ್ನೆಯ ಎಡಭಾಗದಲ್ಲಿದೆ | , ಚಿಹ್ನೆಯ ಬಲಭಾಗದಲ್ಲಿರುವ ಪ್ರೋಗ್ರಾಂನ ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ | . ಉದಾಹರಣೆಗೆ:

$ ಬೆಕ್ಕು ನನ್ನ ಫೈಲ್ | grep Linux | wc -l

ಈ ಸಾಲಿನ ಅರ್ಥವೇನೆಂದರೆ ಆಜ್ಞೆಯ ಔಟ್ಪುಟ್ ಬೆಕ್ಕು, ಅಂದರೆ ಫೈಲ್ ಮೈಫೈಲ್‌ನಿಂದ ಪಠ್ಯವನ್ನು ಕಮಾಂಡ್ ಇನ್‌ಪುಟ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ grep, ಇದು "Linux" ಪದವನ್ನು ಹೊಂದಿರುವ ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ಹೈಲೈಟ್ ಮಾಡುತ್ತದೆ. ಕಮಾಂಡ್ ಔಟ್ಪುಟ್ grepಪ್ರತಿಯಾಗಿ, ಆಜ್ಞೆಯ ಇನ್ಪುಟ್ಗೆ ನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ wc -l, ಇದು ಅಂತಹ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಎಣಿಕೆ ಮಾಡುತ್ತದೆ.

ಪ್ರೋಗ್ರಾಂ ಪೈಪ್‌ಗಳನ್ನು ಹಲವಾರು ಸಣ್ಣ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸಂಯೋಜಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ಅದರ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ರೂಪಾಂತರಗಳನ್ನು ಮಾತ್ರ ನಿರ್ವಹಿಸುತ್ತದೆ, ಇದು ಕೆಲವು ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ರೂಪಾಂತರಗಳಿಗೆ ಕಾರಣವಾಗುವ ಸಾಮಾನ್ಯ ಸೂಚನೆಯನ್ನು ರಚಿಸಲು.

ಶೆಲ್ ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಪೈಪ್‌ಲೈನ್‌ನಲ್ಲಿ ಸೇರಿಸಲಾದ ಎಲ್ಲಾ ಆಜ್ಞೆಗಳನ್ನು ಕರೆಯುತ್ತದೆ ಎಂದು ಗಮನಿಸಬೇಕು, ಪ್ರತಿಯೊಂದು ಆಜ್ಞೆಗಳಿಗೆ ಶೆಲ್‌ನ ಪ್ರತ್ಯೇಕ ನಿದರ್ಶನವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಮೊದಲ ಪ್ರೋಗ್ರಾಂ ಅದರ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ನಲ್ಲಿ ಏನನ್ನಾದರೂ ಉತ್ಪಾದಿಸಲು ಪ್ರಾರಂಭಿಸಿದ ತಕ್ಷಣ, ಮುಂದಿನ ಆಜ್ಞೆಯು ಅದನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಅದೇ ರೀತಿಯಲ್ಲಿ, ಪ್ರತಿ ನಂತರದ ಆಜ್ಞೆಯು ತನ್ನದೇ ಆದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಹಿಂದಿನ ಆಜ್ಞೆಯಿಂದ ಡೇಟಾಕ್ಕಾಗಿ ಕಾಯುತ್ತಿದೆ ಮತ್ತು ಅದರ ಫಲಿತಾಂಶಗಳನ್ನು ಮುಂದಿನ ಇನ್ಪುಟ್ ಆಗಿ ಉತ್ಪಾದಿಸುತ್ತದೆ. ಮುಂದಿನದು ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು ಆಜ್ಞೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪೂರ್ಣಗೊಳಿಸಲು ನೀವು ಬಯಸಿದರೆ, ನೀವು ಅದನ್ನು ಪೈಪ್‌ಲೈನ್ ಸಂಕೇತವಾಗಿ ಒಂದು ಸಾಲಿನಲ್ಲಿ ಬಳಸಬಹುದು | , ಮತ್ತು ಸೆಮಿಕೋಲನ್ ; . ಪ್ರತಿ ಅರ್ಧವಿರಾಮ ಚಿಹ್ನೆಯ ಮೊದಲು, ಶೆಲ್ ನಿಲ್ಲುತ್ತದೆ ಮತ್ತು ಪೈಪ್‌ಲೈನ್‌ನಲ್ಲಿ ಸೇರಿಸಲಾದ ಎಲ್ಲಾ ಹಿಂದಿನ ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕಾಯುತ್ತದೆ.

ಪೈಪ್‌ನಿಂದ ನಿರ್ಗಮನ ಸ್ಥಿತಿ (ಪ್ರೋಗ್ರಾಂ ಪೂರ್ಣಗೊಂಡ ನಂತರ ಹಿಂತಿರುಗಿದ ಬೂಲಿಯನ್ ಮೌಲ್ಯ) ಪೈಪ್‌ಲೈನ್‌ನಲ್ಲಿ ಕೊನೆಯ ಆಜ್ಞೆಯಿಂದ ಹಿಂತಿರುಗಿದ ನಿರ್ಗಮನ ಸ್ಥಿತಿಯಂತೆಯೇ ಇರುತ್ತದೆ. ಪೈಪ್‌ಲೈನ್‌ನ ಮೊದಲ ಆಜ್ಞೆಯ ಮುಂದೆ ನೀವು "!" ಚಿಹ್ನೆಯನ್ನು ಹಾಕಬಹುದು, ನಂತರ ಪೈಪ್‌ಲೈನ್‌ನಿಂದ ನಿರ್ಗಮನ ಸ್ಥಿತಿಯು ಕೊನೆಯ ಆಜ್ಞೆಯಿಂದ ನಿರ್ಗಮನ ಸ್ಥಿತಿಯ ತಾರ್ಕಿಕ ನಿರಾಕರಣೆಯಾಗಿದೆ. ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿಸುವ ಮೊದಲು ಎಲ್ಲಾ ಪೈಪ್‌ಲೈನ್ ಆಜ್ಞೆಗಳು ಪೂರ್ಣಗೊಳ್ಳಲು ಶೆಲ್ ಕಾಯುತ್ತದೆ.

5.5.3 ಶೋಧಕಗಳು

ಮೇಲಿನ ಕೊನೆಯ ಉದಾಹರಣೆ (ಆಜ್ಞೆಯೊಂದಿಗೆ grep) ಮತ್ತೊಂದು ಪ್ರಮುಖ ಪರಿಕಲ್ಪನೆಯನ್ನು ವಿವರಿಸಲು ಬಳಸಬಹುದು, ಅವುಗಳೆಂದರೆ ಫಿಲ್ಟರ್ ಪ್ರೋಗ್ರಾಂ. ಫಿಲ್ಟರ್‌ಗಳು ಆಜ್ಞೆಗಳು (ಅಥವಾ ಪ್ರೋಗ್ರಾಂಗಳು) ಇನ್‌ಪುಟ್ ಡೇಟಾ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಅದರ ಮೇಲೆ ಕೆಲವು ರೂಪಾಂತರಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ (ಅದನ್ನು ಬಳಕೆದಾರರ ವಿವೇಚನೆಯಿಂದ ಬೇರೆಡೆಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು). ಫಿಲ್ಟರ್ ಆಜ್ಞೆಗಳು ಈಗಾಗಲೇ ಮೇಲೆ ತಿಳಿಸಲಾದ ಆಜ್ಞೆಗಳನ್ನು ಒಳಗೊಂಡಿವೆ ಬೆಕ್ಕು, ಹೆಚ್ಚು, ಕಡಿಮೆ, wc, cmp, ವ್ಯತ್ಯಾಸ, ಹಾಗೆಯೇ ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಗಳು.

ಕೋಷ್ಟಕ 5.1.ಆಜ್ಞೆಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ

ತಂಡ

ಸಂಕ್ಷಿಪ್ತ ವಿವರಣೆ

grep, fgrep, ಎಗ್ರೆಪ್

ಹುಡುಕುತ್ತಿದ್ದೇನೆ ಇನ್ಪುಟ್ ಫೈಲ್ಅಥವಾ ಪ್ರಮಾಣಿತ ಡೇಟಾ ಇನ್ಪುಟ್ ಲೈನ್, ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಾದರಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಮಾಡಿ

ನೀಡಿರುವ ಪಟ್ಟಿಯಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ನಲ್ಲಿ ಸಂಭವಿಸುವ ಎಲ್ಲಾ ಅಕ್ಷರಗಳನ್ನು ಎರಡನೇ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಟ್ಟಿಯಿಂದ ಅನುಗುಣವಾದ ಅಕ್ಷರಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸುತ್ತದೆ

com

ಸಾಲಿನಿಂದ ಎರಡು ಫೈಲ್‌ಗಳನ್ನು ಹೋಲಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ 3 ಕಾಲಮ್‌ಗಳನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ: ಒಂದು 1 ಫೈಲ್‌ನಲ್ಲಿ ಮಾತ್ರ ಸಂಭವಿಸುವ ಸಾಲುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಎರಡನೆಯದು 2 ನೇ ಫೈಲ್‌ನಲ್ಲಿ ಮಾತ್ರ ಸಂಭವಿಸುವ ಸಾಲುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಮತ್ತು ಮೂರನೆಯದು ಎರಡೂ ಫೈಲ್‌ಗಳಲ್ಲಿ ಗೋಚರಿಸುವ ಸಾಲುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

ಮುದ್ರಣಕ್ಕಾಗಿ ಸ್ವರೂಪಗಳು ಪಠ್ಯ ಫೈಲ್ಅಥವಾ ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್‌ನ ವಿಷಯಗಳು

ಸೆಡ್

ಇನ್‌ಪುಟ್ ಡೇಟಾ ಸ್ಟ್ರೀಮ್‌ನಲ್ಲಿ ಕೆಲವು ರೂಪಾಂತರಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸ್ಟ್ರಿಂಗ್ ಎಡಿಟರ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ (ಫೈಲ್‌ನಿಂದ ಅಥವಾ ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್‌ನಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ)

ವಿಶೇಷ ಫಿಲ್ಟರ್ ಆಜ್ಞೆಯಾಗಿದೆ ಟೀ, ಇದು ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು "ವಿಭಜಿಸುತ್ತದೆ", ಅದನ್ನು ಒಂದು ಬದಿಯಲ್ಲಿ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್‌ಗೆ ಮತ್ತು ಇನ್ನೊಂದು ಫೈಲ್‌ಗೆ ನಿರ್ದೇಶಿಸುತ್ತದೆ (ಯಾರ ಹೆಸರನ್ನು ನೀವು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು). ಆಜ್ಞೆಯನ್ನು ಅದರ ಕ್ರಿಯೆಯಿಂದ ನೋಡುವುದು ಸುಲಭ ಟೀಮರುನಿರ್ದೇಶನ ಆಪರೇಟರ್ ಅನ್ನು ಹೋಲುತ್ತದೆ 1>&ಫೈಲ್.

ಫಿಲ್ಟರ್ಗಳ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಗಮನಾರ್ಹವಾಗಿ ವಿಸ್ತರಿಸಬಹುದು ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗಳು, ಸಂಘಟಿಸಲು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ವಿವಿಧ, ಸಾಮಾನ್ಯವಾಗಿ ಅತ್ಯಂತ ಸಂಕೀರ್ಣವಾದ, ಟೆಂಪ್ಲೇಟ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹುಡುಕಾಟ.

ಮರುನಿರ್ದೇಶನ ಮತ್ತು ಫಿಲ್ಟರ್‌ಗಳ ಬಗ್ಗೆ ಬಹಳಷ್ಟು ಹೇಳಬಹುದು. ಆದರೆ ಈ ವಸ್ತುವು ಯುನಿಕ್ಸ್ ಮತ್ತು ಲಿನಕ್ಸ್‌ನಲ್ಲಿನ ಹೆಚ್ಚಿನ ಪುಸ್ತಕಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ, ಉದಾಹರಣೆಗೆ ಪೀಟರ್ಸನ್ [P1.4] ಮತ್ತು ಕೆಲ್ಲಿ-ಬೂಟ್ಲ್ [P1.8]. ಆದ್ದರಿಂದ, ನಾವು ಹೇಳಿದ್ದಕ್ಕೆ ನಮ್ಮನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತೇವೆ ಮತ್ತು ಶೆಲ್ನಿಂದ ರಚಿಸಲ್ಪಟ್ಟ ಪರಿಸರ ಅಥವಾ ಪರಿಸರ ಎಂದು ಕರೆಯಲ್ಪಡುವದನ್ನು ಪರಿಗಣಿಸಲು ಮುಂದುವರಿಯುತ್ತೇವೆ.

V. ಕೊಸ್ಟ್ರೋಮಿನ್ (ಕೋಸ್ ಮತ್ತು ರಸ್-ಲಿನಕ್ಸ್ ಡಾಟ್ ನೆಟ್) - 5.5. I/O ಮರುನಿರ್ದೇಶನ, ಚಾನಲ್‌ಗಳು ಮತ್ತು ಫಿಲ್ಟರ್‌ಗಳು

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಔಟ್‌ಪುಟ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನೀವು ಈಗಾಗಲೇ ಎರಡು ವಿಧಾನಗಳೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿರುವಿರಿ:

  • ಪರದೆಯ ಮೇಲೆ ಔಟ್ಪುಟ್ ಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ.
  • ಫೈಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿ.
ಕೆಲವೊಮ್ಮೆ ನೀವು ಪರದೆಯ ಮೇಲೆ ಏನನ್ನಾದರೂ ತೋರಿಸಬೇಕು ಮತ್ತು ಫೈಲ್‌ಗೆ ಏನನ್ನಾದರೂ ಬರೆಯಬೇಕು, ಆದ್ದರಿಂದ ಲಿನಕ್ಸ್ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು, ಅಂದರೆ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಸ್ಥಳಕ್ಕೆ ಕಳುಹಿಸುವುದು ಹೇಗೆ ಎಂದು ಕಲಿಯುವುದು. ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳ ಬಗ್ಗೆ ಮಾತನಾಡುವ ಮೂಲಕ ಪ್ರಾರಂಭಿಸೋಣ.

ಪ್ರಮಾಣಿತ ಫೈಲ್ ವಿವರಣೆಗಳು

ಲಿನಕ್ಸ್‌ನಲ್ಲಿರುವ ಎಲ್ಲವೂ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸೇರಿದಂತೆ ಫೈಲ್‌ಗಳಾಗಿವೆ. ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್‌ಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ.

ಪ್ರತಿ ಪ್ರಕ್ರಿಯೆಯು ಒಂಬತ್ತು ತೆರೆದ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಹೊಂದಲು ಅನುಮತಿಸಲಾಗಿದೆ. ಬ್ಯಾಷ್ ಶೆಲ್ ಮೊದಲ ಮೂರು ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಐಡಿ 0, 1 ಮತ್ತು 2 ನೊಂದಿಗೆ ಕಾಯ್ದಿರಿಸುತ್ತದೆ. ಅವುಗಳ ಅರ್ಥ ಇಲ್ಲಿದೆ.

  • 0 , STDIN - ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್.
  • 1, STDOUT - ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್.
  • 2, STDERR - ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್.
ಈ ಮೂರು ವಿಶೇಷ ಹ್ಯಾಂಡಲ್‌ಗಳು ಸ್ಕ್ರಿಪ್ಟ್‌ಗೆ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ.
ನೀವು ಪ್ರಮಾಣಿತ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ನಿಜವಾಗಿಯೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಹೊರಗಿನ ಪ್ರಪಂಚದೊಂದಿಗೆ ಲಿಪಿಗಳ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ಮಿಸಿದ ಅಡಿಪಾಯಕ್ಕೆ ಅವುಗಳನ್ನು ಹೋಲಿಸಬಹುದು. ಅವರ ಬಗ್ಗೆ ವಿವರಗಳನ್ನು ನೋಡೋಣ.

STDIN

STDIN ಶೆಲ್‌ನ ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ಟರ್ಮಿನಲ್‌ಗಾಗಿ, ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್ ಕೀಬೋರ್ಡ್ ಆಗಿದೆ. ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ ಅಕ್ಷರವನ್ನು ಬಳಸಿದಾಗ -< , Linux заменяет дескриптор файла стандартного ввода на тот, который указан в команде. Система читает файл и обрабатывает данные так, будто они введены с клавиатуры.

ಕಮಾಂಡ್ ಲೈನ್ ಡೇಟಾವನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ಫೈಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದ ಹೊರತು ಅನೇಕ ಬ್ಯಾಷ್ ಆಜ್ಞೆಗಳು STDIN ನಿಂದ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಬೆಕ್ಕು ಆಜ್ಞೆಗೆ ಇದು ನಿಜ.

ಯಾವುದೇ ನಿಯತಾಂಕಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದೆಯೇ ನೀವು ಕಮಾಂಡ್ ಪ್ರಾಂಪ್ಟಿನಲ್ಲಿ cat ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿದಾಗ, ಅದು STDIN ನಿಂದ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ನೀವು ಮುಂದಿನ ಸಾಲನ್ನು ನಮೂದಿಸಿದ ನಂತರ, ಬೆಕ್ಕು ಅದನ್ನು ಪರದೆಯ ಮೇಲೆ ಪ್ರದರ್ಶಿಸುತ್ತದೆ.

STDOUT

STDOUT ಶೆಲ್‌ನ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಇದು ಪರದೆಯಾಗಿದೆ. ಹೆಚ್ಚಿನ ಬ್ಯಾಷ್ ಆದೇಶಗಳು STDOUT ಗೆ ಡೇಟಾವನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ, ಅದು ಕನ್ಸೋಲ್‌ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಲು ಕಾರಣವಾಗುತ್ತದೆ. >> ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅದರ ವಿಷಯಗಳಿಗೆ ಸೇರಿಸುವ ಮೂಲಕ ಡೇಟಾವನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು.

ಆದ್ದರಿಂದ ನಾವು ಈ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ಸೇರಿಸಬಹುದಾದ ಡೇಟಾ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ:

Pwd >> myfile
myfile ಫೈಲ್‌ಗೆ ಯಾವ pwd ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಈಗಾಗಲೇ ಅದರಲ್ಲಿರುವ ಡೇಟಾ ಎಲ್ಲಿಯೂ ಹೋಗುವುದಿಲ್ಲ.

ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಇಲ್ಲಿಯವರೆಗೆ ಉತ್ತಮವಾಗಿದೆ, ಆದರೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ xfile ಅನ್ನು ಪ್ರವೇಶಿಸುವ ಮೂಲಕ ನೀವು ಈ ಕೆಳಗಿನಂತೆ ಏನನ್ನಾದರೂ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದರೆ ಏನು ಮಾಡಬೇಕು, ಎಲ್ಲವನ್ನೂ myfile ಗೆ ದೋಷ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.

Ls –l xfile > myfile
ಈ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ನಾವು ಪರದೆಯ ಮೇಲೆ ದೋಷ ಸಂದೇಶಗಳನ್ನು ನೋಡುತ್ತೇವೆ.


ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ

ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ ದೋಷ ಉಂಟಾಗುತ್ತದೆ, ಆದರೆ ಶೆಲ್ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸುವ ಮೂಲಕ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಿಲ್ಲ. ಆದರೆ ಫೈಲ್‌ನಲ್ಲಿ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಸೇರಿಸಬೇಕೆಂದು ನಾವು ಬಯಸಿದ್ದೇವೆ. ಏನು ಮಾಡಬೇಕು? ಉತ್ತರ ಸರಳವಾಗಿದೆ - ಮೂರನೇ ಗುಣಮಟ್ಟದ ವಿವರಣೆಯನ್ನು ಬಳಸಿ.

STDERR

STDERR ಶೆಲ್‌ನ ಪ್ರಮಾಣಿತ ದೋಷ ಸ್ಟ್ರೀಮ್ ಆಗಿದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಈ ಹ್ಯಾಂಡಲ್ STDOUT ಸೂಚಿಸುವ ಅದೇ ವಿಷಯವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಅದಕ್ಕಾಗಿಯೇ ದೋಷ ಸಂಭವಿಸಿದಾಗ ನಾವು ಪರದೆಯ ಮೇಲೆ ಸಂದೇಶವನ್ನು ನೋಡುತ್ತೇವೆ.

ಆದ್ದರಿಂದ, ನಾವು ದೋಷ ಸಂದೇಶಗಳನ್ನು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸುವ ಬದಲು ಲಾಗ್ ಫೈಲ್ ಅಥವಾ ಬೇರೆಡೆಗೆ ಮರುನಿರ್ದೇಶಿಸಲು ಬಯಸುತ್ತೇವೆ ಎಂದು ಹೇಳೋಣ.

▍ಮರುನಿರ್ದೇಶನ ದೋಷ ಹರಿವು

ನಿಮಗೆ ಈಗಾಗಲೇ ತಿಳಿದಿರುವಂತೆ, ಫೈಲ್ ಹ್ಯಾಂಡಲ್ STDERR 2 ಆಗಿದೆ. ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯ ಮೊದಲು ಈ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಇರಿಸುವ ಮೂಲಕ ನಾವು ದೋಷಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸಬಹುದು:

Ls -l xfile 2>myfile cat ./myfile
ದೋಷ ಸಂದೇಶವು ಈಗ myfile ಗೆ ಹೋಗುತ್ತದೆ.


ದೋಷ ಸಂದೇಶವನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

▍ ಮರುನಿರ್ದೇಶನ ದೋಷ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳು

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವಾಗ, ನೀವು ದೋಷ ಸಂದೇಶಗಳು ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಎರಡನ್ನೂ ಮರುನಿರ್ದೇಶಿಸಬೇಕಾದ ಸಂದರ್ಭಗಳು ಇರಬಹುದು. ಇದನ್ನು ಸಾಧಿಸಲು, ನೀವು ಸರಿಯಾದ ವಿವರಣೆಗಳಿಗಾಗಿ ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ, ದೋಷಗಳು ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಹೋಗಬೇಕಾದ ಫೈಲ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ:

Ls –l myfile xfile anotherfile 2> ದೋಷವಿಷಯ 1> ಸರಿಯಾದ ವಿಷಯ

ಮರುನಿರ್ದೇಶನ ದೋಷಗಳು ಮತ್ತು ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್

1> ಕನ್ಸ್ಟ್ರಕ್ಟ್‌ಗೆ ಧನ್ಯವಾದಗಳು ಸರಿಯಾದ ವಿಷಯ ಫೈಲ್‌ಗೆ ls ಆಜ್ಞೆಯು ಸಾಮಾನ್ಯವಾಗಿ STDOUT ಗೆ ಕಳುಹಿಸುವುದನ್ನು ಶೆಲ್ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ. 2> ಮರುನಿರ್ದೇಶನ ಆದೇಶದ ಕಾರಣದಿಂದಾಗಿ STDERR ಗೆ ಹೋಗುವ ದೋಷ ಸಂದೇಶಗಳು ದೋಷದ ವಿಷಯ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತವೆ.

ಅಗತ್ಯವಿದ್ದರೆ, &> ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು STDERR ಮತ್ತು STDOUT ಎರಡನ್ನೂ ಒಂದೇ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು:


STDERR ಮತ್ತು STDOUT ಅನ್ನು ಒಂದೇ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, STDERR ಮತ್ತು STDOUT ಗಾಗಿ ಉದ್ದೇಶಿಸಿರುವುದು ವಿಷಯ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ.

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಎರಡು ವಿಧಾನಗಳಿವೆ:
  • ತಾತ್ಕಾಲಿಕ ಮರುನಿರ್ದೇಶನ, ಅಥವಾ ಏಕ ಸಾಲಿನ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ.
  • ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಔಟ್‌ಪುಟ್‌ನ ಎಲ್ಲಾ ಅಥವಾ ಭಾಗದ ಶಾಶ್ವತ ಮರುನಿರ್ದೇಶನ ಅಥವಾ ಮರುನಿರ್ದೇಶನ.

▍ತಾತ್ಕಾಲಿಕ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ, ನೀವು ಒಂದೇ ಸಾಲಿನ ಔಟ್‌ಪುಟ್ ಅನ್ನು STDERR ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ, STDERR ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಮತ್ತು ಆಂಪರ್ಸಂಡ್ ಅಕ್ಷರದೊಂದಿಗೆ (&):

#!/bin/bash echo "ಇದು ದೋಷ" >&2 ಪ್ರತಿಧ್ವನಿ "ಇದು ಸಾಮಾನ್ಯ ಔಟ್‌ಪುಟ್"
ನೀವು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಿದರೆ, ಎರಡೂ ಸಾಲುಗಳು ಪರದೆಯ ಮೇಲೆ ಗೋಚರಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ನೀವು ಈಗಾಗಲೇ ತಿಳಿದಿರುವಂತೆ, ಡೀಫಾಲ್ಟ್ ದೋಷಗಳು ಸಾಮಾನ್ಯ ಡೇಟಾದಂತೆಯೇ ಅದೇ ಸ್ಥಳದಲ್ಲಿ ಔಟ್ಪುಟ್ ಆಗಿರುತ್ತವೆ.


ತಾತ್ಕಾಲಿಕ ಪುನರ್ನಿರ್ದೇಶನ

STDERR ಔಟ್‌ಪುಟ್ ಫೈಲ್‌ಗೆ ಹೋಗುವಂತೆ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡೋಣ.

./myscript 2> myfile
ನೀವು ನೋಡುವಂತೆ, ಈಗ ಸಾಮಾನ್ಯ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಕನ್ಸೋಲ್‌ಗೆ ಬರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ದೋಷ ಸಂದೇಶಗಳು ಫೈಲ್‌ಗೆ ಹೋಗುತ್ತವೆ.


ದೋಷ ಸಂದೇಶಗಳನ್ನು ಫೈಲ್‌ಗೆ ಬರೆಯಲಾಗಿದೆ

▍ಶಾಶ್ವತ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಬಹಳಷ್ಟು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪರದೆಯ ಮೇಲೆ ಮರುನಿರ್ದೇಶಿಸಬೇಕಾದರೆ, ಪ್ರತಿ ಪ್ರತಿಧ್ವನಿ ಕರೆಗೆ ಸೂಕ್ತವಾದ ಆಜ್ಞೆಯನ್ನು ಸೇರಿಸುವುದು ಅನಾನುಕೂಲವಾಗಿದೆ. ಬದಲಿಗೆ, ನೀವು exec ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಅವಧಿಗೆ ನಿರ್ದಿಷ್ಟ ಹ್ಯಾಂಡಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸುವಂತೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಹೊಂದಿಸಬಹುದು:

#!/bin/bash exec 1>ಔಟ್‌ಫೈಲ್ ಪ್ರತಿಧ್ವನಿ "ಇದು ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಪರೀಕ್ಷೆ" ಪ್ರತಿಧ್ವನಿ "ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನಿಂದ ಮತ್ತೊಂದು ಫೈಲ್‌ಗೆ." ಪ್ರತಿಧ್ವನಿ "ಪ್ರತಿ ಸಾಲನ್ನು ಮರುನಿರ್ದೇಶಿಸದೆಯೇ"
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡೋಣ.


ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಫೈಲ್ ಅನ್ನು ನೀವು ನೋಡಿದರೆ, ಪ್ರತಿಧ್ವನಿ ಆಜ್ಞೆಗಳಿಂದ ಔಟ್‌ಪುಟ್ ಮಾಡಿದ ಎಲ್ಲವೂ ಆ ಫೈಲ್‌ನಲ್ಲಿ ಕೊನೆಗೊಂಡಿರುವುದನ್ನು ನೀವು ಕಾಣಬಹುದು.

exec ಆಜ್ಞೆಯನ್ನು ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಪ್ರಾರಂಭದಲ್ಲಿ ಮಾತ್ರವಲ್ಲದೆ ಇತರ ಸ್ಥಳಗಳಲ್ಲಿಯೂ ಬಳಸಬಹುದು:

#!/bin/bash exec 2>myerror echo "ಇದು ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಪ್ರಾರಂಭ" ಪ್ರತಿಧ್ವನಿ "ಈಗ ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮತ್ತೊಂದು ಸ್ಥಳಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸುತ್ತಿದೆ" exec 1>myfile echo "ಇದು myfile ಫೈಲ್‌ಗೆ ಹೋಗಬೇಕು" echo "ಮತ್ತು ಇದು ಹೋಗಬೇಕು myerror ಫೈಲ್‌ಗೆ" >&2
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿದ ನಂತರ ಮತ್ತು ನಾವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿದ ಫೈಲ್‌ಗಳನ್ನು ನೋಡಿದ ನಂತರ ನೀವು ಪಡೆಯುವುದು ಇದನ್ನೇ.


ವಿಭಿನ್ನ ಫೈಲ್‌ಗಳಿಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

exec ಆಜ್ಞೆಯು ಮೊದಲು STDERR ನಿಂದ ಫೈಲ್ myerror ಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ. ಹಲವಾರು ಪ್ರತಿಧ್ವನಿ ಆಜ್ಞೆಗಳ ಔಟ್‌ಪುಟ್ ಅನ್ನು ನಂತರ STDOUT ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ. exec ಆಜ್ಞೆಯು ನಂತರ STDOUT ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುವ ಯಾವುದನ್ನಾದರೂ ಫೈಲ್ myfile ಗೆ ಕಳುಹಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ ನಾವು ಎಕೋ ಆಜ್ಞೆಯಲ್ಲಿ STDERR ಗೆ ಮರುನಿರ್ದೇಶನ ಆಜ್ಞೆಯನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು ಫೈಲ್ myerror ಗೆ ಅನುಗುಣವಾದ ಸಾಲನ್ನು ಬರೆಯಲು ಕಾರಣವಾಗುತ್ತದೆ.

ಒಮ್ಮೆ ನೀವು ಇದನ್ನು ಮಾಸ್ಟರಿಂಗ್ ಮಾಡಿದ ನಂತರ, ನೀವು ಎಲ್ಲಿ ಹೋಗಬೇಕೆಂದು ನೀವು ಬಯಸುತ್ತೀರೋ ಅಲ್ಲಿಗೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಈಗ ಇನ್ಪುಟ್ ಮರುನಿರ್ದೇಶನದ ಬಗ್ಗೆ ಮಾತನಾಡೋಣ.

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ

ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು, ನಾವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಬಳಸಿದ ಅದೇ ತಂತ್ರವನ್ನು ನೀವು ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ, STDIN ಗಾಗಿ ಫೈಲ್ ಅನ್ನು ಡೇಟಾದ ಮೂಲವನ್ನಾಗಿ ಮಾಡಲು exec ಆಜ್ಞೆಯು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ:

Exec 0< myfile
ಈ ಆಜ್ಞೆಯು ಶೆಲ್‌ಗೆ ಇನ್‌ಪುಟ್ ಮೂಲವು ಸಾಮಾನ್ಯ STDIN ಗಿಂತ ಮೈಫೈಲ್ ಆಗಿರಬೇಕು ಎಂದು ಹೇಳುತ್ತದೆ. ಕ್ರಿಯೆಯಲ್ಲಿ ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನವನ್ನು ನೋಡೋಣ:

#!/bin/bash exec 0< testfile count=1 while read line do echo "Line #$count: $line" count=$(($count + 1)) done
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿದ ನಂತರ ಇದು ಪರದೆಯ ಮೇಲೆ ಕಾಣಿಸುತ್ತದೆ.


ಇನ್ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ಹಿಂದಿನ ಲೇಖನದಲ್ಲಿ, ಕೀಬೋರ್ಡ್‌ನಿಂದ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಓದಲು ಓದುವ ಆಜ್ಞೆಯನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ನೀವು ಕಲಿತಿದ್ದೀರಿ. ಡೇಟಾ ಮೂಲವನ್ನು ಫೈಲ್ ಮಾಡುವ ಮೂಲಕ ನೀವು ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಿದರೆ, STDIN ನಿಂದ ಡೇಟಾವನ್ನು ಓದಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಓದುವ ಆಜ್ಞೆಯು ಅದನ್ನು ಫೈಲ್‌ನಿಂದ ಓದುತ್ತದೆ ಮತ್ತು ಕೀಬೋರ್ಡ್‌ನಿಂದ ಅಲ್ಲ.

ಕೆಲವು ಲಿನಕ್ಸ್ ನಿರ್ವಾಹಕರು ಲಾಗ್ ಫೈಲ್‌ಗಳನ್ನು ಓದಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಈ ವಿಧಾನವನ್ನು ಬಳಸುತ್ತಾರೆ.

ನಿಮ್ಮ ಸ್ವಂತ ಔಟ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನವನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಮೂಲಕ, ನೀವು ಮೂರು ಪ್ರಮಾಣಿತ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳಿಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ. ಹೇಳಿದಂತೆ, ನೀವು ಒಂಬತ್ತು ತೆರೆದ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಹೊಂದಬಹುದು. 3 ರಿಂದ 8 ರವರೆಗಿನ ಉಳಿದ ಆರು, ಇನ್‌ಪುಟ್ ಅಥವಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು ಬಳಸಬಹುದು. ಅವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಫೈಲ್‌ಗೆ ನಿಯೋಜಿಸಬಹುದು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು.

exec ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ಔಟ್ಪುಟ್ ಮಾಡಲು ನೀವು ಹ್ಯಾಂಡಲ್ ಅನ್ನು ನಿಯೋಜಿಸಬಹುದು:

#!/bin/bash exec 3>myfile echo "ಇದು ಪರದೆಯ ಮೇಲೆ ಪ್ರದರ್ಶಿಸಬೇಕು" ಪ್ರತಿಧ್ವನಿ "ಮತ್ತು ಇದನ್ನು ಫೈಲ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಕು" >&3 ಪ್ರತಿಧ್ವನಿ "ಮತ್ತು ಇದು ಪರದೆಯ ಮೇಲೆ ಹಿಂತಿರುಗಬೇಕು"
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ಔಟ್ಪುಟ್ನ ಭಾಗವು ಪರದೆಯ ಮೇಲೆ ಕಾಣಿಸುತ್ತದೆ, ಭಾಗ - ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 3 ನೊಂದಿಗೆ ಫೈಲ್ನಲ್ಲಿ.


ಸ್ವಂತ ಹ್ಯಾಂಡಲ್ ಬಳಸಿ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ

ಡೇಟಾ ಎಂಟ್ರಿಗಾಗಿ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ

ನೀವು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ರೀತಿಯಲ್ಲಿಯೇ ನೀವು ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇನ್‌ಪುಟ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಮೊದಲು STDIN ಅನ್ನು ಮತ್ತೊಂದು ಹ್ಯಾಂಡಲ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ.

ಫೈಲ್ ಅನ್ನು ಓದಿದ ನಂತರ, ನೀವು STDIN ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದು ಮತ್ತು ಅದನ್ನು ಎಂದಿನಂತೆ ಬಳಸಬಹುದು:

#!/bin/bash exec 6<&0 exec 0< myfile count=1 while read line do echo "Line #$count: $line" count=$(($count + 1)) done exec 0<&6 read -p "Are you done now? " answer case $answer in y) echo "Goodbye";; n) echo "Sorry, this is the end.";; esac
ಸನ್ನಿವೇಶವನ್ನು ಪ್ರಯತ್ನಿಸೋಣ.


ಇನ್ಪುಟ್ ಮರುನಿರ್ದೇಶನ

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, STDIN ಗೆ ಉಲ್ಲೇಖವನ್ನು ಸಂಗ್ರಹಿಸಲು ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 6 ಅನ್ನು ಬಳಸಲಾಗಿದೆ. ನಂತರ ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶನವನ್ನು ಮಾಡಲಾಯಿತು, ಫೈಲ್ STDIN ಗಾಗಿ ಡೇಟಾ ಮೂಲವಾಯಿತು. ನಂತರ ರೀಡ್ ಕಮಾಂಡ್‌ಗೆ ಇನ್‌ಪುಟ್ ಮರುನಿರ್ದೇಶಿಸಲಾದ STDIN ನಿಂದ ಬಂದಿದೆ, ಅಂದರೆ ಫೈಲ್‌ನಿಂದ.

ಫೈಲ್ ಅನ್ನು ಓದಿದ ನಂತರ, ಅದನ್ನು ಹ್ಯಾಂಡಲ್ 6 ಗೆ ಮರುನಿರ್ದೇಶಿಸುವ ಮೂಲಕ ನಾವು STDIN ಅನ್ನು ಮರುಹೊಂದಿಸುತ್ತೇವೆ. ಈಗ, ಎಲ್ಲವೂ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು, ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಕೆದಾರರಿಗೆ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುತ್ತದೆ, ಕೀಬೋರ್ಡ್ ಇನ್‌ಪುಟ್‌ಗಾಗಿ ಕಾಯುತ್ತದೆ ಮತ್ತು ನಮೂದಿಸಿದದನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತದೆ.

ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಮುಚ್ಚಲಾಗುತ್ತಿದೆ

ಸ್ಕ್ರಿಪ್ಟ್ ಪೂರ್ಣಗೊಂಡ ನಂತರ ಶೆಲ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಮುಚ್ಚುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ ರನ್ ಆಗುವ ಮೊದಲು ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಮುಚ್ಚುವುದು ಅವಶ್ಯಕ. ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಮುಚ್ಚಲು, ಅದನ್ನು &- ಗೆ ಮರುನಿರ್ದೇಶಿಸಬೇಕು. ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

#!/bin/bash exec 3> myfile echo "ಇದು ಡೇಟಾದ ಪರೀಕ್ಷಾ ಸಾಲು" >&3 exec 3>&- ಪ್ರತಿಧ್ವನಿ "ಇದು ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ" >&3
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ನಾವು ದೋಷ ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ.


ಮುಚ್ಚಿದ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ

ವಿಷಯವೆಂದರೆ ನಾವು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ವಿವರಣೆಯನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ.

ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ಮುಚ್ಚುವಾಗ ಜಾಗರೂಕರಾಗಿರಿ. ನೀವು ಫೈಲ್‌ಗೆ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿದರೆ, ನಂತರ ಹ್ಯಾಂಡಲ್ ಅನ್ನು ಮುಚ್ಚಿ, ನಂತರ ಅದನ್ನು ಮತ್ತೆ ತೆರೆದರೆ, ಶೆಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ ಅನ್ನು ಹೊಸದರೊಂದಿಗೆ ಬದಲಾಯಿಸುತ್ತದೆ. ಅಂದರೆ, ಈ ಫೈಲ್‌ಗೆ ಹಿಂದೆ ಬರೆಯಲಾದ ಎಲ್ಲವೂ ಕಳೆದುಹೋಗುತ್ತದೆ.

ತೆರೆದ ಹಿಡಿಕೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯುವುದು

ಲಿನಕ್ಸ್‌ನಲ್ಲಿ ತೆರೆದಿರುವ ಎಲ್ಲಾ ಹ್ಯಾಂಡಲ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು, ನೀವು lsof ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು. ಫೆಡೋರಾದಂತಹ ಅನೇಕ ವಿತರಣೆಗಳಲ್ಲಿ, lsof ಉಪಯುಕ್ತತೆಯು /usr/sbin ನಲ್ಲಿದೆ. ಈ ಆಜ್ಞೆಯು ಸಾಕಷ್ಟು ಉಪಯುಕ್ತವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಸಿಸ್ಟಂನಲ್ಲಿ ತೆರೆದಿರುವ ಪ್ರತಿಯೊಂದು ಹ್ಯಾಂಡಲ್ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಹಿನ್ನಲೆಯಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರಕ್ರಿಯೆಗಳಿಂದ ಏನು ತೆರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಲಾಗ್-ಇನ್ ಮಾಡಿದ ಬಳಕೆದಾರರಿಂದ ಏನು ತೆರೆಯಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಇದು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಈ ಆಜ್ಞೆಯು ಅನೇಕ ಕೀಲಿಗಳನ್ನು ಹೊಂದಿದೆ, ಪ್ರಮುಖವಾದವುಗಳನ್ನು ನೋಡೋಣ.

  • -p ಪ್ರಕ್ರಿಯೆ ID ಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
  • -d ನೀವು ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ಬಯಸುವ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಪ್ರಸ್ತುತ ಪ್ರಕ್ರಿಯೆಯ PID ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು, ನೀವು ವಿಶೇಷ ಪರಿಸರ ವೇರಿಯಬಲ್ $$ ಅನ್ನು ಬಳಸಬಹುದು, ಅದರಲ್ಲಿ ಶೆಲ್ ಪ್ರಸ್ತುತ PID ಅನ್ನು ಬರೆಯುತ್ತದೆ.

ಇತರ ಎರಡು ಸ್ವಿಚ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಹಿಂತಿರುಗಿದ ಫಲಿತಾಂಶಗಳ ಮೇಲೆ ತಾರ್ಕಿಕ ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸಲು -a ಸ್ವಿಚ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ:

Lsof -a -p $$ -d 0,1,2

ತೆರೆದ ಹಿಡಿಕೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ

STDIN, STDOUT ಮತ್ತು STDERR ಗೆ ಸಂಬಂಧಿಸಿದ ಫೈಲ್‌ಗಳ ಪ್ರಕಾರವು CHR (ಕ್ಯಾರೆಕ್ಟರ್ ಮೋಡ್) ಆಗಿದೆ. ಅವೆಲ್ಲವೂ ಟರ್ಮಿನಲ್‌ಗೆ ಸೂಚಿಸುವುದರಿಂದ, ಫೈಲ್ ಹೆಸರು ಟರ್ಮಿನಲ್‌ಗೆ ನಿಯೋಜಿಸಲಾದ ಸಾಧನದ ಹೆಸರಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಎಲ್ಲಾ ಮೂರು ಪ್ರಮಾಣಿತ ಫೈಲ್‌ಗಳು ಓದಬಲ್ಲವು ಮತ್ತು ಬರೆಯಬಲ್ಲವು.

ಸ್ಕ್ರಿಪ್ಟ್‌ನಿಂದ lsof ಆಜ್ಞೆಯನ್ನು ಕರೆಯುವುದನ್ನು ನೋಡೋಣ, ಇದರಲ್ಲಿ ಪ್ರಮಾಣಿತ ಪದಗಳಿಗಿಂತ ಹೆಚ್ಚುವರಿಯಾಗಿ, ಇತರ ವಿವರಣೆಗಳು ತೆರೆದಿರುತ್ತವೆ:

#!/bin/bash exec 3> myfile1 exec 6> myfile2 exec 7< myfile3 lsof -a -p $$ -d 0,1,2,3,6,7
ನೀವು ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡಿದರೆ ಏನಾಗುತ್ತದೆ.


ಸ್ಕ್ರಿಪ್ಟ್ ಮೂಲಕ ತೆರೆಯಲಾದ ಫೈಲ್ ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ

ಸ್ಕ್ರಿಪ್ಟ್ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ (3 ಮತ್ತು 6) ಮತ್ತು ಇನ್‌ಪುಟ್‌ಗಾಗಿ (7) ಎರಡು ಹ್ಯಾಂಡಲ್‌ಗಳನ್ನು ತೆರೆಯಿತು. ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಬಳಸಲಾದ ಫೈಲ್‌ಗಳಿಗೆ ಮಾರ್ಗಗಳನ್ನು ಸಹ ತೋರಿಸಲಾಗಿದೆ.

ಔಟ್ಪುಟ್ ನಿಗ್ರಹ

ಕೆಲವೊಮ್ಮೆ ನೀವು ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಆಜ್ಞೆಗಳನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು, ಉದಾಹರಣೆಗೆ, ಹಿನ್ನೆಲೆ ಪ್ರಕ್ರಿಯೆಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು, ಪರದೆಯ ಮೇಲೆ ಏನನ್ನೂ ಪ್ರದರ್ಶಿಸಬೇಡಿ. ಇದನ್ನು ಮಾಡಲು, ನೀವು ಔಟ್‌ಪುಟ್ ಅನ್ನು /dev/null ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಇದು "ಕಪ್ಪು ರಂಧ್ರ" ದಂತಿದೆ.

ದೋಷ ಸಂದೇಶಗಳನ್ನು ಹೇಗೆ ನಿಗ್ರಹಿಸುವುದು ಎಂಬುದರ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:

Ls -al ಬ್ಯಾಡ್‌ಫೈಲ್ ಇನ್ನೊಂದು ಫೈಲ್ 2> /dev/null
ಉದಾಹರಣೆಗೆ, ನೀವು ಫೈಲ್ ಅನ್ನು ಅಳಿಸದೆಯೇ ಅದನ್ನು ತೆರವುಗೊಳಿಸಬೇಕಾದರೆ ಅದೇ ವಿಧಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ:

Cat /dev/null > myfile

ಫಲಿತಾಂಶಗಳು

ಆಜ್ಞಾ ಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಇನ್‌ಪುಟ್ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ಇಂದು ನೀವು ಕಲಿತಿದ್ದೀರಿ. ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು, ಅವುಗಳನ್ನು ರಚಿಸುವುದು, ವೀಕ್ಷಿಸುವುದು ಮತ್ತು ಮುಚ್ಚುವುದು ಮತ್ತು ಇನ್‌ಪುಟ್, ಔಟ್‌ಪುಟ್ ಮತ್ತು ದೋಷ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸುವ ಬಗ್ಗೆ ಈಗ ನಿಮಗೆ ತಿಳಿದಿದೆ. ಬ್ಯಾಷ್ ಲಿಪಿಗಳ ಬೆಳವಣಿಗೆಯಲ್ಲಿ ಇದೆಲ್ಲವೂ ಬಹಳ ಮುಖ್ಯ.

ಮುಂದಿನ ಬಾರಿ ನಾವು ಲಿನಕ್ಸ್ ಸಿಗ್ನಲ್‌ಗಳು, ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು, ನಿಗದಿತ ಕೆಲಸಗಳು ಮತ್ತು ಹಿನ್ನೆಲೆ ಕಾರ್ಯಗಳ ಕುರಿತು ಮಾತನಾಡುತ್ತೇವೆ.

ಆತ್ಮೀಯ ಓದುಗರೇ! ಈ ವಸ್ತುವು ಇನ್ಪುಟ್, ಔಟ್ಪುಟ್ ಮತ್ತು ದೋಷ ಸ್ಟ್ರೀಮ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಎಲ್ಲದರ ಬಗ್ಗೆ ನಿಮಗೆ ಅನುಭವದೊಂದಿಗೆ ಮಾತ್ರ ಹೇಳಬಲ್ಲ ವೃತ್ತಿಪರರು ನಿಮ್ಮ ನಡುವೆ ಇದ್ದಾರೆ ಎಂದು ನಮಗೆ ಖಚಿತವಾಗಿದೆ. ಹಾಗಿದ್ದಲ್ಲಿ, ನಾವು ನಿಮಗೆ ನೆಲವನ್ನು ರವಾನಿಸುತ್ತೇವೆ.

ಮರುನಿರ್ದೇಶನವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಆಜ್ಞೆಗಳ ನಡುವೆ ">" ವಿಶೇಷ ಅಕ್ಷರವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಸಾಧಿಸಲಾಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಸಿಂಟ್ಯಾಕ್ಸ್ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

Command1 > file1

ಕಮಾಂಡ್ 1 ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಫೈಲ್ 1 ಗೆ ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಬರೆಯುತ್ತದೆ.

ತಂಡ 1< файл1

ಫೈಲ್1 ಅನ್ನು ಇನ್‌ಪುಟ್ ಮೂಲವಾಗಿ ಬಳಸಿಕೊಂಡು ಕಮಾಂಡ್ 1 ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ (ಕೀಬೋರ್ಡ್ ಬದಲಿಗೆ).

ತಂಡ 1< файл1 >ಫೈಲ್2

ಎರಡನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ ಹಿಂದಿನ ಆವೃತ್ತಿಗಳು. file1 ನಿಂದ ಇನ್‌ಪುಟ್ ಮತ್ತು file2 ಗೆ ಔಟ್‌ಪುಟ್‌ನೊಂದಿಗೆ command1 ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ

ಕನ್ವೇಯರ್ಗಳು

ಪೈಪ್‌ಲೈನ್‌ಗಳು ಒಂದು ಪ್ರೋಗ್ರಾಂನ ಔಟ್‌ಪುಟ್ ಮಧ್ಯಂತರ ಬಳಕೆಯಿಲ್ಲದೆ ನೇರವಾಗಿ ಇನ್‌ಪುಟ್‌ಗೆ ಹೋದಾಗ ಹಲವಾರು ಪ್ರೋಗ್ರಾಂಗಳು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವಾಗಿದೆ. ತಾತ್ಕಾಲಿಕ ಕಡತಗಳು. ವಾಕ್ಯ ರಚನೆ:

ತಂಡ1 | ತಂಡ 2

ಕಮಾಂಡ್ 2 ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಅದರ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಆಗಿ ಬಳಸಿಕೊಂಡು ಕಮಾಂಡ್ 1 ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಇದು ಎರಡು ಮರುನಿರ್ದೇಶನಗಳು ಮತ್ತು ತಾತ್ಕಾಲಿಕ ಫೈಲ್ ಅನ್ನು ಬಳಸುವುದಕ್ಕೆ ಸಮನಾಗಿರುತ್ತದೆ:

Command1 > TemporaryFile command2< ВременныйФайл rm ВременныйФайл

ಕಮಾಂಡ್ ಪೈಪ್‌ಲೈನ್‌ಗಳ ಉತ್ತಮ ಉದಾಹರಣೆಯೆಂದರೆ ಸಂವಾದಾತ್ಮಕವಲ್ಲದ ಪರಿಸರದಲ್ಲಿ ಸಂವಾದಾತ್ಮಕತೆಯನ್ನು ಸಾಧಿಸಲು ಮತ್ತೊಂದು ಆಜ್ಞೆಯೊಂದಿಗೆ ಪ್ರತಿಧ್ವನಿಯನ್ನು ಸಂಯೋಜಿಸುವುದು, ಉದಾಹರಣೆಗೆ:

echo -e "ಬಳಕೆದಾರಹೆಸರು\nಪಾಸ್ವರ್ಡ್" | ftp ಲೋಕಲ್ ಹೋಸ್ಟ್

ಇದು ಸ್ಥಳೀಯ ಹೋಸ್ಟ್‌ಗೆ ಬಳಕೆದಾರಹೆಸರು ಎಂದು ಸಂಪರ್ಕಿಸುವ ಕ್ಲೈಂಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, Enter ಅನ್ನು ಒತ್ತಿ ಮತ್ತು ನಂತರ ಪಾಸ್‌ವರ್ಡ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸುತ್ತದೆ.

ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳಿಗೆ ಮರುನಿರ್ದೇಶನ

ತಂಡದಲ್ಲಿ UNIX ಶೆಲ್, ಇದು ಬೌರ್ನ್ ಶೆಲ್‌ನಿಂದ ಹುಟ್ಟಿಕೊಂಡಿದೆ, ಮರುನಿರ್ದೇಶನ ಅಕ್ಷರದ ಮೊದಲು ತಕ್ಷಣವೇ ಸಂಖ್ಯೆಯನ್ನು (ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್) ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ಹಿಂದಿನ ಎರಡು ಹಂತಗಳನ್ನು ಸುಧಾರಿಸಬಹುದು. ಮರುನಿರ್ದೇಶನಕ್ಕಾಗಿ ಯಾವ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಈ ಸಂಖ್ಯೆ ಸೂಚಿಸುತ್ತದೆ. UNIX ಕೆಳಗಿನ ಪ್ರಮಾಣಿತ ಇನ್‌ಪುಟ್/ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಹೊಂದಿದೆ:

ಉದಾಹರಣೆಗೆ:

Command1 2 > file1

ಸಿ ಶೆಲ್‌ನಿಂದ ಪಡೆದ ಕಮಾಂಡ್ ಶೆಲ್‌ಗಳಲ್ಲಿ, ಸಿಂಟ್ಯಾಕ್ಸ್ ನಿಯಮಗಳ ಪ್ರಕಾರ, ಮರುನಿರ್ದೇಶನವನ್ನು ಕೈಗೊಳ್ಳುವ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಸೂಚಿಸಲು, ನೀವು ಮರುನಿರ್ದೇಶನ ಅಕ್ಷರದ ನಂತರ & ಅಕ್ಷರವನ್ನು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ.

ಸಾಮಾನ್ಯವಾಗಿ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಎರರ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗುತ್ತದೆ ಇದರಿಂದ ದೋಷಗಳು ಮತ್ತು ಸಾಮಾನ್ಯ ಪ್ರೋಗ್ರಾಂ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಒಟ್ಟಿಗೆ ನಿರ್ವಹಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ:

/ -name .profile> results.txt 2>&1 ಅನ್ನು ಹುಡುಕಿ

.profile ಹೆಸರಿನ ಎಲ್ಲಾ ಫೈಲ್‌ಗಳನ್ನು ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ನೀವು ಮರುನಿರ್ದೇಶನಗಳಿಲ್ಲದೆ ಈ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿದರೆ, ಇದು ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳನ್ನು ಗೆ ನಿರ್ದೇಶಿಸುತ್ತದೆ ಮತ್ತು ದೋಷ ಸಂದೇಶಗಳನ್ನು (ಉದಾಹರಣೆಗೆ, ಸಂರಕ್ಷಿತ ಡೈರೆಕ್ಟರಿಗಳಲ್ಲಿ ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸುವಾಗ ಸಾಕಷ್ಟು ಪ್ರವೇಶ ಹಕ್ಕುಗಳ ಬಗ್ಗೆ) ಗೆ ನಿರ್ದೇಶಿಸುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಈ ಪಾತ್ರಗಳನ್ನು ಕನ್ಸೋಲ್ ನಿರ್ವಹಿಸುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫಲಿತಾಂಶಗಳ ಫೈಲ್‌ಗೆ ನಿರ್ದೇಶಿಸಿದರೆ, ದೋಷಗಳನ್ನು ಇನ್ನೂ ಕನ್ಸೋಲ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ದೋಷಗಳು ಮತ್ತು ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳೆರಡನ್ನೂ results.txt ಫೈಲ್‌ಗೆ ಕಳುಹಿಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ಪ್ರಮಾಣಿತ ದೋಷ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ಬಳಸಿ ಸಂಯೋಜಿಸಲಾಗಿದೆ 2>&1 .

ಬರವಣಿಗೆ 2>&1 ಮೊದಲು > ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಇಂಟರ್ಪ್ರಿಟರ್ ಓದಿದಾಗ 2>&1 , ಪ್ರಮಾಣಿತ ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಎಲ್ಲಿ ಮರುನಿರ್ದೇಶಿಸಲಾಗಿದೆ ಎಂಬುದು ಇನ್ನೂ ತಿಳಿದಿಲ್ಲ, ಆದ್ದರಿಂದ ದೋಷ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್‌ಗಳನ್ನು ವಿಲೀನಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ.

ಸಂಯೋಜಿತ ಫಲಿತಾಂಶವನ್ನು ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಂನ ಇನ್ಪುಟ್ಗೆ ಪೈಪ್ ಮಾಡಬೇಕಾದರೆ, ನಂತರ ಅನುಕ್ರಮ 2>&1 ಕನ್ವೇಯರ್ ಚಿಹ್ನೆಯ ಮುಂದೆ ಇರಬೇಕು. ಉದಾಹರಣೆಗೆ:

ಹುಡುಕಿ / -ಹೆಸರು .ಪ್ರೊಫೈಲ್ 2>&1 | ಕಡಿಮೆ

ಸರಳೀಕೃತ ಕಮಾಂಡ್ ಫಾರ್ಮ್:

ಕಮಾಂಡ್> ಫೈಲ್2>&1

ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಕಮಾಂಡ್ &> ಫೈಲ್

ಕಮಾಂಡ್>&ಫೈಲ್

ಕನ್ವೇಯರ್ ಚೈನ್

ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಆಜ್ಞೆಗಳನ್ನು ಉತ್ಪಾದಿಸಲು ಮರುನಿರ್ದೇಶನ ಮತ್ತು ಪೈಪಿಂಗ್ ಆಜ್ಞೆಗಳನ್ನು ಒಟ್ಟಿಗೆ ಜೋಡಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ:

ls | grep ".sh" | ವಿಂಗಡಿಸು> ಪಟ್ಟಿ

ಪ್ರಸ್ತುತ ಡೈರೆಕ್ಟರಿಯ ವಿಷಯಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯುತ್ತದೆ, ಅದನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲಾಗಿದ್ದು, ಒಳಗೊಂಡಿರುವ ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ಬಿಟ್ಟುಬಿಡುತ್ತದೆ ".ಶ್", ನಂತರ ಈ ಫಿಲ್ಟರ್ ಮಾಡಿದ ಪಟ್ಟಿಯನ್ನು ಲೆಕ್ಸಿಕಲಿಯಾಗಿ ವಿಂಗಡಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅಂತಿಮ ಫಲಿತಾಂಶವನ್ನು ಫೈಲ್‌ಗೆ ಹಾಕಲಾಗುತ್ತದೆ shlist. ಈ ಪ್ರಕಾರದ ರಚನೆಗಳು UNIX ಶೆಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚಾಗಿ ಕಂಡುಬರುತ್ತವೆ.

ಬಹು ಪಿನ್‌ಗಳಿಗೆ ಮರುನಿರ್ದೇಶನ

ಪ್ರಮಾಣಿತ ಆಜ್ಞೆಯು ಕಮಾಂಡ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಅನೇಕ ಸ್ಥಳಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ. ಉದಾಹರಣೆ:

Ls -lrt | ಟೀ ಫೈಲ್ 1

ಆಜ್ಞೆಯ ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್ ಅನ್ನು ನಿರ್ದೇಶಿಸುತ್ತದೆ ls -lrt(ಫೈಲ್‌ಗಳ ಪಟ್ಟಿ) ಕನ್ಸೋಲ್‌ನಲ್ಲಿ ಮತ್ತು ಒಳಗೆ ಫೈಲ್1.

ಅನುಬಂಧದೊಂದಿಗೆ ಮರುನಿರ್ದೇಶನ

IN ಕಮಾಂಡ್ ಶೆಲ್ನೀವು ಕೊನೆಯಲ್ಲಿ ಲಗತ್ತಿಸಲಾದ ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಫೈಲ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಮಾಹಿತಿಯನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಎಲ್ಲಾ ಹೊಸ ಮಾಹಿತಿಈ ಫೈಲ್‌ನ ಅಂತ್ಯಕ್ಕೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ವಾಕ್ಯ ರಚನೆ:

ಕಮಾಂಡ್ 1 >> ಫೈಲ್ 1

ಎಂಬೆಡೆಡ್ ಡಾಕ್ಯುಮೆಂಟ್

ಕೆಲವು ಶೆಲ್‌ಗಳು, ಮತ್ತು ಅನ್ವಯಿಕ ಭಾಷೆಗಳು (PHP), ಪರ್ಲ್, ಅಂತರ್ನಿರ್ಮಿತ ದಾಖಲೆಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ಹೆರೆಡಾಕ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ನೋಡಿ), ಇದು ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ನಿಂದಲೇ ಇನ್‌ಪುಟ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ನಿರ್ದೇಶಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ: ಬೆಕ್ಕು « EOF ಯಾವುದೇ ಸೇರಿದಂತೆ ಪಠ್ಯವನ್ನು ಇಲ್ಲಿ ಇರಿಸಲಾಗಿದೆ ವಿಶೇಷ ಪಾತ್ರಗಳು EOF

ಎಂಬೆಡೆಡ್ ಡಾಕ್ಯುಮೆಂಟ್ EOF ನ ಅಂತ್ಯದ ಅಂತಿಮ ಸಹಿ (ಅನಿಯಂತ್ರಿತ ಮೌಲ್ಯವನ್ನು ಬಳಸಬಹುದು, ಆದರೆ EOF ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ - ಅರ್ಥದ ಪ್ರಕಾರ) ಸಾಲಿನ ಆರಂಭದಲ್ಲಿ ಪ್ರಾರಂಭವಾಗಬೇಕು.