linux那点事儿(上)

    本文算是学linux的学习笔记吧!其实linux与window差
别还是有挺大的,在学linux时进量清空自己的windows思维,不然容易钻牛角尖。记是学过C之后,去学JAVA,老是用C的思维去看JAVA,所
以,就是难入门。因为一个是面向过程的,一个是面向对象的。如果你抛开windows的思想,从零来学linux,其实,它没想象的那么难。每天摸一摸
时,自然就熟悉了。

文件操作                                                                                                      

 

  掌握下面的命令是最基本的噢!那是我们使用一个系统最基本的操作。

  玩过dos么,其实,linux下的文件操作和dos差不多。没什么难的,多练习就记住了。下面如果有条件的话请跟我一样操作吧!百看不如一做。不用刻意去记,每天做遍自然就记到了              

 

[root@localhost test]# ls     显示当前目录下的所有文件及文件夹

[root@localhost test]# ll      以详细方式显示所有文件与文件夹。(相当于 ls -l 命令)    

[root@localhost test]# cd  /user   打开user文件夹

     如果不知道要打开的文件夹全称或名过长,可以按tab键盘自动补齐,如:cd  /u + table键,系统自动帮我们补齐成 /user 

[root@localhost test]#cd ..    (后面空格加两点)返回上一级目录

[root@localhost test]#pwd     显示当前目录路径

  超简单,记好上面几个在文件夹之间到处跳已经没问题了。

 

文件的增、删、查、移

[root@localhost test]# mkdir  test           创建文件夹

[root@localhost test]# touch  test.txt      创建文件

[root@localhost test]# cp test.txt  test2.txt       把test.txt文件当前文件夹下复制出个test2.txt

[root@localhost test]# cp test.txt  /hzh/test       将test.txt 复制到/hzh/test  目录下 

[root@localhost test]# rm  aa.txt        删除aa.txt文件

[root@localhost test]# rm  -r  bb         删除bb目录(包括目录下的所有文件)

[root@localhost test]# rm  -rf bb         删除bb目录(不对目录下的每个文件提醒删除) 

[root@localhost test]# mv dd.txt ..       将dd.txt文件移动上一级目录(注意尾部的两个点)

[root@localhost test]# mv bb.txt  /hzh/test/      将bb.txt文件移动到hzh/test/目录下

[root@localhost test]# mv  dd.txt  dd2.txt       将dd.txt改名为dd2.txt

 

文件查找:

统配符 ?* 与windows下相同

[root@localhost bin]# find /etc -name ini?  查找/etc目录下,以ini打头且后面一位的文件,

[root@localhost bin]# find /etc -name ini*

[root@localhost test]#locate  aa.txt      

    查整个系统中的aa.txt文件,locate\slocate命令后面跟文件或文件夹。不过在执行这个命令之前要先更新数据库,所以选执行 

updatedb 命令。

用户权限                                                                                                    


  其实,这个地方对于新手来说感觉有点复杂,但是并不难,只要记好了规则就可以了。

  我们现有随便进入一个文件夹下,这个文件下要至少有一个文件或文件夹,然后敲 ll 命令。

[root@localhost test]# ll

总用量 24

rwx------  2 root root 16384  2月 22 04:31 lost+found

rwxr-xr-x  2 root root  4096  3月 18 14:43 test

 

那么文件前面的“drwxr-xr-x”就表示的权限!

linux下分三类用户:

u  所有者

g  所属组

o  其他人

 

我们把“rwxr-xr-x”分为三部分,三位一组。如下

rwx       r-x        r-x

所有者   所属组   其它人

权限类型:

所要注意的是,权限对文件和目录的含义是有差别的。

修改权限符号:

+  加权限

-   减权限

=  等于什么权限

 

当我们想修改一个文件(或目录)的权限时:

[root@localhost hzh]# chmod  u+w  a       给a文件的所有者加上写权限(chmod 为修改权限的命令)

 

其实,我们一般修改用户权限时不这样写,那怎么写呢,用数字表示。

r - 4     w - 2     x - 1

rwx--r-wx

r+w+x=7

r=1

w+x=3

相信下面的两个你也明白:

rw-r-x-w-     652

754      rwxr-xr--

例如:

[root@localhost hzh]# chmod 641  a

641  rw-r----x  所有者有读、写权限,组有读权限,其他人有执行权限

软链接与硬链接                                                                                          

软连接:

