日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会如有神助!

發布時間:2023/12/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会如有神助! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CSDN 的同學們,大家好,今天我是來補課的。

「上一篇」把命令行、終端、Shell 搞清楚后(還沒搞清楚的可以點擊藍字過去看一眼),今天這篇寫起來就順暢多了。哦,極度的舒適!

開門見山地說吧。大學里的計算機課程通常專注于講授計算機操作系統、計算機組成原理、計算機網絡等學院派的課程,以及某一門具體的編程語言,比如說 Java、C++/C,而對于如何精通工具這個主題往往不在講授的課程之內,需要同學們自行摸索。

但實際上呢,某些工具的使用頻率高到可以使用一個成語來形容——朝夕相伴。比如說命令行,不僅在學生時代經常用到,工作后更是形影不離。因此,花一些時間來打磨使用這些工具的能力就變得迫在眉睫。比如說今天的主角——命令行 Shell,項目的運維基本上都是通過 Shell 完成的。

記得剛參加工作那會,需要向一名前輩請教線上部署的問題。我站在他的身后,看著他靈巧地手指在鍵盤上熟練地操作著,黑色的 XShell 窗口里,彩色的字符在愉快地跳躍著,有一種杰倫在鋼琴上彈奏《逆鱗狂想曲》的感覺,特別崇拜。

PS:插一條。上一篇《奉勸那些想把編程學好的學弟學妹們》在 CSDN 的 APP 端非常火,一直沖到了榜首,點贊超過 600 次,收藏超過 1000 次,評論超過 100 次,希望沒看到的同學好好看一遍,一定會大有所獲。

01、再說 Shell 是什么

現代計算機的交互接口多種多樣,從常見的圖形化界面,到語音輸入,再到 AR 和 VR,都可以滿足指令的輸入。這些接口可以覆蓋絕大多數的應用場景,但它們從根本上限制了另外一種操作方式——你不能點擊一個不存在的按鈕,或者使用語音輸入一個還沒錄入的指令。

為了能充分地利用計算機的能力,我們有時候不得不回到最原始的交互方式——文字接口:Shell,一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。

