简单的linux运用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的linux运用相关的知识,希望对你有一定的参考价值。

**  简述**
         linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生linus Torvalds和后来陆续加入的众多爱好者共同开发完成的。
         linux是一个基于POSIX和Unix多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件,应用程序和网络协议,可以支持32位和64位硬件,Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网路操作系统。
         Linux存在许多不同版本,但他们都是用了Linux内核。Linux可安装再各种计算机硬件设备中,比如手机,平板电脑,路由器、视屏游戏控制台,台式计算机,大型和超大计算机。
         严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
         但是也有些人使用Linux来做一些坏事,例如钓鱼WiFi,或者使用BTLinux和CBLinux这个两个版本来暴力破解别人的路由,进行抓包,可以获取使用这个路由器连上外网的人的信息,一般可以获取账号、信息、视屏、图片、之类的东西。曾今看到一个网站上的教学,上面著述,纯粹教学科技演示,不是不黑你,只是你没有黑的价值。
** Linux内核**
        内核是Linux系统最底层,提供了核心功能并且允许进行以一种有序的方式来访问硬件。
        用于控制进程,输入输出设备,文件系统操作,管理内存,这个都需要内核来操作。
        当以一个程序要运行,就会产生一个进程,shell翻译成内核所能理解的二进制指令,内核收到,把程序加载到CPU上,这个程序不是一直运行下去的,有个时间片,内核规定你在CPU运行多长时间,把这个这个程序放到内存的一个地方,给他表上地址,然后运行下一个进程,假如说这个进程运行完之后,内核就会找到上一个程序没有结束的地址,加载CPU上运行。这个进程需要什么,内核从磁盘放到内存里。

软件安装
以Ubuntu系统为例
dpkg命令:当你没有网络时,你有软件包,此时,dpkg起到决定的性作用

                -i:安装一个在本地文件系统上存在的Debian软件包
                -r: 溢出一个已经安装的软件包
                -P:移除已安装的软件包及配置文件
                -L: 查看软件安装到那些目录中
                -s:显示软件包的安装状态
                -l:列出系统所有已经安装的软件
                例如  dpkg i +软件包名
                                    dpkg  -P 软件名  完全卸载软件

         与dpkg相对应的是apt-get,有网络时你可以通过apt-get来安装软件
                   apt-get:
                                 -f:修复系统中存在软件依赖关系
                                 -m:当发现缺少关联软件包时,仍是图继续执行
                                 -q:当输出作为日志保留,不获取命令执行进度
                                 --purge:与remove一起使用,完全卸载软件包相当于dpkg -P
                                 --reinstall:与install子命令一起使用,重新安装软件包apt-get install  --reinstall
                                 -b:在下载完源码包后,编译生成相应的软件包
                                 -s:不做实际操作,只是模拟命令执行结果
                                 -y:对所有询问都做肯定回答,apt-get不在进行任何提示
                                 -u:获取已升级的软件包列表
                                 -h:获取升级软件包列表
                                 -v:获取apt-get版本信号
    使用apt-cache命令完成查询软件源和软件包的相关信息 +pkg
                         show:获取二进制软件包的详细描述信息
                         search:根据正则表达式检索软甲包
                         depends:获取所有依赖于该软件包的软件包
                         rdepends:获取所有依赖该软件包的软件包
                         policy:获取软件包当前安装状态
                         stats:获取软件源的基本统计信息
**介绍几个常用的命令**
            whereis  查找命令 命令 ,函数 等其他的东西所在的位置  whereis  ls
            which: 查找使用程序 
            whatis:查看命令或函数的来时类型种类
            time :统计使用时间的函数  time ls   示执行的时间
            shutdown -r  +10 :十分钟后重启    必须时超级用户权限才可以
                                             +now   :立刻关机 
                                             -h +10 : 十分钟后关机
            df命令:显示磁盘使用情况
                                    -a:列出所有文件系统
                                    -b:列出总的空闲空间
                                    -e:仅列出空闲的文件
                                    -k:列出磁盘的分配情况
                                    -h:同-k,但大小以G,M,K,单位显示
                                    -l:仅列出本地文件系统
            touch +文件名 :创建文件 ,或者使用> filename
            tocuh可以修改时间戳,当别人入侵你的电脑之后,离开要干的事就是修改你的文件的时间和写一个脚本来清除histroy(历史纪录)
            kill 杀死进程
                        -9  + pid :强制杀死进程
                        -2  pid  :终止就是Ctrl  +C 
                        -19  pid  :进程停止(到后台) 快捷键 Ctrl +z   恢复 fg 
                        killall  -15  +进程名:发送15信号给所有这个进程名
                        killall5  -9  后果严重:杀死所有的进城