软连接类似于我们windows系统的“快捷方式”

    那么在windows下之所以要设置快捷方式,就是因为有些文件放置的位置不容易找到,我们就会在桌面创建一个快捷方式。

    那么在linux下的软链接,我想主要是文件名过长,不便于输入。因为linux下对文件对文件操作一般要输入文件名,不像windows下面无所谓文件名的长短,鼠标点击即可完成各中操作。

创建一个软链接

[root@localhost test]# ln -s ruanlianjie.abc /hzh/test/rlj.soft   

   对当前目录下的ruanlianjie.abc文件,在/hzh/test/目录下创建一个软链接,名为rlj.soft

[root@localhost test]# ll

总用量 36

lrwxrwxrwx  1 root root    15  3月 19 20:57 rlj.soft -> ruanlianjie.abc

-rw-r--r--  1 root root    28  3月 19 20:57 ruanlianjie.abc

 

现在就可以对软件链接,进行操作了,

[root@localhost test]# vi rlj.soft          编辑rlj.soft文件,其实也就是编辑ruanlianjie.abc文件

 

硬连接:

       硬连接相当于把原文件拷贝了一份,唯一特殊的地方就是,两个文件是同步的。当你对其中一个文件进行修改时,另一个文件也就会同步更新你的修改。有什么好处,你懂的!

下面创建一个硬链接:

[root@localhost test]# ln yinglianjie.abc /hzh/test/ylj.hard       

   对yinglianjie.abc文件在/hzh/test/目录下创建一个硬链接文件ylj.hard 

[root@localhost test]# ll

-rw-r--r--  2 root root     0  3月 19 21:08 yinglianjie.abc

-rw-r--r--  2 root root     0  3月 19 21:08 ylj.hard

[root@localhost test]# vi ylj.hard   对硬链接ylj.hard文件时行修改并保存

[root@localhost test]# ll                       

-rw-r--r--  2 root root    14  3月 19 21:09 yinglianjie.abc      我们会发现yinglianjie.abc也被同步修改了

-rw-r--r--  2 root root    14  3月 19 21:09 ylj.hard

 

文件压缩与解压                                                                                       

 

    文件的压缩与解压,也是我们日常中经常用到的操作,如,我们会经常从网上下载各种文件进行进行安装,而大部分文件都是经过压缩的。

下面来学习四个常用的压缩命令。

gzip

特点:

1.只能压缩文件,不能压缩目录

2.不保留源文件

 

[root@localhost test]# gzip aaa             将aaa文件进行压缩

[root@localhost test]# gunzip aaa.gz     将aaa.gz文件进行解压

[root@localhost test]# gzip -d aaa.gz    作用同上

  

tar

tar类型的的压缩文件应该是大家最常见的吧,在网上下的好多软件也是这种格式的。

参数:

-x 解包.tar文件

-v 显示详细信息

-f 指定解压文件

-z 解压缩

[root@localhost test]# tar -zcvf  tatga.tar.gz  tatgz    压缩tatgz文件夹为tatga.tar.gz压缩文件

注意:

在linux下扩展名不是标识文件的属性

[root@localhost test]# file [文件名]                       查看任何一个文件的类型

[root@localhost test]# tar -cf tatga.tar  tatgz       对tatgz文件打包

[root@localhost test]# gzip tatga.tar                    对tatga.tar包文件压缩

[root@localhost test]# tar -zxvf tatga.tar.gz        对压缩文件进行解压

 

 

zip 

功能:可以压缩文件和目录,是windows 和linux 通用的压缩格式

 

[root@localhost test]# zip a.zip  a                     把a文件压缩成a.zip

[root@localhost test]# zip -r tatgz.zip tatgz      压缩tatgz目录为tatgz.zip

[root@localhost test]# unzip  tatgz.zip              解压文件

 

 

bzip2 

gzip功能基本相同

只能压缩文件

用 -k 命令可以保留原文件 

[root@localhost bzip2]# bzip2 -k fnngj  对fnngj文件进行压缩 

[root@localhost bzip2]# bunzip2  fnngj.bz2   对压缩文件fnngj.bz2进行解压

 


通信命令                                                                                                  
                  

 

    我们都知道linux有别于windows是的一个特性就是,多用户的操作系统。允许多个用户同进对系统进行操作。那么多个用户之间如何进行通信呢?下面来看两个有趣的通信命令。

write

发给某个用户信息

[root@localhost ~]# write [用户名]   

例如:

