笨辦法學(xué) Linux 0~3

練習(xí) 0:起步

原文:Exercise 0. The Setup

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

Windows虏缸,手動安裝

非常長的指南

Windows侣颂,VirtualBox 虛擬機(jī)(.ova格式的預(yù)配置映像)

你需要什么

  • VitualBox负敏,虛擬機(jī)播放器吗伤。
  • putty断国,終端模擬器剥懒。
  • 預(yù)配置的 VirtualBox Debian 映像沐飘。

這樣做

Linux

你已經(jīng)使用 Linux 了寺酪,你還需要什么嘛坎背?開個玩笑。你可以嚴(yán)格遵循我的指南寄雀,或者隨意在你的系統(tǒng)上做實(shí)驗(yàn)得滤。

Mac OS

以后我會在這里把步驟補(bǔ)上。

練習(xí) 1:文本編輯器盒犹,vim

原文:Exercise 1. Text Editor, The: vim

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

在 Linux 中懂更,就像任何類 Unix 操作系統(tǒng),一切都只是文件急膀。而 Unix 哲學(xué)指出沮协,配置文件必須是人類可讀和可編輯的。在幾乎所有的情況下卓嫂,它們只是純文本慷暂。所以,首先晨雳,你必須學(xué)習(xí)如何編輯文本文件行瑞。

為此奸腺,我強(qiáng)烈建議你學(xué)習(xí) vim 的基礎(chǔ)知識,這是在 Linux 中處理文本的最強(qiáng)大的工具之一血久。Vim 是由 Bill Joy 于 1976 年編寫的突照,vi 的重新實(shí)現(xiàn)。vi 實(shí)現(xiàn)了一個非常成功的概念氧吐,甚至 Microsoft Visual Studio 2012 有一個插件讹蘑,它提供了一個模式,與這個超過 35 歲的編輯器兼容副砍。你可以在這里玩轉(zhuǎn)它(這是在瀏覽器中運(yùn)行的真正的 Linux)衔肢。完成之后庄岖,最后獲取我的虛擬機(jī)豁翎。

如果我還沒成功說服你,你可以了解 nano來代替隅忿。但至少要試試心剥。

現(xiàn)在,登入vm1背桐,之后鍵入:

vim hello.txt

你應(yīng)該看到:

Hello, brave adventurer!
~
~
~
~
~
~
~
~
~
~
~
~
~
"hello.txt" [New File]      0,0-1         All

有一個笑話說优烧,vim有兩種模式 - “反復(fù)嗶嗶”和“破壞一切”。那么链峭,如果你不知道如何使用 vim畦娄,這是非常真實(shí)的,因?yàn)?vim 是模態(tài)的文本編輯器弊仪。模式是:

  • 普通模式:移動光標(biāo)并執(zhí)行刪除熙卡,復(fù)制和粘貼等文本操作。
  • 插入模式:輸入文本励饵。

譯者注:還有一個命令模式驳癌,用于生成真 · 隨機(jī)字符串(笑)。

這十分使新手頭疼役听,因?yàn)樗麄冊噲D盡可能地避免普通模式颓鲜。那么這是錯誤的,所以現(xiàn)在我將給你正確的大綱來使用 vim :

start vim
while editing is not finished, repeat
    navigate to desired position in NORMAL mode
    enter INSERT mode by pressing i
        type text
    exit INSERT mode by pressing <ESCAPE>
when editing is finished, type :wq

最重要的是典予,幾乎任何時(shí)候都呆在普通模式甜滨,短時(shí)間內(nèi)進(jìn)入插入模式,然后立即退出瘤袖。以這種方式衣摩,vim 只有一種模式,而這種模式是普通模式孽椰。

現(xiàn)在讓我們試試吧昭娩。記住凛篙,按i進(jìn)入插入模式,以及<ESCAPE> 返回到普通模式栏渺。鍵入以下內(nèi)容(在每行末尾按<ENTER>):

iRoses are red
Linux is scary
<ESCAPE>

這是你應(yīng)該看到的:

Roses are red
Linux is scary
~
~
~
~
~
~
~
~
~
~
~
~
~
                            4,17          All

現(xiàn)在我給你命令列表呛梆,在普通模式下移動光標(biāo):

  • h - 向左移動
  • j - 向下移動
  • k - 向上移動
  • l - 右移
  • i - 進(jìn)入插入模式
  • o - 在光標(biāo)下插入一行并進(jìn)入插入模式
  • <ESCAPE> - 退出插入模式
  • x - 刪除光標(biāo)下的符號
  • dd - 刪除一行
  • :wq - 將更改寫入文件并退出。是的磕诊,沒錯填物,這是一個冒號,后面跟著wq<ENTER>霎终。
  • :q! - 不要對文件進(jìn)行更改并退出滞磺。

