励志语录 点击: 2013-09-16
linux基本语句
linux基本语句(不断更新) 2008-10-16 23:54:27 阅读77 评论0 字号:大中小 订阅
用linux有好一段时间了,感觉基础的命令才是最重要的,直接决定你操作的熟练程度和效率,下面
来总结一下常用的和不常用的linux命令,有些命令不常用的,是要反复去看才能记住的。
1.最基础的ls命令,相当于win下的dir命令,常用参数有 -a,-l
2.cd命令,cd到一个目录,跟win下的一个样;
3.mkdir命令,创建一个文件夹,后跟要创建的文件夹名称;
4.touch命令,创建文档文件,后面直接给出参数列表为要创建的文件名;
5.rm命令,直接用rm可以删除文件,要删除目录的话用rm -rf,不管里面有没东西都删;
6.pwd命令,查看当前目录;
7.ifconfig命令,查看网络信息,包括ip,掩码,网关,mac;
8.打包方法:tar -cvf filename.tar filename解包方法:tar -xvf filename.tar -C fileIndex;
9.压缩 gzip filename.tar 解压:gunzip filename.tar.gz;
10.压缩二:bzip2 filename.tar解压:bunzip2 filename.tar.bz2;
11.su -普通用户切换到超级用户 su加普通用户名切换回普通用户;
12.chmod命令,修改文件和文件夹的权限,可读 | 可写 | 可执行 r | w | x 4 | 2 | 1,例如,chmod 755 filename给filename这个文件赋予用户的权限是可读可写可执行,群用户的权限是可读可执行,其他用户
的权限是可读可执行;注,chmod一定要在超级用户下使用,不然的话加sudo吧;
13.chown 用户:群组 修改用户和群组
14.groupdel 群组 用户删除群组;
15.du -h用于查看文件系统的使用状况;
16.uname -a查看系统信息;
17.useradd 用户名 创建新用户,如useradd ken,这样的话就创建了一个ken的用户,属于ken用户群,而要是想把他定义到别的群的话用这样的命令:useradd -g ken fang,把ken用户放在了fang这群组里;
18.userdel 用户名 删除用户;
19.top命令,用户查看当前运行的进程,在这里连木马都可以看出来的!!按q退出;
20.df -Th命令,查看磁盘状况;
21.clear清屏命令;
22.cal查看年历,例如要查看今年的日历,只要cal 2008,要查看某月的日历,cal 10 2008;
23.rpm命令:用于安装rpm包,主要参数有 -ivh ,参数v是用来显示包的名称的,这个名称比较重要,要是要查看软件是否安装成功的话只能用那个名称的。例子:rpm -ivh linuxqq-v1.0-preview2.i386.rpm安
装了一个QQ,安装的时候有进度条显示(h参数),还有显示包名称,可以用如下命令查看软件是否安装成功:rpm -q linuxqq;如果再加一个参数l即rpm -ql linuxqq的话可以查看到软件的安装目录,这个命令
很实用很强大!!!;
24.rpm命令后续,rpm -qa可以查看系统安装有哪些rpm包并且查询功能支持通配符,也就是说,我们可
以缩小范围查看,如rpm -qa x* 用来查看出安装了哪些名字以x开始的包;
25.rpm -Va命令可以查看rpm包是否损坏或被篡改;以下字符表示相关验证失败:5:MD5 校验码;S:文件尺寸; L:符号链;T:文件修改日期;D:设备;U:用户;G:用户组;M:模式 e (包括文件权
限和类型)
25.rpm -e 软件名,可以卸载软件包;
26.kill命令:用于杀死进程,后面跟的参数是进程pid;
27.mount和umount,挂接和卸载分区;
28.startx,从图形界面转到字符界面;
29.bc 调出一个简单的计算器,输入quit退出,bc 预设仅输出整数,如果要输出小数点下位数,那么就
必须要执行scale=number ,那个 number 就是小数点位数;
30.sync 把暂存在内存中的数据写入硬盘,通常在关机的时候执行该命令,可以防止意外的数据丢失;
31.关于文件权限的说明:有一个目录若给others赋予r的权限,是否其他用户就能进入这个目录呢?答案是否定的。因为在该目录底下不能执行任何指令的话,那么自然也就无法执行 ls, cd 等指令,故没法进入,
想进入就要加上x权限。
32.ubuntu安装的时候是没有设置root密码的,ubuntu的说法是尽可能地让安装变得简单,其实要设置也
不难,就用sudo passwd root就行。
慈林语录附录一
《慈林語錄》附錄一 語錄作者及其著作、參考書籍(完整版)
說明:
1. 本附錄第一部分「作者」,敘明語錄原作者、簡要生平。
2. 語錄取材自作者之著作或他人編著之作者言行錄者,敘明於第二部分「著作」中。
3. 語錄取材自前項「著作」外之書籍者,敘明於第三部分「參考書籍」中。
4. 語錄中有一小部分係引述他人所引述之語句,有可能不出在前述第2、3項書籍中。敬請知其出處的讀
者,惠賜教正。
5. 取材之書籍,均詳列作者、譯者、編者及出版社,以示對文化工作者的敬意,並便於讀者購買做更深
入的閱讀研究。也懇請譯者或出版社能與我們連繫,好讓我們再次表示敬意和適當感謝。
6. 同一作者的二句金言,雖出自不同著作,在書中偶爾會編排在一起。
7. 金言後未列作者姓名者,是編者自撰。又第二章「自然」中所引用數據,係取材自維基百科 。
作者姓名、常用譯名、簡歷
【A】
Peter Ackerman 彼得‧艾克曼、Jack DuVall 傑克‧杜瓦,美國非暴力抗爭國際中心主席、會長,共同著作《非
暴力抗爭》。
John Adams 約翰‧亞當斯,1735-1826,美國第二任總統。
Alfred Adler 阿德勒,1870-1937,奧地利心理學家、個體心理學派創立人。
Aesop 伊索,ca.620-560B.C.,古希臘寓言作家。
Inge Aicher-Scholl 英格‧蕭爾,1917-1998,德國作家,二戰時期反納粹學生組織「白玫瑰」成員之一 。 Szent-Györgyi Albert 奧爾貝特,1893-1986,匈牙利生理學家,獲1937年諾貝爾醫學獎。
Henri Frédéric Amiel 艾米爾,1821-1881,瑞士哲學家、評論家。
Kofi Atta Annan 安南,1938- ,迦納籍聯合國第七任秘書長,2001年獲諾貝爾和平獎。
St. Thomas Aquinas 聖多瑪斯,1225-1274,義大利宗教思想家。
John Arbuthnot 約翰‧阿布斯諾特,1667-1735,英格蘭作家、醫生。
Aristotle 亞里斯多德,384-322 B.C.,古希臘哲學家。
St. Augustine 奧古斯丁,354-430,羅馬神學家、思想家。
Aung San Suu Kyi 翁山蘇姬,1945- ,緬甸提倡非暴力運動的民主政治家,現被緬甸軍政府軟禁於其寓所。
1991年獲得諾貝爾和平獎。
Marcus Aurelius 奧里略,121-180,羅馬皇帝、斯多噶派哲學家。
【B】
Francis Bacon 培根,1561-1626,英國散文作家、哲學家、政治家。
Bernard Baruch 貝勒克,1870-1965,美國財政家和政治家。
Ludwig van Beethoven 貝多芬,1770-1827,德裔奧地利籍作曲家。
Jeremy Bentham 邊沁,1748-1832,英國哲學家、法學家,提倡功利主義。
Isaiah Berlin 以撒‧柏林,1909-1997,英國哲學家。
Otto von Bismarck 俾斯麥,1815-1898,德意志帝國第一任總理。
Chalotte Bronte 夏洛特‧勃朗蒂,1816-1855,英國小說家。
Emily Bronte 愛彌麗‧勃朗特,1818-1848,英國小說家。
Edmund Burke 艾德蒙‧柏克,1729-1797,愛爾蘭哲學家、演說者、政治家。
Samel Butler 巴特勒,1835-1903,英國小說家。
【C】
Albert Camus 卡繆,1913-1960,法國哲學家、存在主義文學家。
Thomas Carlyle 卡萊爾,1795-1881,英國社會學家、歷史家和哲學家。
Forrest Carter 佛洛斯特.卡特,1925-1979,美國作家,有八分之一印地安血統,本名 Asa Carter。 Pablo Casals卡薩爾斯,1876-1973,西班牙大提琴家、作曲家、指揮家。
William Ellery Channing 柴寧,1780-1842,美國神學家,有「上帝一位論派的使徒」之稱。
Pierre Teilhard de Chardin 德日進,1881-1955,法國天主教進化論者、考古學家。
Marcus Tullius Cicero 西塞羅,106-43B.C.,羅馬演說家、政治家。
Paulo Coelho 保羅‧科爾賀,1947-,巴西作家。
【D】
Robert A. Dahl 羅伯特‧道爾,1915-,耶魯大學政治學系名譽教授。
Dalai Lama 達賴喇嘛,1935- ,本名丹增嘉措Tenzin Gyatso,西藏政教領袖、1989諾貝爾和平獎得主。 Charles Robert Darvin 達爾文,1809-1882,英國科學家、進化論的創立者。
Clarence Darrow 丹諾,1857-1938,美國律師、評論家。
Leonardo da Vinci 達文西,1452-1519,義大利畫家、雕刻家、建築工程師。
Miguel de Cervantes Saavedra 賽萬提斯,1547-1616,西班牙文學家。
Daniel Defoe 狄福,1660-1731,英國小說家。
Josef de Maistre 約瑟夫‧邁斯特,1753-1821,法國外交家。
Democritus 德謨克里特,460-370 B.C,古希臘哲學家。
Demosthenes 狄摩西尼,ca.384-322 B.C.,古希臘演說家、政治家。
Rene Descartes 笛卡兒,1596-1650,法國哲學家、數學家、物理學家、西方現代哲學思想的奠基人。 John Dewey 約翰‧杜威,1859-1952,美國教育家、實用主義哲學家。
Charles Dickens 狄更生,1812-1870,英國文學家。
Emily Dickinson 艾蜜莉‧狄金森,1830-1886,美國詩人。
Walt Disney 迪斯奈,1901-1966,美國電影製作人。
Feodor Mikhailovich Dostoevsky 杜斯妥也夫斯基,1821-1881,俄國文學家。
Alexandre Dumas,” The Elder” 大仲馬,1802-1870,法國作家。
Will Durant(William James Durant) 威爾‧杜蘭,1885-1981,美國史學家、哲學家。
【E】
Max Eastman 伊士曼,1883-1969,美國詩人、編輯。
Echnaton 埃希納登,1364-1348B.C.,古埃及國王。
Thomas Alva Edison 愛迪生,1847-1931,美國發明家。
Albert Einstein 愛因斯坦,1879-1955,德裔美國科學家,相對論的創立者。
George Eliot 喬治‧艾略特,1819-1880,英國文學家,本名Mary Ann Evans。
Havelock Ellis 艾里斯,1859-1939,英國心理學家和作家。
Ralph Waldo Emerson 愛默生1803-1882,美國文學家、詩人、思想家。
Epicurus 伊比鳩魯,341-270B.C.,古希臘哲學家,伊比鳩魯學派的創立人。
Epictetus 愛比克泰德,55-135,古希臘斯多噶派哲學家。
Erhard Eppler 艾爾哈特‧艾普勒,1926- ,德國社民黨(SPD)政治領袖之一。
Desiderius Erasmus 伊拉斯摩斯,1466-1536,荷蘭人文主義學者、神學家。
【F】
Henry Fielding 亨利‧菲爾丁,1707-1754,英國小說家、劇作家。
Henry Ford 亨利‧福特,1863-1947,美國實業家、福特汽車公司創辦人。
Gerald R. Ford 傑拉爾德‧福特,1913-2006,美國政治家,任第40屆副總統後繼任總統。
St. Francis of Assisi 聖法蘭西斯,1182-1226,義大利天主教神父,方濟會創辦者。
Benjamin Franklin 富蘭克林,1706-1790,美國科學家、文學家、外交家。
Sigmund Freud 佛洛伊德,1856-1939,奧地利人,心理分析學派創立者。
Robert Frost 羅伯特‧佛洛斯特,1874-1963,美國詩人。
Erich Fromm 弗洛姆,1900-1980,德裔美國哲學家、精神分析學家。
Fukuzawa Yukichi 福澤諭吉,1835-1901,日本明治時期思想家、教育家,創立慶應義塾大學。
【G】
Mohandes Karamchand Gandhi 甘地,1869-1948,印度獨立運動領導人、不合作運動倡導者,獲印人稱為
"Mahatma Gandhi"(偉大的靈魂甘地) 。
José Ortegay Gasset 奧特嘉,1883-1955,西班牙哲學家、報人及評論家。
Henry George 亨利‧喬治,1839-1897,美國經濟學家,單一稅制倡導人。
Edward Gibbon 吉朋,1737-1794,英國歷史學家。
Khalil Gibran 紀伯倫,1883-1931,黎巴嫩詩人。
William Godwin 威廉‧戈德溫,1756-1836,英國哲學家、社會改革者。
Johann Wolfgang von Goethe 歌德,1749-1832,德國詩人、文學家。
Jane Goodall 珍‧古德,1934- ,英國保育學家。
Maksim Gor’kij 高爾基,1868-1936,俄羅斯作家。
John Bartholomew Gough 約翰‧果夫,1817-1886,美國演說家。
Baltasar Gracian 巴爾塔沙‧葛拉西安,1601-1658,西班牙神父、思想家。
【H】
Václav Havel 哈維爾,1936- ,捷克劇作家、政治異議人士、捷克共和國第一任總統。 Nathaniel Hawthorne 霍桑,1804-1864,美國作家。
Ernest Hemingway 海明威,l899-1961,美國小說家,1954諾貝爾文學獎得主。 Herodotus 希羅多德,ca.484-430BC,古希臘作家。
Herman Hesse 赫曼‧赫塞,1877-1962,德國詩人、文學家,1946年獲得諾貝爾文學獎。 Carl Hilty 希爾提,1833-1909,瑞士法學家、教育家、思想家。
Hippocrates 希波克拉底,ca.460-377B.C.,古希臘醫生,被譽為「醫學之父」。 Eric Hoffer 賀佛爾,1902-1982,美國社會主義作家。
Homer 荷馬,ca.700B.C.,古希臘遊吟詩人。
Horace 賀拉斯,65-8B.C.,羅馬抒情詩人。
Victor Hugo 雨果,1802-1885,法國詩人、小說家、劇作家。
David Hume 休姆,1711-1776,蘇格蘭歷史學家、哲學家。
Thomas Henry Huxley 湯瑪斯‧赫胥黎,1825-1895,英國生物學家、作家。
Aldous Huxley 阿道斯‧赫胥黎,1894-1963,英國作家。
【I】
Isocrates 艾索克拉底,436-338 B.C.,古希臘演說家、修辭學教育家。
【J】
Thomas Jefferson 傑佛遜,1743-1826,美國獨立宣言起草人,第3任總統。
Samuel Johnson 約翰生,1709-1784,英國文學家、字典編纂者。
Carl Gustav Jung 榮格,1875-1961,瑞士心理學家,分析心理學創立者。{linus语录}.
【K】
Immanuel Kant 康德,1724-1804,德國哲學家。
Kent M. Keith 肯特.齊思,1962- ,美國作家。
Helen Adams Keller 海倫‧凱勒,1880-1968,美國作家、教育家,患有視障、聽障。
linux的语言设置
程序运行使用一套语言需要有字符集(数据)和字体(显示),Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。
一、locale详解
在 Linux 中通过 locale 来设置程序运行的不同语言环境,locale 由 ANSI C 提供支持。locale 的命名规则为:
<语言>_<地区>.<字符集编码>
如:
zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。 在locale环境中,有一组变量,代表国际化环境中的不同设置:
1、LC_COLLATE
定义该环境的排序和比较规则
2、LC_CTYPE 用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
3、LC_MONETARY
货币格式
4、LC_NUMERIC
非货币的数字显示格式
5、LC_TIME
时间和日期格式
6、LC_MESSAGES
提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
7、LANG
LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。
8、LC_ALL
它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。
一个例子:
设置前,使用默认locale: # locale LANG="POSIX" LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX"
LC_ALL=
设置后,使用zh_CN.GBK中文locale:
# export LC_ALL=zh_CN.GBK
# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.GBK" LC_NUMERIC="zh_CN.GBK" LC_TIME="zh_CN.GBK" LC_COLLATE="zh_CN.GBK" LC_MONETARY="zh_CN.GBK" LC_MESSAGES="zh_CN.GBK" LC_PAPER="zh_CN.GBK" LC_NAME="zh_CN.GBK" LC_ADDRESS="zh_CN.GBK" LC_TELEPHONE="zh_CN.GBK" LC_MEASUREMENT="zh_CN.GBK" LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK
"C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。
二、locale常用操作
1、查看现有语言环境:
locale
2、可用语言环境: locale -a
3、临时修改语言环境: AIX: export LANG=en_US export LANG=zh_CN
Linux: export LANG=en_US.UTF-8 export LANG=zh_CN.UTF-8
4、永久修改系统级字符集:
修改/etc/sysconfig/i18n 英文版系统: LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
中文版系统:
Linux 设置系统语言和终端用户语言
Linux 设置系统语言和终端用户语言
2012-04-15 10:49:59| 分类: | 标签: |举报 |字号大中小 订阅
改变个人终端语言
修改登录用户的.bashrc文件加入
中文:export LANG=zh_CN.GB18030
英文:export LANG=en_US 这将改变整个环境的语言,不只是终端窗口{linus语录}.
终端临时更改:比如要修改为中文的,使用下面的命令即可
export LANG=“zh_CN.GBK”
或者en_US英文
以下摘自网络,未实践
修改系统语言会对所有登录到该主机的用户起效。
修改终端语言只会对当前登录用户起效,并且一旦关闭终端则更改失效,下次登录需要重新设置。 修改 /etc/sysconfig/i18n 文件,如
LANG="en_US.UTF-8",xwindow会显示英文界面,
LANG="zh_CN.GB18030",xwindow会显示中文界面。
还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG="en_US.UTF-8",xwindow会显示英文界面,
LANG="zh_CN.GB18030",xwindow会显示中文界面。
这样就可以改变个人的界面语言,而不影响别的用户
修改后的/etc/sysconfig/i18n 文件为:
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8"
export LC_ALL
设置完毕后重启或者用rc.local使生
经典C语言算法实现(linux系统)
经典C语言算法实现
河内塔
费式数列
巴斯卡三角形
三色棋
老鼠走迷官(一)
老鼠走迷官(二)
骑士走棋盘
八个皇后
八枚银币
生命游戏
字串核对
双色、三色河内塔{linus语录}.
背包问题(Knapsack Problem)
数、运算
蒙地卡罗法求 PI
Eratosthenes筛选求质数
超长整数运算(大数运算){linus语录}.
长 PI
最大公因数、最小公倍数、因式分解
完美数
阿姆斯壮数
最大访客数
中序式转后序式(前序式)
后序式的运算
关于赌博
洗扑克牌(乱数排列)
Craps赌博游戏
约瑟夫问题(Josephus Problem)
集合问题
排列组合
格雷码(Gray Code)
产生可能的集合
m元素集合的n个元素子集
数字拆解
排序
得分排行
选择、插入、气泡排序
Shell 排序法 - 改良的插入排序
Shaker 排序法 - 改良的气泡排序
Heap 排序法 - 改良的选择排序
快速排序法(一)
快速排序法(二)
快速排序法(三)
合并排序法
基数排序法
搜寻
循序搜寻法(使用卫兵)
二分搜寻法(搜寻原则的代表)
插补搜寻法
费氏搜寻法
矩阵
稀疏矩阵
多维矩阵转一维矩阵
上三角、下三角、对称矩阵
奇数魔方阵
4N 魔方阵
2(2N+1) 魔方阵
1.河内之塔
说明河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。
解法如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B、A ->C、B->C这三个步骤,而被遮住的部份,其实就是进入程式的递回处理。事实上,若有n个盘子,则移动完毕所需之次数为2^n - 1,所以当盘数为64时,则所需次数为:2^64- 1 = 18446744073709551615为5.05390248594782e+16年,也就是约5000世纪,如果对这数字没什幺概念,就假设每秒钟搬一个盘子好了,也要约5850亿年左右。
#include <stdio.h>
void hanoi(int n, char A, char B, char C) {
if(n == 1) {
printf("Move sheet %d from %c to %c\n", n, A, C);
}
else {
hanoi(n-1, A, C, B);
printf("Move sheet %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
}
int main() {
int n;
printf("请输入盘数:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}
2.Algorithm Gossip: 费式数列
说明
Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。
如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是Fibonacci数列,一般习惯称之为费氏数列,例如以下: 1、1 、2、3、5、8、13、21、34、55、89......
解法
依说明,我们可以将费氏数列定义为以下:
fn = fn-1 + fn-2 if n > 1
fn = n if n = 0, 1
#include <stdio.h>
#include <stdlib.h>
#define N 20
int main(void) {
int Fib[N] = {0};
int i;
linux+shell脚本语言基础知识
linux shell脚本语言基础知识
一.shell简介
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,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),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。
二.shell使用
1.建立和运行shell程序
shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限)
像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件:
#!/bin/bash
#hello world example{linus语录}.
echo "hello world"
这样,一个最简单的shell程序就编写完了。
第一行:#!说明hello.sh这个文件的类型的,这有点类似于Windows系统下的用不同的文件后缀来表示不同的文件类型,但又不完全相同。Linux系统根据#!及该字符串后面的信息确定该文件的类型。在#!之后是一个路径名,这个路径名指定了一个解释脚本中命令的程序。
第二行:“#hello world example”就是shell程序的注释,(但后面紧接着“!”号的除外)
第三行:echo(回显)语句的功能是把echo后面的字符串输出到标准输出中。 现在,建立和写好之后,那么该程序如何运行呢?
由于该脚本没有执行的权限,只需要修改其执行的权限即可,执行:chmod a+x hello.sh。然后输入命令:./hello.sh即可看到效果。
2.shell变量
变量是一个存储值的实体,可以是一个名字,或者一个特殊的值。shell可以创建,分配和删除变量。
(1)变量设置规则:
a.变量与变量内容以等号(=)来连接
b.等号两边不能直接接空格符
c.变量名称只能是英文字母与数字或下划线,但是数字不能是开头符
d.引用变量名用“$变量名”
#!/bin/bash
#hello world example
a="hello world"
echo $a
以上例子一样可以输出hello world。
e.若有空格符可以使用双引号或单引号将变量内容结合起来,但必须注意,双引号的特殊字符可以保有变量的特性,但是单引号内的特殊字符则仅为一般字符。
#name="$LOGNAME is hh" //root is hh
#name='$LOGNAME is hh' //$LOGNAME is hh
f.通常大写字符为系统预设变量,自行设定的变量可以使用小写字符
(2)取消变量:用unset 变量名
#!/bin/bash
#hello world 例子
a="hello world"
unset a
echo $a
以上例子将不会打印出任何东西。
3.shell特殊变量
$0 :执行的脚本的文件名
$1 :脚本文件的第一个参数名
$# :传递到脚本的参数个数
$* :以一个单字符串显示所有向脚本传递的参数
$$ :脚本运行的当前进程ID号
$? :显示最后命令的退出状态,0表示没有错误,其它值表示有错误 例子a.sh
#!/bin/bash
echo "the file is $0"
echo "the parameter is $1 $2"
echo "number of parameter is $#"
echo "all parameter is $*"
echo $?
加权限后执行./a.sh hh mm gg
则打印
the file is ./a.sh
the parameter is hh mm
number of parameter is 3
all parameter is hh mm gg
4.常用shell内嵌命令
(1)echo:显示变量内容
(2)env:显示目前系统中主要的预设变量内容
(3)set:显示目前系统中全部的变量内容
(4)read:从键盘读入变量内容
(5)declare:声明变量内容
-a:定义为数组 array
-f:定义为函数 function
-i:定义为整数 integer
-r:定义为“只读”
-x:定义为透过环境输出变量、
例子:
#!/bin/bash
a=1+1
declare -i b=1+1
echo $a
echo $b
执行后输出结果为 1+1
2
5.条件测试
在写shell脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文件状态或进行数字测试,只有这些测试完成才能做下一步动作。
test命令就是用于测试字符串,文件状态和数字的.test命令两种格式: test condition
或 [ condition ]
使用方括号时,要注意在条件两边加上空格
三.shell脚本编程基础知识
1.shell基本运算符
(1)算术运算符