文件系统
一直使用微软Windows操作系统的用户似乎已经习惯了将硬盘的几个分区,并用A:、B:、C:、D:等符号标识,存取文件一定要清除存放在那个磁盘的那个目录下。
Linux的文件组织模式犹如一颗倒置的树,这与windows文件系统有很大区别。所有存储设备作为这棵树的一个子目录存储位置。这一点很难理解,只是刚刚接触Linux的使用者不太习惯
下面简单介绍Linux文件系统的份分类
/:Linux文件根目录
/bin:存放系统文件最常用的可执行文件见(二进制)
/boot:存放Linux内核和系统启动文件,包括Grub、lilo启动器程序
/dev:存放所有设备文件,包括硬盘,分区,键盘、鼠标、USB、tty等
/etc:存放系统的所有配置文件。例如passwd存放账户信息
/home:用户目录的默认位置,用户在这个文件夹就是土皇帝
/initrd:存放启动时挂载initrd.img映像文件目录,以及载入所需设备模块的目录
/lib:存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件
/lost+found:存放fsck放置零散文件
/media:Ubuntu自动挂载CD=ROM、软驱、USB存储器后,存放临时读入文件
/mnt该目录通常用于作为,被挂载的文件系统的挂载点
/opt:作为可选文件和程序存放目录,主要被第三方开发者用来简易安装和卸载他们安装的程序
/proc:存放所有标志为文件的进程,他们是通过进程号或者其他的系统动态信息进行标识,例如cpuinfo文件存放CPU当前工作状态的数据
/root:根用户(超级用户)的主目录
/sbin:存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件
/tmp“存放用户临时文件,所有用户对目录查询等关键命令读写权限
连接
连接分为硬链接和软连接,硬链接是当文件新建时,文件系统会给文件一个index,根据index来创建文件,源文件修改对目标文件有影响。但是删除源文件,不会对目标文件有任何影响,相当于这个源文件创建一个不副本,修改其内容源文件和目标文件都会进行相应的修改。但是硬链接不能创建硬链接文件夹,软连链接:类似windows快捷键,软链接只是对应指定的路径和文件名或文件夹名,如果软文件更改路径或换个新名字,软链接将失效。
ln:用来创建文件链接。
语法
ln (选项)(参数)
-b:删除,覆盖目标文件之前的备份
-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;
-i或——interactive:覆盖既有文件之前先询问用户;
-n或--no-dereference:把符号连接的目的目录视为一般文件;
-s或——symbolic:对源文件建立符号连接,而非硬连接;
-S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;
-v或——verbose:显示指令执行过程;
-V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串;
alias 命令起别名
例如 ls 手速快点容易打成sl 那么给ls 七个别名叫sl 这样就不会出现错误了
alias sl = ‘ls’
tar文件归档压缩解压
作用:主要用于将若干文件夹或目录合并成为一个文件以便备份和压缩,当然,之后出现tar程序的改进版本,可以实现合并归档的同时进行压缩,
格式: tar [-t | -x | -u | -f | -j | -z | tarfile filelist

         -t :显示归档文件的内容
         -x:释放归档文件
         -u:更行归档文件
         -c : 创建一个新的归档文件
         -v:显示归档和释放的过程
         -j:由tar生成归档,然后由bzip2压缩
         -z:由tar生成归档,然后由gzip压缩

        ping 地址查看网络通不通
                    ttl:显示经过几个路由到达目标网址   time:从你开始到目的网站再回来所使用的时间
        nslookup:查看域名地址
        sudo dhclient  设置为自动获取

**shell脚本**
        shell是命令行解释器
        shell脚本时命令的有序集合
        shell脚本以#!/bin/bash  表示使用bash的shell进行解释
        常用shell环境变量:
                    HOME:/etc/passwd文件中列出的用户主目录
                    IFS:Internal  Field Separator,默认认为空格,tab及换行符
                    PATH:shell命令的搜索路径
                    PS1,PS2:默认提示符($)级还行符提示符(>)
                    SHELL:默认shell
                     例如 打印第一行话  echo "hello world"
                     打印字符串的长度:
                         string=”ni hao"
                         echo ${#string}    显示字符长度为6
                         unset  string   :删除这个变量
         在shell编程中通常使用全大写变量,方便识别
         $COUNT=1
         变量的调用:在变量前加$
         $echo $HOME 
         linux shell/bash 从右向左赋值
         y=Y
         使用unset命令删除变量赋值
         Z=hell
         echo $Z
         unset Z
         在shell脚本中单引号时强类型,双引号时弱类型,使用单引号引用时变量不发生任何变化,例如:echo ‘$Z‘  打印出来还是$Z
         [email protected] 在for循环中是一个一个输出
        read -s 输入隐藏
                        -n:限制输出次数
                        -p :打印一句话 在输出
    expr:只能用于用于进行简单的正数运算。
    expr  12+5\*3   结果为27

    test 命令用于检查某个条件是否成立,与方括号([ ])类似。
    测试文件类型:test -d file :测试是否为一个目录

          -d:测试是否为一个目录
            -e:是否为一个文件
            -f:是否为一个普通文件
            -L:是否为符号链接
            -r :是否存在可读
            -w:是否可写
            -x:是否执行
            -s:文件是否存在且长度不为0
            f1 -nt f2:测试是否比文件f2更新
            f1 -ot f2:是否比文件f2更旧

            if 、elif 、continue,break使用

            if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句:
                if ... fi 语句;
                if ... else ... fi 语句;
                if ... elif ... else ... fi 语句
                if ... else 语句的语法:

if [ expression ]
then
Statement(s) to be executed if expression is true
fi
如果 expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。

最后必须以 fi 来结尾闭合 if,fi 就是 if 倒过来拼写,后面也会遇见。

注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。

举个例子:

#!/bin/sh
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
fi
if [ $a != $b ]
then
echo "a is not equal to b"
fi
运行结果:
a is not equal to b

if ... elif ... fi 语句
if ... elif ... fi 语句可以对多个条件进行判断,语法为:
if [ expression 1 ]
then
Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi
哪一个 expression 的值为 true,就执行哪个 expression 后面的语句;如果都为 false,那么不执行任何语句。

case...esac
多路分支语句case用于多重条件测试,语法结构清晰自然,其语法为
case 字符串变量 in #case语句只能测试字符串变量
模式1)
命令表
;;
模式2|模式3)
命令表
;;
*)
命令表
;; #最后一个双分号可以省略
esac #结束标志

        for...do..done
        当循环次数已知或确定时,使用for循环语句来多次执行一条或一组命令。循环体由语句括号do和done来限定
        格式为:
        for 变量名  in 单词表   #意味者在变量名的大小从单词表中查找
        do
                        命令表
        done
        变量一次取单词表中的各个单词,每取一次单词,就执行一次循环体中的命令,循环次数由单词表中的单词数确定。命令表中的命令可以时一条,也可以是由分号或换行符分开的多条
        如果单词表使命令行上的所有位置参数时,可以在for语句中省略in单词表部分。
        用for实现死循环
        例如:
            for i 
            do 
                        echo
            done

break,continue:不同于C语言,java等其他语言

    break 后面不加数字,表示跳过一个循环
    break 2 意味着:跳过两成循环
    continue后面什么也不加意味着结束本次循环
    continue 2 意味着 第一层为break;第二层为continue。

    写的不好勿喷,嘻嘻。如果有错的,请多多指教。鄙人将不胜感激。

以上是关于简单的linux运用的主要内容,如果未能解决你的问题,请参考以下文章

linux中救援模式的简单运用

linux目录基础简单的命令以及运用linux帮助

简单了解运用Git

Linux sort uniq 命令。简单运用

Linux下GIF库移植与运用

为啥这段代码会泄露? (简单的代码片段)