那就夠了。現(xiàn)在莱褒,將光標(biāo)放在第一行并輸入:

oViolets are blue<ESCAPE>

之后击困,將光標(biāo)放在Linux is scary那一行,并輸入:

oBut I'm scary too<ESCAPE>

你應(yīng)該看到:

Roses are red
Violets are blue
Linux is scary
But I'm scary too
~
~
~
~
~
~
~
~
~
~
~
                            4,17          All

現(xiàn)在鍵入:wq保存文件广凸,并退出阅茶。你應(yīng)該看到:

Violets are blue
Linux is scary
But I'm scary too
~
~
~
~
~
~
~
~
~
~
~
"hello.txt" 4L, 64C written
user1@vm1:~$

好的。你做到它了谅海。你剛剛在 vim 中編輯了文本文件脸哀,很好很強(qiáng)大扭吁!

附加題

  • 通過鍵入鍵入vim hello.txt再次啟動 vim撞蜂,并嘗試我給你的一些命令。
  • 玩這個游戲侥袜,它會讓你更熟悉 vim:http://vim-adventures.com/

練習(xí) 2:文本瀏覽器蝌诡,少即是多

原文:Exercise 2. Text Viewer, The: less is More

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

現(xiàn)在你可以編輯文本文件,這很好系馆。但是如果你只想查看一個文本文件呢送漠?當(dāng)然,你可以使用 vim由蘑,但很多時(shí)候它是過度的闽寡。還有兩件事要考慮:

  • 如果你想查看非常大的文件,你將需要在盡可能快的程序中查看它尼酿。
  • 通常你不想意外地改變文件中的某些東西爷狈。

所以,我向你介紹強(qiáng)大的less裳擎,少即是多涎永。“比什么多呢?”你可能會問羡微。嗯...有一次谷饿,有一個被稱為more的瀏覽器。它很簡單妈倔,只是向你顯示你要求它顯示的文本文件博投。它是如此簡單,只能以一個方向顯示文本文件盯蝴,也就是向前毅哗。 馬克·恩德爾曼(Mark Nudelman)發(fā)現(xiàn)它并不那么令人滿意 ,1983 年至 1985 年捧挺,他編寫了less虑绵。從那以后,它擁有了許多先進(jìn)的功能闽烙。因?yàn)樗?code>more更先進(jìn)翅睛,一句話就誕生了:“少即是多,多即是少”鸣峭。

好吧宏所,讓我們試試吧酥艳。

輸入:

less .bashrc

你應(yīng)該看到:

user1@vm1:~$ less .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
 
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
 
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
HISTCONTROL=$HISTCONTROL${HISTCONTROL+:}ignoredups
.bashrc

如果你的終端不是足夠?qū)捥埽谋緦⒖雌饋硐褚粓F(tuán)糟,因?yàn)樗挪幌抡谐涫R迯?fù)它莫换,請鍵入- -ch<ENTER><ENTER>。是的骤铃,dash-dash-ch-ENTER-ENTER拉岁。這將開啟水平滾動。

為了向上向下文瀏覽文字惰爬,使用已經(jīng)熟悉的jk喊暖。退出按q

現(xiàn)在我將向你展示less的高級功能撕瞧,這樣你只能看到所需的那些行陵叽。鍵入&enable<ENTER>。你應(yīng)該看到這個:

# enable color support of ls and also add hand
# enable programmable completion features (you
# this, if it's already enabled in /etc/bash.b
~
~
~
~
~
~
~
~
~
~
~
~
& (END)