[root@localhost ~]#  write fnngj  给fnngj用户发送信息

hello fnngj !! I like you!!xixi       发送的内容

ctrl + D  结束

 

wall


发给所有使用系统的用户

[root@localhost ~]# wall [信息内容]

[root@localhost ~]#  wall hello china

 

ping


测试本机与某一地址时候连通的

[root@localhost ~]#  ping 192.168.203.128

[root@localhost ~]#  ping  www.baidu.com 

[root@localhost ~]#  ping -c  4 192.168.203.1    -c 相当于windows(dos) 下的默认情况(会发送4次数据时行测试)

      其实,我们可以设置发送数据包的次数

[root@localhost ~]# ping -s  5000  192.168.203.1   设置ping包的个数为5000; 最大为65507

 

ifconfig  

这个命令类似于dos下面的ipconfig   

[root@localhost ~]#  ifconfig           查看本机IP地址详细信息

 

 

命令链接符                                                                                              

 

    有时候,我们为输入方便为把多个命令放在一起输入执行。有点类似于dos下的批处理。就是一组命令的集合。那么我们看看都有哪些符号用于命令之间的连接。

------------------------------------------------------------------------------- 

管道

  将一个命令的输出传送给另一个命令,作为另一个命令的输入。

使用方法:

  命令1 | 命令2 | 命令3... | 命令n

例如:

[root@localhost test]# ls -l /etc | more   显示/etc目录下的所有文件,以分页形式more

[root@localhost test]# ls -l /etc | grep init | wc -l     显示/etc目录下的所有文件,查找init文件,显示查找结果的数量。

-------------------------------------------------------------------------------

;(逗号)

用;间隔的各命令按顺序依次执行

[root@localhost ~]# pwd ; ll ; data

------------------------------------------------------------------------------- 

&&

command1 && command2

  成功                执行

  失败                不执行

[root@localhost ~]# lskk && pwd     如果第一个命令执行失败,第二个命令就不执行。

前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,他后面的命令才能被执行

-------------------------------------------------------------------------------- 

||

[root@localhost ~]# lskk || pwd     如果第一个命令执行失败,第二个命令就执行。

command1 || command2

  成功                不执行

  失败                 执行

前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,他后面的命令才被执行。

 

输入/输出重定向                                                                                    


    其实,对于我们的计算机来讲,我们的标准输入设备是键盘,标准输入设备是显示器。

假如,我告诉,如果我们的输入不用键盘了,输出不在显示上了。你会说这怎么稿?即便是使用计算机多年的人,一下子也会迷糊。呵呵!看了我下面几个操作,你就明白了。

同标准I/O一样,Shell 对于每一个进程预先定义了个文件描述

(0、1、2)。分别对应于:

0 (stdin)标准输入

1 (stdout)标准输出;

2 (stderr)标准错误输出。

 

输出重定向

    我们可将某个输入的信息保存到一个文件中。

[root@localhost ~]# ls -l /tmp > /tmp.msg      将查看tmp目录的信息保存到/tmp.msg 文件中。屏幕中不显示任何结果。

[root@localhost test]# vi /tmp.msg                 查看/tmp.msg 文件信息

总用量 8

srwxr-xr-x  1 root  root  0  2月 22 19:36 mapping-root

srwxrwxrwx  1 mysql mysql 0  2月 27 22:35 mysql.sock

 

[root@localhost ~]# data >>/tmp.msg   “ >>”表示追加,在/tmp.msg 再追加一些新的信息。

 

 

输入重定向

      我们也可以将某个输入保存到一个文件中。

     上面我们学到一个wall命令,后面跟的信息可以广播表其它在线用户,当然,我们可以将要广播的信息保存到一个文件中,当然,如果有兴趣,我们还可以设定时间进行发送。

[root@localhost ~]# wall < /etc/motd    将motd文件中的信息进行广播。

 

错误输出重定向

    假如,我要对一个目录进行备份(/usr),备份到/backup
/usr.bak目录下,可以备份时间要很久,我不想一直盯着屏幕看,这时我就可以设置,如果备份时发生错误,将错误信息保存到/bak.error文件
中。这样我就可以找朋友喝喝茶,聊聊天,回来看错误信息就可以了。

[root@localhost ~]# cp -R /usr  /backup/usr.bak 2> /bak.error

 

 

时间: 2024-10-28 20:40:39

linux那点事儿(上)的相关文章

linux那点事儿(八)----shell 编程

