设为首页 收藏本站
查看: 381|回复: 0

[经验分享] Linux && bash简介

[复制链接]

尚未签到

发表于 2016-1-14 08:20:42 | 显示全部楼层 |阅读模式
目的

便于大家了解linux bash,便于大家的trouble shooting~


linux 简介


(copied from wikipedia)
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux操作系统诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。


历史


创始人Linus Benedict Torvalds(1969年~),发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。


  • 1981 年IBM公司推出微型计算机IBM PC。
  • 1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。
  • 1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。
  • 1994年3月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。


内核


内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。使用linux内核的操作系统,统称为linux。linux内核主要包括以下功能:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。
核心的开发和规范一直是由Linux社区控制着,版本也是唯一的。
目前内核版本是3.


发行版


Linux发布版指的就是通常所说的“Linux操作系统”,它可能是由一个组织,公司或者个人发布的。Linux主要作为Linux发布版(通常被称为"distro")的一部分而使用。通常来讲,一个Linux发布版包括Linux内核,将整个软件安装到计算机上的一套安装工具,各种GNU软件,其他的一些自由软件,在一些特定的Linux发布版中也有一些专有软件。发布版为许多不同的目的而制作,包括对不同计算机硬件结构的支持,对一个具体区域或语言的本地化,实时应用,和嵌入式系统。目前,超过三百个发布版被积极的开发,最普遍被使用的发布版有大约十二个。较为知名的有SUSE、RedHat、Fedora、Debian、Ubuntu、CentOS、Gentoo
一个典型的Linux发布版包括:Linux内核,一些GNU库和工具,命令行shell,图形界面的X窗口系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公包,编译器,文本编辑器,小游戏,儿童教育软件,到科学工具的应用软件。


bash介绍


Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。目前linux上默认的shell环境都是bash


兄弟们


/bin/sh (已經被 /bin/bash 所取代)
/bin/bash (就是 Linux 預設的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,相容於 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已經被 /bin/tcsh 所取代)
/bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)



文件权限



常见错误


[l-djb2c2][zhenbao.zhou][/home/q][20][0][15:30:31]
$ less nohup.out
nohup.out: Permission denied
[l-djb2c2][zhenbao.zhou][/home/q][21][1][15:30:37]
$ ll nohup.out
-rw------- 1 root root 5167 Nov 28  2012 nohup.out






User, Group及Others


在Linux里面,任何一个文件都具有『User, Group及Others』三种身份的个别权限.
DSC0000.jpg


文件属性


 




  • 第一个字符代表这个文件是『目录、文件或链接文件等等』:
    当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
    当为[ - ]则是文件,例如上表档名为『install.log』那一行;
    若是[ l ]则表示为连结档(link file);
    若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
  • 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
  • 第二栏表示有多少档名连结到此节点(i-node):
    每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。 关于i-node的相关数据我们会在第八章谈到文件系统时再加强介绍的。
  • 第三栏表示这个文件(或目录)的『拥有者账号』
  • 第四栏表示这个文件的所属群组
    在Linux系统下,你的账号会附属于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限如图2.1.2所示(rwxrwx--), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。


  • 第五栏为这个文件的容量大小,默认单位为bytes;
  • 第六栏为这个文件的建档日期或者是最近的修改日期:


权限



权限
文件
目录


r
可获得这个文件的内容
可以看到这个目录里的文件以及这些文件对应的权限


w
可以编辑或者修改此文件内容(但不可以删除此文件)
可以对目录的内容进行修改。(移动目录里的文件等 )


x
可以被系统执行
某个用户可以进入此目录




权限修改



  • chown(需要root用户)
    修改文件/目录的user
     
  • chgrp(需要root)
    修改文件/目录的group
    $ sudo chgrp tomcat jenkins.war
    $ ll jenkins.war
    -rw-r--r-- 1 tomcat tomcat 49190379 Nov 28  2012 jenkins.war
  • chmod
    修改文件属性
    $ ll jenkins.war
    -rw-r--r-- 1 zhenbao.zhou tomcat 49190379 Nov 28  2012 jenkins.war
    $ chmod 755 jenkins.war
    $ ll jenkins.war
    -rwxr-xr-x 1 zhenbao.zhou tomcat 49190379 Nov 28  2012 jenkins.war*