注意看丛版!為了移除過濾器巩掺,只需鍵入&<ENTER>。同樣页畦,要記住的命令:

  • j - 向上移動
  • k - 向下移動
  • q - 退出less胖替。
  • - -chop-long-lines或- -ch<ENTER><ENTER>` - 開啟水平滾動。
  • / - 搜索。
  • &something - 只顯示文件中包含某些內(nèi)容的行独令。

附加題

  • Linux 具有在線手冊端朵,通過鍵入man來調(diào)用。默認(rèn)情況下燃箭,在我們的系統(tǒng)中逸月,本手冊將使用less來查看。 鍵入man man并閱讀遍膜,然后退出碗硬。
  • 就是這樣,沒有更多的附加題了瓢颅。

練習(xí) 3:Bash:Shell恩尾、.profile.bashrc挽懦、.bash_history翰意。

原文:[Exercise 3. Bash: The shell, .profile, .bashrc, .bash_history](https://archive.fo/DKP67

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

當(dāng)使用 CLI(命令行界面)來使用 Linux 時(shí),你正在與一個名為 shell 的程序進(jìn)行交互信柿。所有你輸入的都傳遞給 shell冀偶,它解釋你輸入的內(nèi)容,執(zhí)行參數(shù)擴(kuò)展(這有點(diǎn)類似于代數(shù)中的花括號擴(kuò)展)渔嚷,并為你執(zhí)行程序进鸠。我們將使用的 Shell 稱為 Bash,它代表 Bourne Again Shell形病,而 Bourne Again Shell 又是一個雙關(guān)語】湍辏現(xiàn)在我將使用純中文,向大家介紹一下 bash 的工作方式:

    • 登入 Linux 虛擬機(jī)
    • 你的身份由用戶名(user1)和密碼(123qwe)確定漠吻。
    • Bash 執(zhí)行了量瓜。
  • Bash
    • 從你的配置中讀取并執(zhí)行首個命令,它定義了:
      • 命令提示符是什么樣子
      • 使用 Linux 時(shí)途乃,你會看到什么顏色
      • 你的編輯器是什么
      • 你的瀏覽器是什么
      • ...
    • 讀取首個命令后绍傲,Bash 進(jìn)入循環(huán)
      • 沒有通過輸入exit或者按下<CTRL+D>,來要求退出的時(shí)候:
        • 讀取一行
        • 解析這一行耍共,擴(kuò)展花括號
        • 使用擴(kuò)展參數(shù)執(zhí)行命令

我重復(fù)一下烫饼,你輸入的任何命令都不會直接執(zhí)行,而是首先擴(kuò)展划提,然后執(zhí)行枫弟。例如,當(dāng)你輸入ls *時(shí)鹏往,星號*將擴(kuò)展為當(dāng)前目錄中所有文件的列表淡诗。

現(xiàn)在你將學(xué)習(xí)如何修改你的配置骇塘,以及如何編寫和查看你的歷史記錄。

這樣做

 1: ls -al
 2: cat .profile
 3: echo Hello, $LOGNAME!
 4: cp -v .profile .profile.bak
 5: echo 'echo Hello, $LOGNAME!' >> .profile
 6: tail -n 5 .profile
 7: history -w
 8: ls -altr
 9: cat .bash_history
10: exit

你會看到什么

user1@vm1's password:
Linux vm1 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jun  7 12:03:29 2012 from sis.site
Hello, user1!
user1@vm1:~$ ls -al
total 20
drwxr-xr-x 2 user1 user1 4096 Jun  7 12:18 .
drwxr-xr-x 3 root  root  4096 Jun  6 21:49 ..
-rw-r--r-- 1 user1 user1  220 Jun  6 21:48 .bash_logout
-rw-r--r-- 1 user1 user1 3184 Jun  6 21:48 .bashrc
-rw-r--r-- 1 user1 user1  697 Jun  7 12:04 .profile
user1@vm1:~$ cat .profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
 
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
 
# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi
 
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
echo Hello, $LOGNAME!
user1@vm1:~$ echo Hello, $LOGNAME!
Hello, user1!
user1@vm1:~$ cp -v .profile .profile.bak
`.profile' -> `.profile.bak'
user1@vm1:~$ echo 'echo Hello, $LOGNAME!' >> .profile
user1@vm1:~$ tail -n 5 .profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
echo Hello, $LOGNAME!
user1@vm1:~$ history -w
user1@vm1:~$ ls -altr
total 28
-rw-r--r-- 1 user1 user1 3184 Jun  6 21:48 .bashrc
-rw-r--r-- 1 user1 user1  220 Jun  6 21:48 .bash_logout
drwxr-xr-x 3 root  root  4096 Jun  6 21:49 ..
-rw-r--r-- 1 user1 user1  741 Jun  7 12:19 .profile.bak
-rw------- 1 user1 user1  308 Jun  7 12:21 .bash_history
-rw-r--r-- 1 user1 user1  697 Jun  7 12:25 .profile
drwxr-xr-x 2 user1 user1 4096 Jun  7 12:25 .
user1@vm1:~$ cat .bash_history
ls -al
cat .profile
echo Hello, $LOGNAME!
cp -v .profile .profile.bak
echo 'echo Hello, $LOGNAME!' >> .profile
tail -n 5 .profile
history -w
ls -altr
user1@vm1:~$ exit
logout

不要害怕韩容,所有命令都會解釋款违。行號對應(yīng)“現(xiàn)在輸入它”的部分。

