IO 重定向是為了改變默認(rèn)輸入、輸出的位置,如默認(rèn)情況下標(biāo)準(zhǔn)輸出(STDOUT),標(biāo)準(zhǔn)錯誤輸出(STDERR)都是輸出到顯示終端,如對標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤輸出改變其默認(rèn)輸出位置,可重定向輸出到指定的文件中(實際工作中經(jīng)常這么使用),要重定向就要配合一些語法符號。
創(chuàng)新互聯(lián)專注于城中企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。城中網(wǎng)站建設(shè)公司,為城中等地區(qū)提供建站服務(wù)。全流程按需設(shè)計網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
文件或目錄的訪問權(quán)限分為只讀、只寫、可執(zhí)行三種。
修改文件權(quán)限命令:chmod、chgrp、chown。
搞懂「文件所屬者更改及權(quán)限的賦予」,涉及關(guān)于 chown、chmod、chgrp 命令,結(jié)合用例零基礎(chǔ)理解和掌握使用。
您想問的是linux中的shell腳本中輸出文本內(nèi)容到文件的命令是什么嗎?shell變量調(diào)出命令。
linux中的shell腳本有多種命令格式,其中輸出文本內(nèi)容到文件的命令包括但不限于shell文本命令調(diào)出、shell變量取值等。
Linux操作系統(tǒng)是基于UNIX操作系統(tǒng)發(fā)展而來的一種克隆系統(tǒng),它誕生于Linux桌面1991年10月5日(這是第一次正式向外公布的時間)。以后借助于Internet網(wǎng)絡(luò),并通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNIX類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。
方法:利用tee命令可將linux終端的打印內(nèi)容輸出到文件
示例:ifconfig | tee ifconfig.log
運行結(jié)束后可在ifconfig.log文件中查看打印的內(nèi)容
tee用于把命令結(jié)果打印在屏幕上并同時保存到文件。
tee用法
描述:從標(biāo)準(zhǔn)輸入中讀取并同時寫入到標(biāo)準(zhǔn)輸出和指定的文件上
選項:
-a,--append:不覆蓋,而是追加輸出到指定的文件中
-i,--ignore-interrupts:忽略中斷信息
若指定的輸出文件為'-',則再次輸出到標(biāo)準(zhǔn)輸出上
實例:
tee Example.txt #將標(biāo)準(zhǔn)輸入中輸入的內(nèi)容同時輸出到Example.txt和標(biāo)準(zhǔn)輸出上
實踐:
例如 ifconfig | tee ifconfig.log
查看iconfig.log
注:
標(biāo)準(zhǔn)輸入一般有鍵盤和其它文件,標(biāo)準(zhǔn)輸出有屏幕等。tee只能進行標(biāo)準(zhǔn)輸入的輸出,對于錯誤輸入是不能輸出的。
在調(diào)試腳本時,想要每個命令的執(zhí)行過程都輸出到屏幕或者文件中,以便后續(xù)查看,如何操作呢?首先腳本第一行要寫為“#!/bin/bash -x”,這樣會把每個命令的執(zhí)行記錄都輸出到屏幕,若還要輸出到指定文件,要用到tee,但tee只能進行標(biāo)準(zhǔn)輸入,對于標(biāo)準(zhǔn)輸入和錯誤輸入要用到下式:
./filename.sh 21 | tee output.log? ?或者直接 bash -x ./filename.sh?21 | tee output.log
今天調(diào)試一個bash,要把屏幕的輸出結(jié)果存到log文件中,開始輸入$bash -x ./test.sh log 結(jié)果發(fā)現(xiàn)log里只存放了程序的執(zhí)行結(jié)果,后來在cu的一篇帖子里?tid=264380highlight=bash得到了啟發(fā),bash -x的調(diào)試信息是輸出到2號流中的,所以解決方案為bash -x ./test.sh 21 | tee log 想起以前要存放執(zhí)行make的結(jié)果時也遇到類似問題,總結(jié)如下:
1、管道符的“I”的作用只是把前一個程序的標(biāo)準(zhǔn)輸出流(stdout)的數(shù)據(jù)作為后一個程序的標(biāo)準(zhǔn)輸入流stdin的數(shù)據(jù),如不進行重定向,則其他輸出流的信息是無法傳給后面的程序的
2、屏幕得到的信息不一定是從程序的標(biāo)準(zhǔn)輸出來的,也包括標(biāo)準(zhǔn)錯誤輸出流stderr中的信息
3、有些程序(特別是象bash、make這樣執(zhí)行了其他程序的程序)的設(shè)計者為了省事,把一些正常情況的信息也放在stderr中輸出(即使程序本身并無錯誤),而stdout用來輸出被調(diào)用程序的執(zhí)行時信息,造成了用戶的誤解簡單編寫了一下腳本,通過ssh登陸在命令行下運行正常,可是將腳本添加到crontab中就不正常。想記錄一下輸出信息,分析一下錯誤原因。將腳本通過使用info.log 重定向輸出,結(jié)果發(fā)現(xiàn)一些在命令行下可以看到的文本信息沒有記錄到info.log文件中,研究了一下,那些輸出估計是輸出到了標(biāo)準(zhǔn)錯誤上。
研究了一下通常添加命令后面幾個輸出含義
■ /dev/null 輸出到空設(shè)備,表示丟掉輸出信息。
■ 21將輸出到標(biāo)準(zhǔn)錯誤的信息輸出到標(biāo)準(zhǔn)輸出設(shè)備(通常是屏幕)有3個默認(rèn)的i/o,
■ 0是標(biāo)準(zhǔn)輸入,一般是鍵盤
■ 1是標(biāo)準(zhǔn)輸出,一般是屏幕
■ 2是標(biāo)準(zhǔn)錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了