文档章节

Linu学习笔记(二)

weslie
 weslie
发布于 2015/06/29 13:57
字数 3310
阅读 51
收藏 0

解压缩

 

  • tar

            tar 自身是没有压缩功能的,它只能够打包、归档(把很多小文件放到一个文件里去)

#1、将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar 
tar -cvf /home/www/images.tar /home/www/images ← 仅打包,不压缩 
tar -zcvf /home/www/images.tar.gz /home/www/images ← 打包后,以gzip压缩 
#在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz 或tgz来代表gzip压
#缩过的tar file文件 

#2、将/home/www/images.tar.gz 解压到/home/www下面 
cd /home/www 
tar -zxvf /home/images.tar.gz 

#3、解压到指定的目录 
tar -zxvf /home/images.tar.gz -C /specific dir
  • zip和unzip处理.zip文件

#将文件1,文件2压缩成test.zip
zip test.zip 文件1 文件2

#将test.txt文件压缩成test.zip,压缩后test.txt会自动删除 
zip -m test.zip  test.txt

#将文件路径下的所有文件都压缩到test.zip
zip -r test.zip 文件路径
zip -j file.zip *   #*表示忽略子目录的内容
 
#将已压缩的或没有必要压缩的文件去掉
zip -n .mpg: .jpg: .gif #第一种文件中间要用:分开
  • gzip  gunzip

  • Linux系统常见的压缩命令

           Compress:压缩出来的后缀是 . Z

            gzip,zcat

            bzip2,bzcat

            zip

  • 完整备份工具

            dump能实现完整备份,增量备份,差异备份

            restore

 

vim编辑器

(1)官网地址:http://www.vim.org 

(2)vi操作

        ① vi test.java,若该文件存在则打开该文件,若不存在则新建

            

        ② vim基本操作

              ✔ 一般模式下                  

i:从当前光标进入插入模式
I:从本行的开头进入插入模式
a:当前光标的下一个字符进入插入模式
A:从本行的结束进入插入模式
o:本行的下一行产生一个空白行并进入插入模式
O:本行的上一行产生一个空白行并进入插入模式
r:替换,先按r,然后再按替换字符即可,每次替换都需要先按r
R:替换,可以连续替换
u:后退,撤销上一步
ctrl + r:前进
ctrl + y:恢复上次操作
yy:复制本行,按p粘贴,
3yy:复制从当前行开始往下总共三行的内容
dd:删除本行,实际上是剪切当前行
3dd:剪切从当前行开始往下总共三行的内容
x:删除当前光标所在的字符
G:跳到最后一行,
gg:跳到第一行  


切换行:按n,然后按shift + g,跳到n行

块选择:将光标移动到合适的位置,然后按Ctrl + v,进入可视块模式,然后操作方向键选择要复制的区域,最后按y进行复制,按p可进行粘贴
h:光标向左移动一格字符;j:向下;k:向上;l:向右

按0会移动到这行的第一个字符,$移动这行的最后一个字符
在vi里TAB键所得到的结果与空格符所得到的结果不一样

              ✔ 命令模式下

                   搜索:输入/或 ?或:,后面紧跟搜索的内容回车即可

                   替换:

                            输入s/被替换者/替换者/[g]:s表示替换,g表示替换本行所有的,不加g表示替换本行第一个,g是global的缩写

                            输入n,ms/被替换者/替换者/[g]:从n行到m行进行替换

                            输入.,$s/被替换者/替换者/[g]:从当前行到最后一行进行替换,. 点表示当前行,$表示最后一行

                            .,$-1s/被替换者/替换者/[g]:从当前行到倒数第二行进行替换,$-1表示倒数第二行

                            %s/被替换者/替换者/[g]:全部替换,%表示全部,等同于1,$

                            .,$s/^/#/g ,从当前行到最后一行,在行首都加上#,^表示行首

                            .,$s/^#//g,删除行首的#,但不删除行内的#,若不加^会删除行内的#

                   切换行:

                            输入n,则光标移动到第n行

 


       ③ 多文件操作:

           vim 后面跟上多个文件,即可打开多个文件

           在冒号模式输入files,可查看当前打开了哪些文件

           冒号模式输入n,切换到下一个文件;输入N切换到上一个文件;输入first、second等切换到相应文件;输入last,切换到最后一个文件

 
        ④ 多窗口编辑:

           例如,一个文件,同时编辑前三行,后三行,这时候我们可以让我们的VI编辑器来分屏。

           进入冒号模式,输入sp,即可分屏;光标切换分屏,按Ctrl + w,然后按↓即可。或Ctrl + ww会上下切换

       ⑤ vim环境设置
           在用户的家目录下,vim .vimrc,编辑这个文件,即可设置该用户的vim环境

    

           vim /etc/sysconfig/i18n,系统编码

           第一种是,手动显示:在vim编辑模式下输入  :set nu取消显示:set nonu;

           第二种是,当前用户永久自动显示:家目录下打开或新建.vimrc,添加 set nu,保存退出,再次进入vim编辑器,就会自动显示出行号了。

           第三种是,所有用户都自动显示:修改/etc/vimrc文件

           vimrc文件可以设置颜色等配置

           输入[:30l],光标向右移动30个字符

 

 

