Linux基礎知識4:重定向、標準輸出和標準錯誤、man、tldr

qq_41171192發表於2020-11-03

shell、terminal、console

console:操作者工作站(一般只有一個)
terminal:電子硬體裝置,輸入或者輸出資料,或者一個連線系統,主要是看這個如:
	text terminal:(封裝程式)(和程式關聯有三種情況,stdin、stdout、stderr,也是每個程式開啟是預設開啟的三個檔案描述符,即012)
		keyboard--->Program(#0 stdin)
		Display<----Program(#1 stdout  #2 stderr)

ls>重定向:標準輸出重定向

ls > ls.log:把當前目錄重定向到ls.log檔案中
ls dir1 > ls.log:把dir1下目錄重定向到ls.log檔案中(相當於列印目錄)
	如果dir1不存在,那麼ls.log為空檔案。這時如果需要列印錯誤輸出,需要:
		ls dir1 2> ls.err(注意2>之間不能空格)
ls 用法:
	ls dir1:列印目錄dir1(可以加選項: -lh -al,簡寫即‘ll’ 和 ‘la’)
	ls dir1 > file:列印dir1到file,注意是隻在標準輸出的情況下重定向成功
	ls dir1 2> errfile 1> file:
		列印dir1目錄,標準輸出就放在file,標準錯誤輸出就放在errfile;
		2不可以省略,但1可以省略;
		2(1)和‘>’之間不能有空格
	ls dir1 dir2 1> file1 2>file2:
		dir2 和 1> file1 之間順序可換;
		如果dir1是標準錯誤輸出那麼將定向到file2
		...

所以可以總結得到,1(2)> file只會重定向前面所有滿足定向條件的輸出。

ls dir1 dir2 2> err 1>&2
	dir1 dir2 2> err:將dir1和dir2的標準錯誤輸出定向到err檔案中
	1>&2: 將標準輸出也定向到標準錯誤中

對輸入進行重定向(檔案到命令的重定向):

./a.out < a:通過a檔案對。./a.out進行輸入(還可以加個0)
	如果a是管道檔案,那麼就可以實現跨介面輸入(參見前面的基礎知識3的pipe和fifo)

Linux幫助手冊

man手冊內容(以ls命令為例):[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-jpfFCucy-1604418805256)(C:\Users\king\AppData\Roaming\Typora\typora-user-images\image-20201103232238559.png)]

​ LS(1):指一般使用者可以使用的命令ls,然後是名字、語法。語法部分[]內是選項,還包括退出狀態(Exit status,錯誤返回值)。

man手冊(一般適用於記得但記不全的命令,有的放矢地找,關鍵部分查詢,會含有例子,可以直接看例子瞭解使用方法):

man command檢視命令的幫助手冊;

​ 開啟之後 /查詢相關內容 ;

​ 跳轉下一項:n,跳轉上一項:N(next,且一般大小寫表示的命令含義是相反的)

​ G/g:跳轉文尾和文首,12g:從頭開始的第12行,但12G就不管用了

man -k keyword通過關鍵字檢視命令

man中命令後面的代號意義:

代號代表的含義舉例
1使用者在shell環境下可以操作的命令或可執行檔案man 1 ls
2系統核心可呼叫的函式和工具man 2 reboot
3一些常用的函式與函式庫,大部分C的函式庫man 3 readdir
4裝置檔案的說明,通常是在/dev下的裝置man 4 null
5配置檔案或某些檔案的格式man 5 interfaces
6遊戲man 6 lol ?
7慣例與協議等,例如Linux檔案系統,網路協議等man 7 tcp
8系統管理員可用的命令man 8 reboot
9跟kernel有關的檔案
o舊文件
n新文件
l本地文件

可以通過 man3/之類的檢視具體內容,well,具體可以通過 man man檢視

在man手冊中,我們可以用到的快捷鍵如下:

快捷鍵功能快捷鍵功能
Ctrl+f(orward)向下翻一頁Ctrl+d(own)向下翻半頁
Ctrl+b(ackward)向上翻一頁Ctrl+u§向上翻半頁
/查詢q(uit)退出
by the way:
	fstab:檔案系統掛載
	atp:應用層協議,雲主機沒有

tldr:too long dont read,簡版man手冊

包含了最經常使用的東西。

tldr ssh:
	ssh
Secure Shell is a protocol used to securely log onto remote systems.
It can be used for logging or executing commands on a remote server.

 - Connect to a remote server:
   ssh {{username}}@{{remote_host}}

 - Connect to a remote server with a specific identity (private key):
   ssh -i {{path/to/key_file}} {{username}}@{{remote_host}}

 - Connect to a remote server using a specific port:
   ssh {{username}}@{{remote_host}} -p {{2222}}

 - Run a command on a remote server:
   ssh {{remote_host}} {{command -with -flags}}

 - SSH tunneling: Dynamic port forwarding (SOCKS proxy on localhost:9999):
   ssh -D {{9999}} -C {{username}}@{{remote_host}}

 - SSH tunneling: Forward a specific port (localhost:9999 to example.org:80) along with disabling pseudo-[t]ty allocation and executio[n] of remote commands:
   ssh -L {{9999}}:{{example.org}}:{{80}} -N -T {{username}}@{{remote_host}}

 - SSH jumping: Connect through a jumphost to a remote server (Multiple jump hops may be specified separated by comma characters):
   ssh -J {{username}}@{{jump_host}} {{username}}@{{remote_host}}

 - Agent forwarding: Forward the authentication information to the remote machine (see 
   man ssh_config
 for available options):
   ssh -A {{username}}@{{remote_host}}

{{}}裡面的是使用者自定義的,外面的是必寫的。

相關文章