在shell程式設計命令中換行符號是什麼

時間 2021-08-11 17:33:50

1樓:肥仙女

1、shell變數只是一個由名字表示的引數,或者是由名字表示的字元序列。例如定義變數a:a='a\nb'變數a代表字串'a\nb';

'\n'表示換行,實質上是'反斜槓轉義功能'是否啟用下面列舉三種使用方式,一種原樣輸出,另兩種解析換行。

2、第一種原樣輸出:用echo$a,他輸出字元a\nb沒有去解析換行。

2、第二種輸出換行:使用echo-e$a,他輸出字元a,然後一個換行,然後輸出字元b

這個-e選項就是啟用啟用反斜槓轉義功能

3、第三種輸出換行:另一種輸出換行的樣例是printf$a,

輸入命令printf$a時,他輸出字元a,然後一個換行,然後輸出字元b。printf預設啟用反斜槓轉移功能。與echo命令不同的時echo在輸出的最後新增一個換行符,容查閱讀。

2樓:韌勁

換行方式

在早期的印表機時代,開始新的一行要佔用兩個字元的時間。如果到了一行的結尾處,你要快速回到新的一行的開頭,需要列印針頭在紙面上飛快地掠過,常常會在紙面上留下汙點。解決這個問題的辦法就是,用兩個字元:

一個字元來移到第一列,另一個字元來新增一行。計算機產生以後,儲存較為昂貴,在如何解決回車換行這個老問題上,人們產生了不同的意見。unix人認為在到達一行的結尾時新增一行(lf),而mac人則認同(cr)的解決辦法,ms則堅持古老的(crlf)的方法。

這就意味著如果你將一個檔案從一個系統轉移到另一個系統,就面臨著回車換行的問題。而vim編輯器則會自動的認出這種檔案格式方面的區別,並做出相應處理。

fileformats選項,用於處理檔案格式問題。以下命令,告訴vim將unix檔案格式做為第一選擇,而將ms-dos的檔案格式做為第二選擇:

:set fileformats=unix,dos

檢測到的檔案格式會被存放在fileformat選項中,我們可以用以下命令來查詢:

:set fileformat?

我們還可以利用fileformat選項,來轉換種檔案格式。例如,使用以下命令將名為readme.txt的ms-dos格式的檔案,轉換為unix格式的檔案。

:set fileformat=unix

在預設情況下,vim認為檔案是由行組成的,並且檔案最後一行是以為結束符的。如果你想設定檔案以結束符結尾,則可以用以下命令:

:set endofline

如果你想設定檔案不以結束符來結尾,則可以使用以下命令:

:set noendofline

顯示換行

如果你使用以下命令進入,那麼就可以清楚的看到以「$」表示的換行符和以「^i」表示的製表符。

:set list

你可以使用以下命令退出:

:set nolist

刪除換行

可以用以下命令刪除換行符:

:%s/\n//g

可以用以下命令刪除dos檔案中的回車符「^m」:

:%s/\r//g

可以用以下命令轉換dos回車符「^m」為真正的換行符:

:%s/\r/\r/g

可以用以下命令刪除行尾的空格以及dos回車符。它沒有使用「/」字元作為替換命令各個引數間的分隔符,而是使用了「#」字元。命令還使用了「\?

」正規表示式,用來匹配它前面出現的字元0次或1次。

:%s#\s*\r\?$##

可以用以下命令刪除三行空行:

:%s/^\n\//

可以用以下命令將連續的兩個空行替換成一個空行:

:%s/\n\n/\r/g

自動換行

在預設情況下,vim是不會自動換行的,也就是說我們需要自己決定回車的位置。但是我們也可以通過指定textwidth選項,讓vim自動在指定位置換行。例如,使用以下命令指定在30列時自動換行。

由於在遇到空格時才會自動換行,所以換行的精確位置可能會小於你指定的列寬。

:set textwidth=29

而以下命令告訴vim從右面算起當達到10個字元的空格時要換行:

:set wrapmargin=10

