ಮತ್ತೊಂದು ಶುಕ್ರವಾರಕ್ಕೆ ಸ್ವಾಗತ ...
ಟರ್ಮಿನಲ್ನ ಒಂದು ಸಣ್ಣ ಭಾಗವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವ ಸಮಯ ಇದು. ಹೆಚ್ಚಿನ ಆಲೋಚನೆಯ ನಂತರ ನಾನು ಅದರ ಬಗ್ಗೆ ಪೋಸ್ಟ್ ರಚಿಸಲು ನಿರ್ಧರಿಸಿದೆ ಪ್ರಮಾಣಿತ ಹೊಳೆಗಳು; ಇದು ಮೇಲ್ನೋಟಕ್ಕೆ ಇದ್ದರೂ, ಇದು ಪ್ರತಿಯೊಬ್ಬರೂ ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ವಿಷಯ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.
ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸ್ಟ್ರೀಮ್
ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸ್ಟ್ರೀಮ್ ಇದು ಬಳಕೆದಾರ ಮತ್ತು ಟರ್ಮಿನಲ್ ನಡುವಿನ ಹಲವಾರು ಸಂವಹನ ಚಾನಲ್ಗಳಿಂದ ಕೂಡಿದೆ. ಈ ಇನ್ಪುಟ್ / put ಟ್ಪುಟ್ "ಚಾನಲ್ಗಳು" ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದಾಗ ಮಾಹಿತಿಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ ಅಥವಾ ಸೆರೆಹಿಡಿಯುತ್ತದೆ.
3 I / O ಸಂಪರ್ಕಗಳು ಹೀಗಿವೆ: ಸ್ಟಡಿನ್ ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್, stdout ಪ್ರಮಾಣಿತ .ಟ್ಪುಟ್, stderr ಪ್ರಮಾಣಿತ ದೋಷ.
stdin: ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಇನ್ಪುಟ್
ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಇನ್ಪುಟ್ ಎನ್ನುವುದು ನಾವು ಆಜ್ಞೆಯಿಂದ ಮಾಹಿತಿಯನ್ನು ಪೈಪ್ಗಳು, ಪುನರ್ನಿರ್ದೇಶನ, ಕೀಬೋರ್ಡ್ ಇತ್ಯಾದಿಗಳ ಮೂಲಕ ಸೆರೆಹಿಡಿಯುವ ವಿಧಾನವಾಗಿದೆ. ನಾವು ಅದನ್ನು ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 0 ನೊಂದಿಗೆ ಗುರುತಿಸುತ್ತೇವೆ.
ಸ್ಟಡಿನ್ನ ಉದಾಹರಣೆ ಹೀಗಿರುತ್ತದೆ:
ವಿಂಗಡಿಸಿ <ಪಟ್ಟಿ
ಇದು ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ - ಈ ಸಂದರ್ಭದಲ್ಲಿ ಯಾದೃಚ್ ly ಿಕವಾಗಿ ಬರೆಯಲಾದ ಸಂಖ್ಯೆಗಳು - ಮತ್ತು ಫೈಲ್ ಅನ್ನು ls ಆಜ್ಞೆಗೆ ಮರುನಿರ್ದೇಶಿಸುವಾಗ, ಅದು ಸಂಖ್ಯಾತ್ಮಕ ಪಟ್ಟಿಯನ್ನು ವರ್ಣಮಾಲೆಯಂತೆ ವಿಂಗಡಿಸುತ್ತದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ ಧ್ವಜಗಳು ಸೂಚ್ಯವಾಗಿವೆ.
stdout: ಸ್ಟ್ಯಾಂಡರ್ಡ್ .ಟ್ಪುಟ್
ಸ್ಟ್ಯಾಂಡರ್ಡ್ output ಟ್ಪುಟ್, ಅದರ ಹೆಸರೇ ಸೂಚಿಸುವಂತೆ, ಆಜ್ಞೆಯ output ಟ್ಪುಟ್ ಅನ್ನು ಕನ್ಸೋಲ್ ಮೂಲಕ ತೋರಿಸುತ್ತದೆ. ನಾವು ls ಅನ್ನು ಬರೆದರೆ ಅದು ಪರದೆಯ ಮೇಲೆ ನಮಗೆ ತೋರಿಸುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯು ಪ್ರಮಾಣಿತ .ಟ್ಪುಟ್ ಆಗಿದೆ. ಇದನ್ನು ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 1 ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.
ಈಗ ನಾನು ಬ್ಯಾಷ್ ಹಾಹಾಹಾವನ್ನು ಪ್ರೀತಿಸುವ ಕಾರಣ, ಬ್ಯಾಷ್ನಲ್ಲಿ ಬರೆದ ಸ್ಕ್ರಿಪ್ಟ್ನೊಂದಿಗೆ ಎಸ್ಡಿಡಿಎನ್ ಮತ್ತು ಸ್ಟಡೌಟ್ ಅನ್ನು ತ್ವರಿತಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ. 🙂
test.sh
#! / ಬಿನ್ / ಬ್ಯಾಷ್ ವೇಳೆ [-t 0]; ನಂತರ "ನೀವು stdout ಅನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ" ಎಲಿಫ್ [-t 1] ಅನ್ನು ಪ್ರತಿಧ್ವನಿಸಿ; ನಂತರ "ನೀವು stdin ಅನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ" ಇಲ್ಲದಿದ್ದರೆ ಪ್ರತಿಧ್ವನಿ "ಕ್ರೂರ ದೋಷ" fi
ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ತೋರಿಸುವ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಈಗ. ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಕೆಯೊಂದಿಗೆ ಪೈಪ್ ಅನ್ನು ಮರುನಿರ್ದೇಶಿಸುವಾಗ ಅಥವಾ ಬಳಸುವಾಗ ಪರೀಕ್ಷೆ -ಟಿ stdout ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಮಾತ್ರ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆಯೆ ಎಂದು ತಿಳಿಯಲು, ಮತ್ತು ಇಲ್ಲದಿದ್ದರೆ ಅದು ಸ್ಪಷ್ಟವಾಗಿ stdin ಆಗಿದೆ.
bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
ಆಜ್ಞೆಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಮರೆಯದಿರಿ ಮತ್ತು ಅಭ್ಯಾಸ ಮಾಡಿ ಆದ್ದರಿಂದ ನೀವು ಕಲಿಯಿರಿ.
stderr: ಪ್ರಮಾಣಿತ ದೋಷ
ಪ್ರೋಗ್ರಾಂಗಳು ದೋಷಗಳು ಅಥವಾ ರೋಗನಿರ್ಣಯವನ್ನು ಪ್ರದರ್ಶಿಸುವ ವಿಧಾನವೆಂದರೆ ಪ್ರಮಾಣಿತ ದೋಷ. ಇದನ್ನು ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 2 ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.
ಪರಿಕಲ್ಪನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಇದು ಪರಿಸ್ಥಿತಿ: ನಾವು ಆಜ್ಞೆಯಿಂದ ದೋಷವನ್ನು ಉಳಿಸಲು ಬಯಸಿದಾಗ, ನಾವು ಮೊದಲು ಯೋಚಿಸುವುದು output ಟ್ಪುಟ್ ಅನ್ನು ಸರಳ ಪಠ್ಯಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸುವುದು.
ls> info.txt
ಇದು ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆಜ್ಞೆಯ ಮಾಹಿತಿಯನ್ನು ಸರಳ ಪಠ್ಯ ಫೈಲ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಆದರೆ ದೋಷವನ್ನು ಉಳಿಸುವಾಗ, ಅದು ಅದನ್ನು ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅದನ್ನು ಪರದೆಯ ಮೇಲೆ ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಸರಳ ಪಠ್ಯ ಫೈಲ್ ಖಾಲಿಯಾಗಿದೆ.
ಫೈಲ್ನಲ್ಲಿ stderr ಅನ್ನು ಉಳಿಸಲು ಸೂಚಿಸಲು ನಾವು 2> ಅನ್ನು ಬಳಸಿದರೆ:
ls foo 2> info.txt
ಈಗ ಅದು ಪಠ್ಯ ಫೈಲ್ನಲ್ಲಿ ದೋಷ ಮಾಹಿತಿಯನ್ನು ಉಳಿಸುತ್ತದೆ.
ಹೆಚ್ಚಿನವು ಶೆಲ್ &> ನೊಂದಿಗೆ ಒಂದೇ ಕಮಾಂಡ್ ಆಜ್ಞೆಯಲ್ಲಿ stderr ಮತ್ತು stdout ಅನ್ನು ಸಂಗ್ರಹಿಸಲು ಅನುಮತಿಸಿ, ಅಲ್ಲಿ Foo ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಡೈರೆಕ್ಟರಿ
ls ಡೌನ್ಲೋಡ್ಗಳು Foo &> info.txt
ಈ ಫೈಲ್ ಫೂನಲ್ಲಿ ಎಲ್ಎಸ್ ಅನ್ನು ಚಾಲನೆ ಮಾಡುವಾಗ ದೋಷದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ ಮತ್ತು ಡೌನ್ಲೋಡ್ಗಳ ಅಡಿಯಲ್ಲಿ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.
ಮತ್ತು ಅಂತಿಮವಾಗಿ, ಅದು ಏನು ಪ್ರಸಿದ್ಧವಾಗಿದೆ 2> & 1?
ಸರಳ, stderr ಅನ್ನು stdout ಗೆ ಮರುನಿರ್ದೇಶಿಸಿ. ಅದು ಮತ್ತು> ಮತ್ತು 1 ರ ಮಧ್ಯದಲ್ಲಿ ಅದು stdout ಗೆ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ ಎಂದರ್ಥ. ಅದು ಇಲ್ಲದಿದ್ದರೆ, ಅದು ಹೀಗಿರುತ್ತದೆ ... "ದೋಷವನ್ನು ಫೈಲ್ 1 ಗೆ ಮರುನಿರ್ದೇಶಿಸಿ".
ಮತ್ತು ಇದರೊಂದಿಗೆ ಮರುನಿರ್ದೇಶಿಸಲು ಸಾಧ್ಯವಿದೆ:
- ಫೈಲ್ಗೆ stdout
- ಫೈಲ್ಗೆ stderr
- stdout to stderr
- stderr to stdout
- ಫೈಲ್ಗೆ stderr ಮತ್ತು stdout
- ಇತರರಲ್ಲಿ
ಇಂದಿನ ಜನರಿಗೆ ಅದು ಇಲ್ಲಿದೆ. ನಾವು ಓದಿದ್ದೇವೆ ಮತ್ತು ನಿಲ್ಲಿಸಿದ್ದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು. 😀
ಆಸಕ್ತಿದಾಯಕ. ನಿಮ್ಮ ಟ್ಯುಟೋರಿಯಲ್ ಗೆ ಧನ್ಯವಾದಗಳು, ನಾನು ಬ್ಯಾಷ್ ಅನ್ನು ಹೆಚ್ಚು ಇಷ್ಟಪಡುತ್ತೇನೆ.
ಆತ್ಮೀಯ, ಆಸಕ್ತಿದಾಯಕ, ಆದಾಗ್ಯೂ ನೀವು ಈ ಕೆಳಗಿನ ಸಾಲಿನಲ್ಲಿ ದೋಷವನ್ನು ಹೊಂದಿದ್ದೀರಿ:
"ಮತ್ತು ಫೈಲ್ ಅನ್ನು ls ಆಜ್ಞೆಗೆ ಮರುನಿರ್ದೇಶಿಸುವಾಗ" ಇರಬೇಕು "ಮತ್ತು ಫೈಲ್ ಅನ್ನು ವಿಂಗಡಿಸುವ ಆಜ್ಞೆಗೆ ಮರುನಿರ್ದೇಶಿಸುವಾಗ".
ಒಂದು ಶುಭಾಶಯ.
ಪಠ್ಯದ ಆರಂಭದಲ್ಲಿ ದೋಷವಿದೆ, ನೀವು "ls" ಆಜ್ಞೆಯನ್ನು ಸೂಚಿಸಿದಾಗ, ಅದು "ವಿಂಗಡಣೆ" ಆಗಿರಬೇಕು:
"ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ - ಈ ಸಂದರ್ಭದಲ್ಲಿ ಯಾದೃಚ್ ly ಿಕವಾಗಿ ಬರೆಯಲಾದ ಸಂಖ್ಯೆಗಳು - ಮತ್ತು ಫೈಲ್ ಅನ್ನು ls ಆಜ್ಞೆಗೆ ಮರುನಿರ್ದೇಶಿಸಿ (ಇಲ್ಲಿ ಅದು ವಿಂಗಡಣೆಯಾಗುತ್ತದೆ)"
ನಿಮ್ಮ ಕೆಲಸವನ್ನು ಹಂಚಿಕೊಂಡಿದ್ದಕ್ಕಾಗಿ ಶುಭಾಶಯಗಳು ಮತ್ತು ಧನ್ಯವಾದಗಳು
ಕ್ರಾನ್ಗೆ ಇದು ಅದ್ಭುತವಾಗಿದೆ, ಅಲ್ಲಿ output ಟ್ಪುಟ್ ಫ್ಲಶ್ ಆಗಬೇಕೆಂದು ನೀವು ಬಯಸುತ್ತೀರಿ (/ dev / null) ಆದರೆ ದೋಷಗಳನ್ನು ಫೈಲ್ಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಕು. ಅಲ್ಲದೆ, ನಾನು ಇದನ್ನು ಮಾಡಿದಾಗ, ಅವು ವಿಫಲವಾದಾಗ ನಿಖರವಾಗಿ ಸೂಚಿಸಲು ನಾನು ಸಾಮಾನ್ಯವಾಗಿ ದಿನಾಂಕ ಆಜ್ಞೆಯನ್ನು ಬಳಸುತ್ತೇನೆ.
ಬ್ಯಾಷ್ (ಶ) ಯುನಿಕ್ಸ್ ತತ್ವಶಾಸ್ತ್ರವು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ ಈ ಸಾಧನಗಳನ್ನು ಹೊಂದಿದೆ "ಒಂದು ಕೆಲಸವನ್ನು ಮಾಡಿ ಮತ್ತು ಅದನ್ನು ಚೆನ್ನಾಗಿ ಮಾಡಿ"
ಸರಿ, ನಾನು ಏನನ್ನೂ ಕಂಡುಹಿಡಿಯಲಿಲ್ಲ
ಹಾಹಾ ಅದನ್ನು ಚೆನ್ನಾಗಿ ವಿವರಿಸಲಾಗಿದೆ, ನಿಮಗೆ ಏನು ಅರ್ಥವಾಗಲಿಲ್ಲ?