在linux下通常使用gedit或vim直接編寫.c程序,然后通過gcc指令編譯。以Ubuntu系統(tǒng)為例,詳細過程如下:
從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供做網(wǎng)站、網(wǎng)站設計、網(wǎng)站策劃、網(wǎng)頁設計、域名申請、虛擬空間、網(wǎng)絡營銷、VI設計、 網(wǎng)站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。
1、進入桌面Temp文件夾
2、右鍵新建空白文件
3、將文件命名為hello.c
4、進入hello.c,開始編寫代碼(默認gedit為編輯器)
5、編寫代碼,保存退出
6、點擊右列“終端”,或者直接Ctrl+Alt+T通過快捷組合鍵進入終端
7、進入hello.c所在目錄,通過gcc進行編譯、鏈接、生成可執(zhí)行文件hello,命令為gcc -o hello hello.c。
8、執(zhí)行(可執(zhí)行)文件hello,命令為./hello。
參考資料:
GCC——百度百科
Linux常用命令——百度百科
摘要: Linux , Python
工作中需要頻繁使用到一個字符串的md5,因此編寫一個md5命令工具,輸入字符串直接得到輸出,并且命令支持參數(shù)設置,比如是否事先格式化,指定不同參數(shù)可以支持多功能輸出,操作步驟如下
直接vim一個腳本,腳本名md5不需要.py后綴,這樣更像一個命令,注意在腳本第一行引入python解釋器,并設置utf-8編碼
其中-f支持先格式化再得到md5,-l支持傳入多個字符串用空格分開
賦予可執(zhí)行權限
測試是否符合要求
直接放置到 /usr/local/bin 目錄下(需要root權限)
也可以使用軟連接的方式,推薦使用絕對路徑
之后就可以在環(huán)境變量中直接使用到md5命令
shebang :中文翻譯“釋伴”,由 #! 開頭的字符串,出現(xiàn)在文本文件的 第一行 。類UNIX操作系統(tǒng)的程序載入器會分析shebang后的內容,將這些內容作為解釋命令,并調用該指令,并將載有 shebang的文件路徑作為該解釋器 的參數(shù)
比如 #!/bin/bash 就是使用/bin/bash作為解釋器運行腳本,如果以Python作為解釋器運行腳本先找到Python解釋器的路徑,一般在Linux自帶的 /usr/bin/python 是Python2版本,也可以指定其他Python版本 #!/opt/anaconda3/bin/python ,第二行為 # coding=utf-8 用來指定編碼格式,否則Python2輸出中文亂碼
對于自定義腳本,推薦放置在 /usr/local/bin 目錄,有多個可執(zhí)行文件目錄在環(huán)境變量中,區(qū)別如下:
/bin : 包含二進制可執(zhí)行文件,為系統(tǒng)最基本的命令,如ls等
/sbin : 與/bin 類似,不同之處是其為root權限命令文件
/usr/bin : 系統(tǒng)預裝可執(zhí)行文件,會隨著系統(tǒng)升級而改變
/usr/sbin : 同上,不同之處是其為root權限運用
/usr/local/bin : 三級目錄,用戶自己的可執(zhí)行文件,系統(tǒng)不管理
/usr/local/sbin : root權限用戶程序
如何學習 Linux 命令和工具呢? 相信這是一個令許多Linux 初學者和愛好者欲前又止的頗為頭疼的一件事,也是我目前一直在思考的問題。因為我也期望能夠更輕松地學好用好 Linux 命令和工具。 以下是我的一些思考結果。
0. 安裝一個 Linux 版本
雖然 Windows 下提供了像 cygwin 類似的工具來模擬 Unix 環(huán)境和實用工具,不過,品嘗原滋原味的口味不是更好嗎? 最重要的是有真實的氛圍。
1. 摒棄神秘感和畏懼感
a. Linux 命令只是一個可靠的小程序,用來完成特定用途的一件事;
b. Linux 命令提供了多種選項來控制其行為,以產生多樣的效果和靈活性。不過,需要掌握的常用選項并不多。
簡而言之, 需要知道兩件事: 它是用來做什么事的; 有哪些常用選項和適用場合。 初期不必貪多求全。
2. 三個要過關
a. 英語障礙。 好的文檔和幫助信息都是英文編寫的。因此英語要過關, 至少要達到熟練無障礙閱讀的地步; 只要有高中英語水平和一本中英詞典就足夠應對了;
b. 理解障礙。 學習Linux 命令無非是要理解其用途及用法。有時候,需要補習計算機專業(yè)基礎知識來理解和使用該工具所涵蓋的含義和用途;
c. 心態(tài)障礙。 大多數(shù) Linux 命令提供了 N 多選項,往往令人無所適從。因此,要耐心,細心、靜心。用一種探索的精神去深入。
若能克服上述障礙和困難,相信會受益匪淺的。把它看成一種挑戰(zhàn)和進步的機會,不要逃避。
3. 若干準則
a. 先將最常用的命令及常用選項掌握純熟,不要貪多求全; 掌握正則表達式;
b. 從選項較少的簡單的命令學起,逐步復雜化; 當然也可反著來,先征服最難的;
c. 每天一個命令, 持之以恒;
d. 相關命令關聯(lián)學習, 比如 which , whereis , type, locate , find .
4. 若干技巧
a. man , info , --help , -h 參看幫助信息;
b. man -k keyword ; apropos keyword 根據(jù)關鍵字查看相關的命令;
c. 使用文本文件;
d. 善于將任務分解為若干簡單的子任務;
e. 掌握管道、IO重定向;
5. 命令的學習步驟
S1: man cmd or cmd --help 首先了解其基本用途;
S2: 閱讀其選項,動手實踐,確切理解其選項含義; 揣摩作者為什么要設計這些選項;
S3: 自己思考下, 對于其用途,最常用的是什么需求和適用場合;
S4: 利用該命令(或組合其他命令)解決問題;
6. 找一本好的參考書籍
推薦 《Shell腳本學習指南》。 這本書非常具有實用性, 它不是照本宣科地從語法講起, 從一開始就專注于 LINUX 的常用標準工具和腳本編寫的重要技巧。 建議先找一本簡單的入門書了解下,再來閱讀此書比較好,適用于對 Shell 有一知半解,期望能夠系統(tǒng)深入地學習和使用 Shell 的讀者。 我覺得買了這本書非常實在劃算。
文件名稱區(qū)分大小寫
文件名最長255個字符
包括路徑在內文件名稱最長4095個字節(jié)
藍色--目錄:綠色--可執(zhí)行文件:紅色--壓縮文件:淺藍色--鏈接文件:灰色--其它文件
除了斜杠和NUL,所有字符都有效,使用特殊字符的目錄名和文件不推薦使用,有些字符需要加引號來引用
標準Linux文件系統(tǒng),文件名稱大小寫敏感
/boot: 內核引導文件存放目錄
/bin: 所有用戶使用的基本命令;不能關聯(lián)至獨立分區(qū),系統(tǒng)啟動會用到的程序
/sbin: 管理類的基本命令;不能關聯(lián)至獨立分區(qū),系統(tǒng)啟動會用到的程序
/lib: 系統(tǒng)啟動時程序依賴的基本共享庫文件及內核模塊文件(/lib/modules)
/etc: 配置文件目錄
/home: 普通用戶家目錄
/root: 管理員家目錄
/media: 便攜式移動設備掛載點
/mnt: 臨時文件系統(tǒng)掛載點
/dev: 設備文件及特殊文件存儲位置
/opt: 第三方應用程序安裝位置,同/usr/local
/srv: 系統(tǒng)服務用到的數(shù)據(jù)
/tmp: 存儲臨時文件
/usr: 系統(tǒng)軟件資源存放目錄
/var: 系統(tǒng)運行時的可變動數(shù)據(jù):/var/tmp:系統(tǒng)兩次重啟產生的臨時數(shù)據(jù)
/proc: 內核與進程信息相關的虛擬文件系統(tǒng)
/sys: 硬件設備相關信息的虛擬文件系統(tǒng)
/selinux: selinux安全策略
meta data:?
文件類型,權限,UID,GID
鏈接數(shù)(指向這個文件名路徑名稱個數(shù))
該文件的大小和不同的時間戳
指向磁盤上文件的數(shù)據(jù)塊指針
有關文件的其他數(shù)據(jù)
? ? 文件類型:
? ? ? ? -: 普通文件
? ? ? ? d: 目錄文件
? ? ? ? b: 塊設備
? ? ? ? c: 字符設備
? ? ? ? l: 符號鏈接文件
? ? ? ? p: 管道文件pipe
? ? ? ? s: 套接字文件socket
? ? 查看方式:
? ? ? ? 使用ll,ls -l: 看第一個字符,鏈接數(shù),
? ? ? ? ls -lih:
? ? ? ? ? ? inode編號,文件類型,文件權限,硬鏈接個數(shù),文件屬主,文件屬組,文件大小,文件修改時間
? ? ? ? file命令,type命令,
? ? ? ? stat命令: 文件詳細信息,修改時間mtime,改變時間ctime,訪問時間atime
? ? ? ? du -sm filename: 查看文件大小
? ? ? ? 文件擴展名:
? ? ? ? ? ? 源碼.tar、.tar.gz、.tgz、.zip、.tar.bz表示壓縮文件,創(chuàng)建命令一般為tar,gzip,zip等。
? ? ? ? ? ? .sh表示shell腳本文件,通過shell語言開發(fā)的程序。
? ? ? ? ? ? .pl表示perl語言文件,通過perl語言開發(fā)的程序。
? ? ? ? ? ? .py表示python語言文件,通過python語言開發(fā)的程序。
? ? ? ? ? ? .html、.htm、.php、.jsp、.do表示網(wǎng)頁語言的文件。
? ? ? ? ? ? .conf表示系統(tǒng)服務的配置文件。
? ? ? ? ? ? .rpm表示rpm安裝包文件。
? ? touch: 創(chuàng)建空文件和刷新時間戳
? ? ? ? touch [OPTION]... FILE...
? ? ? ? ? ? -a: 改變atime和ctime
? ? ? ? ? ? -m: 改變mtime和ctime
? ? ? ? ? ? -t: [[CC[YY[MMDDhhmm[.ss]]]]]
? ? ? ? ? ? ? ? 指定atime和mtime的時間戳
? ? ? ? ? ? -c: 如果文件不存在,則不予創(chuàng)建?
硬鏈接:
同一個文件多個名字
不支持跨分區(qū),不支持目錄
平級關系,刪除原始文件不影響打開
iNode相同,鏈接數(shù)增長
創(chuàng)建語法,原始文件路徑,相對于工作目錄的路徑
文件類型,普通文件
創(chuàng)建方式ln filename [linkname]
軟鏈接:
與原始文件,不同的文件
支持跨分區(qū),支持目錄
依賴關系,刪除原始文件即失效
iNode不同,鏈接數(shù)不會增長
創(chuàng)建語法,原始文件路徑,相對于軟鏈接的路徑
文件類型顯示l
創(chuàng)建方式ln -s filename [linkname]
實例說明:
cd ../data
mkdir -pv d1/d2
touch linux.txt
ln linux.txt d1/d2/linux.hlink
ln -s ../../linux.txt d1/d2/linux.slink
ln -s ../d2 d1/d2/d2.slink
tree
執(zhí)行如圖:
stat: 查看文件狀態(tài)
示例: stat /etc/issue
? ? stat/etc/motd
touch: 創(chuàng)建空文件和刷新時間
touch [OPTION]... FILE...
? ? -a: 僅改變atime和ctime
? ? -m: 僅改變mtime和ctime
? ? -t: 指定atime和mtime時間戳
? ? -c: 如果文件不存在,則不予創(chuàng)建
示例: touch /data/f1
cp: 復制文件和目錄
cp [OPTION]... SOURCE... DIRECTORY
? ? -i: 覆蓋前提示
? ? -n: 不覆蓋
? ? -r,-R: 遞歸復制目錄及內部的所有內容
? ? -a: 歸檔,相當于-dR --preserv=all
? ? -p: 等同--preserv=mode,ownership,timestamp
? ? -u: 只復制源比目標更新或目標不存在
? ? -b: 目標存在,覆蓋前先備份filename~
? ? --backup=numbered: 目標存在,覆蓋前先備份并加數(shù)字后綴
cp SRC DEST
? ? SRC是文件:
? ? ? ? 如果目標不存在: 新建DEST,并將SRC中內容填充至DEST中
? ? ? ? 如果目標存在:
? ? ? ? ? ? 如果DEST是文件: 將SRC中內容覆蓋至DEST中
? ? ? ? ? ? 如果DEST是目錄: 在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中
? ? SRC是多個文件:
? ? ? ? DEST必須存在,且為目錄
? ? SRC是目錄: 使用選項-r
? ? ? ? 如果DEST不存在: 則創(chuàng)建指定目錄,復制SRC目錄中所有文件至DEST中
? ? ? ? 如果DEST存在:
? ? ? ? ? ? 如果DEST是文件: 報錯
? ? ? ? ? ? 如果DEST是目錄:在DEST下新建與原目錄同名的目錄,并將SRC中內容復制至新目錄中
示例: mkdir -p /data/backup
? ? cp -ab /etc/issue /etc/passwd /etc/group /data/backup
mv: 移動和重命名文件
mv [OPTION]... SOURCE... DIRECTORY
? ? -f: 強制
? ? -b: 目標存在,覆蓋前先備份
示例: mv /etc/issue /data
? ? mv /etc/issue /data/issue.bak
rm: 刪除
rm [OPTION]... FILE...
? ? -f: 強制刪除
? ? -r: 遞歸
? ? --no-preserve-root 刪除/
示例: rm -rf /data/d1/d2
tree: 顯示目錄樹
-d:只顯示目錄
-L level: 指定顯示的層級數(shù)目
-P pattern: 只顯示由指定pattern匹配到的路徑
示例: tree /data
ls:列出指定目錄下的內容
ls [OPTION]... [FILE]...
-a:顯示所有文件包括隱藏文件
-A:顯示除.和..之外的所有文件
-l,--long:顯示文件的詳細屬性信息
-h:對文件大小進行單位換算,可能影響精度
-d:查看目錄本身而非其內部的文件
-r:逆序顯示文件
-R:遞歸顯示文件
示例:ls -lah / 詳細顯示/目錄下的所有文件(包括隱藏文件)
mkdir:創(chuàng)建目錄
mkdir [OPTION]... DIRECTORY...
-p:自動按需創(chuàng)建父目錄
-m:創(chuàng)建目錄時給定權限
示例: mkdir -p /data/test/A/B
cat:正向查看文本內容
cat [OPTION]... [FILE]...
-n:給顯示的文本行編號
-E:顯示行結束符號$
示例: cat -n /etc/fstab
tail:顯示文本內容,默認顯示后10行
tail [OPTION]... [FILE]...
-n #:顯示文本后#行內容
-f:查看文件尾部內容結束后不退出,跟隨顯示新增的行
示例: tail -8 /etc/passwd
head:顯示文本內容,默認顯示頭10行
head [OPTION]... [FILE]...
-n #:顯示文本頭#行內容
示例: head -5 /etc/passwd
less:分屏顯示文本內容,不主動退出
less [options] file [...]
Space鍵:顯示文本下一屏內容
Enter鍵:只顯示文本下一行內容
b鍵:顯示文本上一屏內容
q鍵:退出
cp /etc/profile /tmp
vim /tmp/profile
:%s/^\s\+//
如圖:
命令模式下輸入:
:set tabstop=4
或寫入用戶配置文件~/.vimrc