在指定了文字寬度的情況下,當我們將一行中的前幾個文字刪掉時,vim並不會將後面行中的文字移動上來,而是形成了一些長短不一的段落,這樣看起來不是很好。可以有幾種方法處理這個問題:

一種方法是,在視覺化模式下選中這些文字,然後用gp命令來格式化選中的段落。另一種方法是,使用gqmotion命令來完成格式。例如要格式化5行,就可以用命令:

gq4j。這個命令告訴vim要格式化本行,同時要格式化下面的4行,這樣就達到了格式化5行的目的。如果要格式化整個段落,可以將游標放在段落的第一行上,然後執行命令gq}。

而使用命令gqip可以格式化當前段落,而且並不必要將游標放在段落的第一行上。

如果要想格式化一行,可以使用命令gqgq,也可以簡記為gqq。

注意:選項textwidth優先於wrapmargin。如果要使wrapmargin選項生效,必須將textwidth設定為0(這也是預設值)。

合併行命令j使兩行合併為一行,同時用空格分隔這兩行。

通過設定joinspace選項,可以控制合併兩行時的分隔符(如果一行是以標點符號來結尾)。如果設定:set nojoinspaces,用j命令合併兩行時會用一個空格來分隔;如果設定:

set joinspaces,用j命令合併兩行時會用兩個空格來分隔。如果不希望用空格來分隔合併的行,可以使用gj命令。

我們也可以使用:join命令,將幾行合併為一行並使用空格來分隔各行。如果不希望加入空格,那麼可以使用:join!命令。

命令小結

:set fileformat 設定檔案格式

:set endofline 設定檔案結束符

:set noendofline 取消檔案結束符

:set list 進入list mode

:set nolist 退出list mode

:%s/\n//g 刪除換行符

:set textwidth 設定行寬

:set textwidth 設定行邊距

:join 合併多行

j 合併兩行

3樓:自動工程師

應該用$'\n'形式來表示。

只用' '的話,單引號中所有字元為原義,無特殊意義;用" " 的話,雙引號中\把n直接轉義成n而已。

4樓:瘋瘋

不應該用單引號或雙引號吧!

應該用反引號(就是esc下面那個鍵),以前我也犯過類似的毛病。

因為反引號在shell中的字串會被解釋成為命令。

還有echo的-e選項是對轉義字元進行解析,預設的是不解析的。

如:echo -e "ab\nab"

輸出:abab

5樓:匿名使用者

tryecho -e "ab\ncd"

linux的shell程式設計中的符號`是什麼

6樓:匿名使用者

`` 符號在shell裡面正式的名稱叫做backquote , 一般叫做命令替換

其作用是將引用命令的輸出替換到字串或者變數

通常的 你需要在一個序列中需要用到其它命令的輸出,就可以用``

7樓:巨集宇資深工程師

這個``符號表示:中間為可執行的命令。

8樓:匿名使用者

1 在字串指令中,還需要其他的指令提供資訊可以用『command『2 在字串指令中, 『『中的內容將被優先執行比如cd /lib/modules/`uname -r`uname -r返回核心版本號

如何在shell指令碼中執行cd命令

在工作中,網際網路公司,經常不是直接登入到服務上,而是通過跳板機進行中轉。這樣就會用到cd命令切換目錄。編輯shell檔案 vim switchdir.sh plain view plain copycd opt service mobile kafka 2.10 0.8.1 lizt bin so...

在shell 指令碼中是什麼意思

表示引數的數量。再給你點我總結的其他的觀關於 的。上一條命令執行後返回的狀態。引數的數量。所有引數的內容。當前程序的程序號。後臺執行的最後一個程序號。0 當前執行的程序名。shell 指令碼中 分別代表什麼意思?給你個全的,你在linux環境下多試下就明白了 0 這個程式的執行名字。n 這個程式的第...

請問在linu中ls命令和dir命令有什麼區別

ls list directy contents 是linux下的顯示目錄內容的命令 linux本身並沒有dir命令,這是原dos命令,也是顯示目錄的命令。在linux中,可以用alias命令重新命名一個dir命令,方便新使用者使用linux系統.linux系統沒有dir命令,但可以用alias d...