挂载

挂载命令
mount [-参数] [设备名称] [挂载点]
卸载命令
umount [设备名称]
自动挂载就要把
/dev/sda5 /mnt写到 /etc/fstab里
外部设备名 挂载点 文件系统 权限和选项 是否要做备份 是否要做检查 
/dev/sda5  /mnt  ext3 default 0 0

 

 

Shell编程

 

1、什么是shell?实际上Shell是一个命令解释器,是用户与内核进行交互操作的一种接口,它解释由用户输入的命令并且把它们送到内核去执行。
    ①/etc/shells文件保存了系统存在哪些shell,linux默认是使用bash,打开终端的时候,系统会开启一个shell进程,注意终端不是shell。
    ②在终端上输入其他shell的名称即可切换到该shell。

    ③输入env,可以查看环境变量的一些配置,其中就有当前使用的是哪种shell。
    ④修改当前系统使用的shell:chsh -s 输入新shell

2、shell本地变量

①变量的定义:输入变量名=值即可定义一个变量,变量名由字母、数字、_命名,不能数字开头,=两边不能有空格。这里定义的变量叫本地变量,只会影响当前的shell,不会影响任何的子shell

②查看变量:echo $变量名

③取消变量:unset 变量名

④查看当前shell的id:echo $$

   输入bash,会打开一个子shell

 

 

3、环境变量

① 定义环境变量:export 变量名=值 或 declare -x 变量名=值

$PATH,

   env,               查看环境变量

   export             查看环境变量

   set                    显示所有定义的环境变量

   $HOME,         当前用户的家目录路径

   $USER,              当前登录的用户

   $HISTORYSIZE, 记录历史命令的大小

   $PS1                 提示符变量

    $PS2                 >,即命令换行时显示的字符

    $LANG              查看当前系统编码

 

4、未知变量

    在shell脚本中的,$0表示脚本文件的名称;$1,表示第一个参数,$n,表示第n个参数;$#参数的个数;$*表示所有的参数

 