好用的命令



帮助命令



help


grep --help






man


查询manual页

man grep






info


某些软件会有info页,也可以用这个查看


文件查看命令



cat


查看文件


tail


查看文件末尾

tail -f filename






less


less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 pageup pagedown 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

ps aux|grep less





查看方法


  • 空格 向前一屏幕
  • b 向回一屏幕
  • q 退出less
  • G 移动到末尾
  • g 移动到开头
  • h 帮助
  • ? 往回查找
  • /  向前查找


grep/zgrep


grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.
zgrep 可以直接扫描 gzip文件



vim / emacs


文本编辑工具


rm


删除文件


查找文件



which


查造某个可执行文件的路径

[l-djb2c2][zhenbao.zhou][/home/q/zhenbao.zhou][69][0][16:07:06]
$ which java
/usr/bin/which: no java in (/opt/qt/bin/:/usr/local/pgsql/bin/:/home/zhenbao.zhou/apache-ant-1.8.4/bin:/opt/perl/bin/:/usr/lib64/qt-3.3/bin:/opt/pg92/bin:/home/q/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/opt/pg90/bin/:/home/zhenbao.zhou/emacs/bin:/usr/local/apache-maven-2.2.1/bin/:/home/zhenbao.zhou/bin)






find


强大的查找工具

$ find . -name "*.java"
./emacs-lib/sqlformat/SqlBeautify.java
./emacs-lib/cedet-1.0pre7/semantic/tests/scopetest.java
./emacs-lib/cedet-1.0pre7/semantic/tests/testjavacomp.java






locate / updatedb


更强大的搜索工具

$ locate zhenbao.zhou123123123
[l-djb2c2][zhenbao.zhou][/home/q/zhenbao.zhou][77][1][16:09:11]






查看系统状态



ps


查看目前进程

ps auxxx|grep java






top


展示系统信息


netstat


Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。


$ netstat -anlp | grep 8000
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN     
$ sudo netstat -alnp | grep 8000
tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      13575/java   






lsof


命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大!

$ sudo lsof
$ sudo lsof -i :8000
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
java    13575 tomcat   29u  IPv4 156048599      0t0  TCP *:irdmi (LISTEN
$ sudo lsof tts.sh
COMMAND   PID         USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
less    32288 zhenbao.zhou    4r   REG  252,7    35677 1712552 tts.sh






free


查看系统目前内存情况


df


查看系统磁盘大小


du


统计某一个目录的情况


w


查看登录情况


uname 


查看系统的内核、机器类型等等

$ uname -a
Linux l-djb2c2.vc.dev.cn6 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux






网络命令



scp/rsync


文件传输


curl / wget


 




在当前环境启动一个web服务器


( 这是bash范畴的命令)

python -mSimpleHTTPServer  8912






重定向 



  • > 输出重定向到一个文件或设备 覆盖原来的文件
  • >! 输出重定向到一个文件或设备 强制覆盖原来的文件
  • >> 输出重定向到一个文件或设备 追加原来的文件
  • < 输入重定向到一个程序
  • 2> 将一个标准错误输出重定向到一个文件或设备

ls > /tmp/4
ls aasdfasd > /tmp/4
ls asdfasdf 2> /tmp/12
ls asdf > /dev/null






管道


使用 "|"连接各个命令的输出

ls | less






脚本调试方法



echo


打印变量名

echo $AAA






sh


执行某个文件

sh -x aaa.sh






附录



  • linux简介--wikipedia
  • 百度百科上的介绍
  • linux命令简介

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-164090-1-1.html 上篇帖子: Linux kernel logo 下篇帖子: OS + Linux Shell Sed / Linux Sed / linux Sed / Linux sed / linux sed / sed
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表