解釋

  1. 打印當(dāng)前目錄中的所有文件群凶,包括隱藏的文件插爹。選項(xiàng)-al告訴lslong格式打印文件列表,并包括所有文件请梢,包括隱藏文件赠尾。.profile.bash_rc是隱藏文件,因?yàn)樗鼈円渣c(diǎn).開頭毅弧。以點(diǎn)開頭的每個文件都是隱藏的气嫁,這很簡單。這兩個特殊文件是 shell 腳本够坐,它們包含登錄時(shí)執(zhí)行的指令寸宵。

  2. 打印出你的.profile文件。只是這樣元咙。

  3. 告訴你的 shell梯影,你這里是 bash,輸出一個字符串Hello, $LOGNAME!庶香,用環(huán)境變量``$LOGNAME替換$LOGNAME甲棍,它包含你的登錄名。

  4. .profile文件復(fù)制到.profile.bak脉课。選項(xiàng)-vcp詳細(xì)輸出救军,這意味著它會打印所有的操作。記住這個選項(xiàng)倘零,它通常用于讓命令給你提供比默認(rèn)更多的信息。

  5. .bash_rc配置文件中添加一行戳寸。從現(xiàn)在開始呈驶,每次登錄到vm1時(shí), 都將執(zhí)行該命令疫鹊。注意袖瞻,>>代表向文件添加了一些東西,但>意味著使用一些東西來替換文件拆吆。如果你不小心替換了.profile而不是向它添加聋迎,則命令

    cp -v .profile.bak .profile
    

    會向你返回舊的.profile文件。

  6. .profile文件中精確打印出最后 5 行枣耀。

  7. 將所有命令歷史寫入.bash_history文件霉晕。通常這是在會話結(jié)束時(shí)完成的,當(dāng)你通過鍵入exit或按<CTRL> + D關(guān)閉它。

  8. 打印當(dāng)前目錄中的文件牺堰。選項(xiàng)-tr表示文件列表按時(shí)間反向排序拄轻。這意味著最近創(chuàng)建和修改的文件最后打印。注意你現(xiàn)在有兩個新的文件伟葫。

  9. 打印出保存命令歷史記錄的文件恨搓。注意你所有的輸入都在這里。

  10. 關(guān)閉會話

附加題

  • 在線搜索為什么ls -al告訴你“總共 20”筏养,但是只有 5 個文件存在斧抱。 這是什么意思? 請注意渐溶,...是特殊文件條目夺姑,分別對應(yīng)于當(dāng)前目錄和父目錄的。

  • 登錄vm1并鍵入man -K /etc/profile掌猛,現(xiàn)在使用光標(biāo)鍵滾動到INVOCATION部分并閱讀它盏浙。 要退出man,請鍵入q荔茬。 鍵入man man來找出man -K選項(xiàng)的含義废膘。

  • 在命令之前鍵入uname與空格。 現(xiàn)在慕蔚,鍵入history丐黄。 看到了嗎?如果你將空格放到命令前面孔飒,則不會將其保存在歷史記錄中灌闺!提示:當(dāng)你需要在命令行上指定密碼時(shí),很實(shí)用坏瞄。

  • 找到 bash 的 wiki 頁面桂对,并嘗試閱讀它。不用擔(dān)心鸠匀,如果它嚇到你蕉斜,只需要省略可怕的部分。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缀棍,一起剝皮案震驚了整個濱河市宅此,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爬范,老刑警劉巖父腕,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異青瀑,居然都是意外死亡璧亮,警方通過查閱死者的電腦和手機(jī)萧诫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杜顺,“玉大人财搁,你說我怎么就攤上這事」纾” “怎么了尖奔?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長穷当。 經(jīng)常有香客問我提茁,道長,這世上最難降的妖魔是什么馁菜? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任茴扁,我火速辦了婚禮,結(jié)果婚禮上汪疮,老公的妹妹穿的比我還像新娘峭火。我一直安慰自己,他們只是感情好智嚷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布卖丸。 她就那樣靜靜地躺著,像睡著了一般盏道。 火紅的嫁衣襯著肌膚如雪稍浆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天猜嘱,我揣著相機(jī)與錄音衅枫,去河邊找鬼。 笑死朗伶,一個胖子當(dāng)著我的面吹牛弦撩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腕让,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼孤钦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纯丸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤静袖,失蹤者是張志新(化名)和其女友劉穎觉鼻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體队橙,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坠陈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年萨惑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仇矾。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡庸蔼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贮匕,到底是詐尸還是另有隱情姐仅,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布刻盐,位于F島的核電站掏膏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏敦锌。R本人自食惡果不足惜馒疹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乙墙。 院中可真熱鬧颖变,春花似錦、人聲如沸听想。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哗魂。三九已至肛走,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間录别,已是汗流浹背朽色。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留组题,地道東北人葫男。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像崔列,于是被迫代替她去往敵國和親梢褐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容