一个简单的shell程序                                                                  下面直接来看一个shell程序. ----------------- #!/bin/sh # This is to show what a example looks like. echo "Our first example" echo # This inserts an empty line in output echo &qu

一台Linux或UNIX机器上设置多个DB2系统

在DB2 for Linux, UNIX,和Windows Version 8之前,SAP客户只能在一台物理机器上安装每个DB2 版本的一个拷贝,因为安装路径是硬编码的.尽管 DB2 Version 8 提供了替换的修订包映像,但是这些映像只用于测试,在生产环境中 SAP 不支持它们. 对于 DB2 9,客户可以在一台物理机器上安装多个 DB2 软件拷贝.数据库的安装是相互独立的.它们可以是不同级别的,可以安装在任何有效路径上.每个拷贝可以独立更新,而不会相互影响.所有装有 DB2 9 的 SA

在Linux系统的服务器上隐藏PHP版本号的方法

  这篇文章主要介绍了在Linux系统的服务器上隐藏PHP版本号的方法,有助于预防攻击者针对PHP详细版本的漏洞而发起的攻击,需要的朋友可以参考下 通常,大多数默认设置安装的web服务器存在信息泄露,这其中之一就是PHP.PHP 是如今流行的服务端html嵌入式语言(之一?).在如今这个充满挑战的时代,有许多攻击者会尝试发现你服务端的漏洞.因此,我会简单描述如何在Linux服务器中隐藏PHP信息. 默认上expose_php默认是开的.关闭"expose_php"参数可以使php隐藏它

java-在我的电脑上跑正常,在linux的tomcat服务器上跑项目报错 万分感谢

问题描述 在我的电脑上跑正常,在linux的tomcat服务器上跑项目报错 万分感谢 解决方案 参考servlet-api.jar not loaded 把 webappsmaintenanceWEB-INFlib 下面的 servlet-api.jar 删掉吧! tomcat自己有,不需要你提供! 顺便看看其他的jar, 和 tomcatlib 目录比较一下,tomcat已经有的,就别留着了! 你也看看你的问题截图的第六行,把相关的jar文件删除看看. 解决方案二: 检查一下数据库是不是和你开

linux编程-linux下SpringMVC+framemark上传视频出错

问题描述 linux下SpringMVC+framemark上传视频出错 org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form

命令行-linux,把屏幕上的所有信息都保存起来该怎么做呢

问题描述 linux,把屏幕上的所有信息都保存起来该怎么做呢 在已经运行了命令:$:ls,$:vim tam,.....好多命令后,显示屏上会有很多我使用过的痕迹,我想把这些显示屏上的所有信息都保存起来,以便以后检查.谢谢 解决方案 printscreen 截屏 或者 history命令查看,当前用户的当前窗口有效.

我在linux系统的服务器上打开语言R环境,变量怎么分开保存?谢谢!

问题描述 我在linux系统的服务器上打开语言R环境,变量怎么分开保存?谢谢! 在linux系统的服务器上打开语言R环境,要依次处理多个数据文件,如果不分开,我在处理完后ls()会把所用设过的变量混一起告诉我,我想问能不能把处理某个文件的这个过程中设的变量与处理其它文件的设的那些变量隔离开? 解决方案 创建多个环境? new.env() 参考:http://www.tuicool.com/articles/7fqEJr

在一台Linux或UNIX机器上设置多个DB2系统

在 DB2 for Linux, UNIX, and Windows Version 8 之前,SAP 客户只能在一台物理机器上安装每个 DB2 版本的一个拷贝,因为http://www.aliyun.com/zixun/aggregation/17166.html">安装路径是硬编码的.尽管 DB2 Version 8 提供了替换的修订包映像,但是这些映像只用于测试,在生产环境中 SAP 不支持它们. 对于 DB2 9,客户可以在一台物理机器上安装多个 DB2 软件拷贝.数据库的安装是相

Linux signal那些事儿【转】

转自:http://blog.chinaunix.net/uid-24774106-id-4061386.html Linux编程,信号是一个让人爱恨交加又不得不提的一个领域.最近我集中学习了Linux的signal相关的内容,分享出来,也为防止自己忘记.     信号的本质是异步.异步一这个词,听着高端大气上档次,又让人云山雾绕,其则不然.其实我们想想,我们这个世界是异步的,每个人干事儿,并不总是A->B->C->D这种.比如我在网上买了东西,我其实并不知道快递几时能到.我可能在公司里