6、数组array,

   定义数组:数组名=(元素1 元素2 元素3),元素之间以空格隔开

   ${数组名[下标]}:取数组的下标所在的值

   ${数组名[*]}  或  ${数组名[@]}:查看数组所有的元素

 

    ${!数组名[*]}:查看数组所有的下标

   ${#数组名[*]}:查看数组的长度  
7、declare 可以用来定义一个环境变量
定义环境变量:declar -x 变量名=值
取消环境变量:declar +x 变量名
declar -r 变量名,设置变量只读
declar -i 变量名,将变量定义成整数型,方便数字运算

readonly 变量名,设置变量只读

let 变量名=数字1 +数字2,let可以直接做数字运算 ,let可以用( ())来代替,例如:cc=((1+8))
8、当变量出现在双引号里时,变量会被正常解析,当变量出现在单引号里,则变量会被按字符串输出, 引用变量最好将变量 用{}括起来,如,echo ${test} ;命令嵌套时需要将嵌套的命令用反引号(·)括起来。

9、脚本的三种执行方式

 ./xx.sh             在子shell中执行

                bash xx.sh     在子shell中执行

                source xx.sh  是在当前的shell下去执行的

     echo $$表示显示当前脚本的PID

10、 命令执行的判断依据:  ;    &&   ||

     敲多个命令用分号;隔开,但是这两个命令直接是没有任何关系的,如date;cal。 第一个命令的执行结果跟后面的命令是没有任何关系的,无论是对还是错               

     命令1 && 命令2 :只有两个都为真时才能执行成功

     命令1 || 命令2:两个命令只要有一个为真,整体就为真。如果第一个命令执行正确的话,第二个就不会执行了;如果第一个错误,然后才会执行第二个命令

11、数据重定向

(1)输出重定向

①>和>>,只能输出正确命令的执行结果到文件中,

cal > calendar.log,将日历输出到calendar.log这个文件,如果文件不存在则创建,若已存在则覆盖里面的内容

cal >> calendar.log,将内容追加到文件中

②2>和2>>,只能输出错误命令的执行结果到文件中

③&>和&>>,错误的正确的都输出到文件中

④ 1>&2,正确的要向错误的一样能够导入

    2>&1,错误的,要像正确的一样导入

⑤双向重定向:tee

    tee与>符号一样,会覆盖原有的内容,如果是要追加,需要加上-a选项

 

 

(2)输入重定向:<,<<

        tr 'a-z' 'A-Z' <hosts:将hosts里的都转换成大写

 

 

账户管理

1、用户管理

用户名和密码信息分别是存在/etc/passwd和/etc/shadow,每个用户都有个UID,系统是根据UID来标记是哪个用户的,GID是用户组的ID。root用户的UID为0,1-499的UID是系统用户,这些用户是不能登录系统的,500-65535的UID是普通用户。每个用户 都必须有一个组,在创建新用户时会默认被分配到与用户名同名的组中

     添加用户:useradd 用户名 

                      useradd -D ;查看所有的默认值,D就是default,这个默认值是存放在/etc/default/useradd,可以修改这些默认值

                      useradd -c "Im bob",添加备注

                                    -s /sbin/nologin ,指定shell

                                    -d /bob    指定家目录

                                    -g lduan    指定组,g就是group   

                                    -G lduan    会创建一个同名的组外还会把该用户添加到lduan组

                                    -u 503 bob       指定用户UID

 

     删除用户:userdel 用户名
                      userdel -r 用户名;删除用户以及用户主目录

 

     修改用户:usermod 

     usermod  -d  目录名  用户名;改变该用户登陆的初始目录      

                                            -c,-s,-d,-g,-G,-u选项与useradd一样的意思

    

 

     设置密码:passwd 

                      passwd 用户名 -> 回车 -> 系统提示输入密码

                      passwd -S bob  查看bob是否设置了密码

                      passwd -d bob  删除bob的密码

                      passwd -l bob,锁定bob帐号,lock

                      passwd -u bob,解锁,unlock

                      usermod -L bob,锁定

                      usermod -U bob,解锁

 

     用户功能:fingle、chfn、chsh、id

             fingle ,查看用户的信息,默认查看的是passwd里的信息

             chfn,修改用户的信息

             chsh,修改用户的shell

             id,id tom 查看用户的相关ID信息

             chage,直接回车,会提示使用方法

     用户身份切换:

① su,su是switch user的缩写

su 用户名

su - 用户名;不写用户名则默认是向root用户切换

su - -c 'mount /dev/cdrom   /mnt',表示切换root,然后用root身份来执行后面的命令,c是commond命令的意思

② sudo,sudo是把某个命令的使用权赋给某个用户,它的配置文件是在/etc/sudoers,要编辑这个文件推荐使用visudo命令

 

2、组管理

     添加组:gruopadd  组名

     删除组:groupdel  组名

     修改文件所在组:chgrp  组名  文件名
     改变用户所在组:usermod  -g  组名  用户名

 


 有效与初始用户组:groups,newgrp

          groups 用户名,查看用户的所在的所有组,不跟用户名时就是查看当前登录用户所在组

        gpasswd -a tom lduan 将tom添加到lduan组,-a,add的意思

        gpasswd -d tom  lduan,将tom从lduan组中删除
     gpasswd -A tom bob,将tom设置为bob组的管理员

        newgrp lduan,打开一个子shell,然后设置lduan为默认组。输出exit后即可退出子shell

 

3、运行级别

     命令:init [0123456]
     0:关机
     1:单用户
     2:多用户状态没有网络服务
     3:多用户状态又网络服务
     4:系统未使用保留给用户
     5:图形界面
     6:系统重启
     常用运行级别是3和5,要修改默认的运行级别可修改文件/etc/inittab的id:5:initdefault:这一行中的数字

service  iptables  restart

防火墙文件:/etc/sysconfig/iptables

 

       

       

        

      

 

© 著作权归作者所有

weslie
粉丝 1
博文 51
码字总数 80088
作品 0
虹口
程序员
私信 提问
我的友情链接

51CTO博客开发 摸索Linux ALLEN 屌丝运维男 转身、决绝 Share your knowledge … “企鹅”那点事儿 virtualbox 宇宙沸腾的小窝 itnihao的运维技术博客 技术笔记 ▁▁技术控ヽ 坚持就是胜利 ...

linux_python
2017/11/22
0
0
Posix多线程编程学习笔记

Posix多线程编程学习笔记(一)—线程基础(1) http://blog.chinaunix.net/u/22935/showart_310711.html Posix多线程编程学习笔记(一)—线程基础(2) http://blog.chinaunix.net/u/2293...

晨曦之光
2012/04/13
238
0
MyBatis学习笔记系列教程

【MyBatis学习笔记】系列之预备篇一:ant的下载与安装 【MyBatis学习笔记】系列之预备篇二:ant入门示例 【MyBatis学习笔记】系列之一:MyBatis入门示例 【MyBatis学习笔记】系列之二:MyBat...

HenrySun
2016/10/15
153
0
SHELL 学习之read 第三弹

linu下如何去读取一个变量呢?比如我们想定义一个变量,然后这个变量的值是用户输入的,当然了,这就是我理解的所谓交互性! read 故名思议,就是读取的意思, read namemapleecho $maple 第...

枫爱若雪
2012/04/12
110
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CQRS与AXON

CQRS 看了蛮多文章,只会CRUD,却不懂CQRS,CQRS是遵循DDD思想而产生的一种模式,Command and Query Responsibility Segregation 命令与查询隔离。查询就直接通过正常的模式service调dao层。...

无极之岚
16分钟前
2
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
31分钟前
37
2
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部