幾乎所有的操作系統都支持某種形式的命令行 Shell,有些甚至提供了多種 Shell 可供選擇。Linux 上常見的 Shell 有:

  • Bourne Shell(/usr/bin/sh 或 /bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

雖然細節上有些許差異,但核心功能是一樣的:允許你執行程序,輸入指令并獲取某種半結構化的輸出。

可通過 cat /etc/shells 命令來顯示本機上的 Shell。我用的 Mac,上面有 bash、csh、ksh、sh、tcsh、zsh 等等。

默認是 zsh,在窗口標題上可以看得出來。如果想切換到另外一種 Shell,可以直接敲 Shell 的名字,比如 tcsh,見下圖。

害,一不小心還是暴露了自己的名字。如果想退出當前 Shell 到默認 Shell 的話,敲 exit 命令就可以了。

02、初用 Shell

在啟動臺找到“終端”,打開(我用的 Mac),如下圖所示。

先從窗口標題說起,重點是 zsh。

2019 年,Apple 發布了新一代 macOS——macOS Catalina,為專業用戶帶來了一項重大變化,zsh 取代了 bash,成為默認的 Shell。相比 bash,zsh 擁有更強大的功能,比如說更智能的自動補全、更豐富的主題等等。這逼絕對是馬車中的跑車,跑車中的飛行車,史稱「終極 Shell」。

再說說窗體內容。

第一行內容顯示了最近一次的登錄時間。有些同學會好奇,“ttys000”是什么鬼?

簡單來說,tty 是終端的統稱。看過「終于制服了它們」的同學應該知道了,早期的終端是電傳字打印機(Teletype / Teletypewriter),英文縮寫就是 tty。雖然終端設備已經不再限制于電傳打字機了,但是 tty 這個名稱還是就這么保留了下來。

“ttys000” 就是 tty 加了一個代號 s000。

第二行內容告訴我們,主機名是 itwanger。可通過「系統偏好設置」→「共享」→「電腦名稱」→「編輯」修改主機名。% 后面跟了一個提示符,可以在此輸入任意字符,只不過有些可以被 Shell 解析,有些則不能。

03、Oh My Zsh

zsh 本身非常強大,但配置復雜,對普通用來來說體驗非常差。直到有一天,有個無聊的家伙開發出了一個能夠快速配置 zsh 的項目,叫做「Oh My Zsh」,GitHub 地址如下所示:

https://github.com/ohmyzsh/ohmyzsh

這玩意安裝起來極為簡單,能夠讓我們神功速成,有點「五分鐘學會 XXX」的味道。

直接在終端里執行 sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 就可以自動安裝 Oh My Zsh 了。

如果自動安裝失敗的話,可以嘗試手動安裝。

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

由于某些原因,速度可能會比較慢,耐心地等待一會。

安裝完成后重新打開一個新的終端,就可以看到彩色的提示符(Oh My Zsh 默認主題的標志)了。

Oh My Zsh 的配置集中在 ~/.zshrc 文件里(~/ 表示根目錄),可以通過 vim 打開。

vim ~/.zshrc

可以看到,Oh My Zsh 默認使用的主題是 robbyrussell,可在 ~/.oh-my-zsh/themes 目錄下找到更多主題進行切換。

如果你不知道選擇哪個主題,可以通過下面的網址進行預覽。

https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes

如果你有選擇困難癥,可以像我一樣,配置成隨機,每新開一次窗口,Oh My Zsh 就替你選一次。

ZSH_THEME="random"

現在,就新開一個窗口吧,可以看到主題隨機到了 essembeh。

再來說說插件。Oh My Zsh 提供了完善的插件體系,默認有 100 多種,可以在 ~/.oh-my-zsh/plugins 目錄下找到這些插件。如果不確定這些插件是干嘛的,可以查看一下插件目錄下對應的 README.md 文件。插件的配置同樣在 .zshrc 文件里,目前默認的插件只有 git。

到此為止,Oh My Zsh 的安裝、配置、插件完成了三位一體,終極 Shell 全面登場。

04、再用 Shell

來執行一個最簡單的命令 date,不出意外的話,它將會打印出當前的日期和時間。

然后,光標等待我們輸入其他命令,我們可以在執行命令的時候帶上參數。

echo hello

echo 命令會將參數 hello 打印出來,Shell 是基于空格分隔命令進行解析的,第一個單詞代表可執行的程序,后續的單詞作為傳遞給程序的參數。如果你希望參數里包含空格的話,可以使用單引號或者雙引號包裹起來。

echo "hello world"

當我們在 Shell 中執行命令時,實際上是在執行一段 Shell 可以解釋執行的簡單代碼。如果命令不是 Shell 的預知范圍之內的話,它會去咨詢環境變量 $PATH。

可以使用 which 命令來確定某個程序名代表的是哪個具體的程序。也可以繞過 $PATH,直接使用帶路徑的命令來執行,比如 /bin/date。

Shell 中的路徑是一組被分割的目錄,在 Linux 和 macOS 上使用的 / 分割,在 Windows 上是 \,正因為這樣,我們在編程的時候一定要先獲取系統的分隔符(Java 是 File.separator 獲取的),不然會導致程序在不同的操作系統下無法執行!

如果某個路徑以 / 開頭,那么它就是一個絕對路徑,其他都是相對路徑。當前工作目錄可以通過 pwd 命令來獲取,切換目錄通過 cd 命令。. 表示的是當前目錄,.. 表示上級目錄。

Shell 會實時顯示當前的路徑信息。可以通過 ls 命令查看當前目錄下包含哪些文件,安裝了 Oh My Zsh 后,還可以通過 ll(其實是 ls -l 的簡寫)顯示文件或者文件夾的詳細信息。

簡單來介紹一下文件屬性,以后會很有用。

  • d:第 1 位表示文件類型,d 是目錄、l 是鏈接文件、- 是普通文件。
  • rwx:第 2-4 位表示這個文件的所有者擁有的權限,r 是讀、w 是寫、x 是執行。
  • r-x:第 5-7 位表示和這個文件的所有者所在同一個組的用戶具有的權限。
  • r-x:第 8-10 位表示其他用戶所具有的權限。

比如:

-rw-r--r-- 1 maweiqing staff 6B 1 12 16:35 hello.txt

表示 hello.txt 是個普通文件,maweiqing 擁有讀和寫的權限,但沒有執行的權限,和 maweiqing 所在的同一個 staff 組的用戶擁有只讀權限,剩余用戶同樣。

如果你想要知道命令的參數、輸入輸出信息,或者是想要了解它們的工作方式,可以試試 man 這個命令。它會接受一個程序名作為參數,然后將它的文檔(用戶手冊)展現出來。

man ls

可以按 q 鍵退出用戶手冊。你可以趁機學習一下 mv(用于重命名或移動文件)、 cp(拷貝文件)以及 mkdir(新建文件夾)這些常用命令。注意,rm (刪除文件)這個命令一定要慎用啊,搞不好就是刪庫跑路的節奏!

在 Shell 中,程序主要有兩個流:輸入流和輸出流。當程序嘗試讀取信息時,就從輸入流中讀取;當程序嘗試打印信息時,就將信息輸出到輸出流中。通常來說,鍵盤作為輸入設備,顯示器作為輸出設備。

可以使用 < 和 > 來重定向輸入輸出流。使用 >> 將輸出以追加的方式重定向到文件。

? itwanger echo hello > hello.txt ? itwanger cat hello.txt hello ? itwanger cat < hello.txt hello ? itwanger cat < hello.txt > hello1.txt ? itwanger cat hello1.txt hello ? itwanger echo world >> hello.txt ? itwanger cat hello.txt hello world

對于 Java 程序員來說,我們通常需要在運行環境上這樣運行 jar 文件。& 代表在后臺運行。

nohup java -jar XXX.jar > out.log &

對于絕大多數的類 Unix 系統,有一類用戶非常特殊,就是 root 用戶,可以創建、讀取、更新和刪除系統中的任何文件。

Unix 于 1969 年由貝爾實驗室開發,目前主流的 Unix 系統有三種,分別是 AIX、HP-UX、Solaris,互不兼容。Linux 于 1991 年由芬蘭大學生 Linus 開發,是一個類 Unix 系統,但是其代碼不源自任何 Unix 版本,完全不是 Unix 的一個分支。

通常來說,我們并不會用 root 用戶直接登錄系統,因為這樣可能會因為某些錯誤破壞系統。所以在需要的時候,我們會使用 sudo 命令,也就是以 su(super user)的身份去執行一些操作。

當你遇到 permission denied(拒絕訪問)的錯誤時,通常是因為需要是 root 用戶才能操作的原因引起的。get 了吧?

學到這,你掌握的 Shell 知識已經可以完成一些基礎的任務了。有云服務器的同學,或者安裝了虛擬機的同學,可以在上面建個臨時文件夾練習下文中提到的命令。

最后,希望同學們都能把 Shell 用好,工作后會大有幫助的!覺得不錯的話,歡迎一鍵三連,做個帥氣美麗的三連人


推薦閱讀:

V4.0 《JavaGuide 面試突擊版》來啦!GitHub 上標星 98.1k,幫你成功上岸!

奉勸那些想把編程學好的學弟學妹們!嘔心瀝血,袒露心聲,掏心掏肺

總結

以上是生活随笔為你收集整理的计算机教育中缺失的一课,劝学弟学妹们一句,一定要趁早补上,工作后会如有神助!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。