走近linux

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

关机指令为:shutdown ;

sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown –r now
halt # 关闭系统,等同于shutdown –h now 和 poweroff
# 最后总结一下,不管是重启系统还是关闭系统,首先要运行 **sync** 命令,把内存中的数据写到磁盘中。

系统目录结构

树状目录结构:(Linux的一切资源都挂载在这个 "/" 根节点下)

登录系统后,在当前命令窗口下输入命令ls,打开如下的目录文件:

主目录

以下是对部分目录的解释:

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不要动)
  • /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin: 系统用户使用的应用程序。
  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src: 内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

常用基本命令

目录管理

绝对路径和相对路径

最顶级的目录为根目录 **/**。

绝对路径: 由根目录 / 写起,例如:/usr/share/doc 这个目录。

相对路径: 不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd ../man 这就是相对路径的写法啦!

处理目录的常用命令

  • ls: 列出目录

  • cd:切换目录

  • pwd:显示目前的目录

  • mkdir:创建一个新的目录

  • rmdir:删除一个空的目录

  • cp: 复制文件或目录

  • rm: 移除文件或目录

  • mv: 移动文件与目录,或修改文件与目录的名称

    你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

ls

在Linux系统当中, ls 命令可能是最常被运行的。
语法:ls [-al][目录名称]

选项与参数:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

将目录下的所有文件列出来(含属性与隐藏档)

[root@www ~]# ls -al ~  # ~ 表示用户目录。如果是root,就回到/root,如果是某个user1,就回到/home/user1

cd

cd是Change Directory的缩写,这是用来变换工作目录的命令。

语法:cd [相对路径或绝对路径]

测试:

# 使用 mkdir 命令创建 test 目录
[root@localhost home]# mkdir test
[root@localhost home]# ls
chl  test
[root@localhost home]# cd test
[root@localhost test]# ls

# 回到上一级
# cd ..

# 回到根目录
# cd /

pwd

Print Working Directory 的缩写, 显示目前所在的目录

语法:pwd [-P]
选项与参数:**-P** :显示出确实的路径,而非使用连接(link) 路径。

测试:

# 单纯显示出目前的工作目录
[root@localhost test]# pwd
/home/test

# 如果是链接,要显示真实地址,可以使用 -P参数
[root@localhost bin]# cd /bin
[root@localhost bin]# pwd -P
/usr/bin

mkdir

make directory,创建新目录,可以创建多级多个

语法:
mkdir [-mp] 目录名称 [目录名称[ 目录名称]]

选项与参数:

  • -m :配置文件的权限!直接配置,不需要看默认权限 (umask) 的脸色~
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

测试:

# 进入我们用户目录下
[root@localhost /]# cd /home

# 创建多层级目录
[root@localhost home]# mkdir test/test2/test3
mkdir: 无法创建目录"test/test2/test3": 没有那个文件或目录

# 加了这个 -p 的选项,可以创建多层目录!
[root@localhost home]# mkdir -p test/test2/test3

# 创建权限为 rwx--x--x 的目录。
[root@localhost test]# mkdir -m 711 test1
[root@localhost test]# ls
test1  test2
[root@localhost test]# ls -l
总用量 0
drwx--x--x. 2 root root  6 317 20:25 test1
drwxr-xr-x. 3 root root 19 317 20:23 test2

rmdir

删除空的目录 ,删除目录的时候需要把里面的内容先删掉!!!

语法:rmdir [-p] 目录名称

选项与参数:**-p :** 连同上一级『空的』目录也一起删除

测试:

# 因为尚有内容,所以无法删除!
[root@localhost home]# rmdir test
rmdir: 删除 "test" 失败: 目录非空

# 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
[root@localhost home]# rmdir -p test
rmdir: 删除 "test" 失败: 目录非空
[root@localhost home]# rmdir -p test/test1/test2

注意:这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录!

cp

复制文件或目录,经过测试好像不能复制到多个目标路径

语法:

cp [-adfilprsu] 来源档(source) 目标档(destination)

cp [options] source1 source2 source3 …. directory

选项与参数:

  • -a: 相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -p: 连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -d: 若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -r: 递归持续复制,用於目录的复制行为;(常用)
  • -f: 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i: 若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l: 进行硬式连结(hard link)的连结档创建,而非复制文件本身。
  • -s: 复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u: 若 destination 比 source 旧才升级 destination !

测试:

# 在home下创建两个文件夹test1,test2,test3
[root@localhost home]# mkdir test1 test2 test3
[root@localhost home]# ls
test1  test2  test3

# 在test1里创建f1文件
[root@localhost home]# cd test1
[root@localhost test1]# vim f1

# 复制 test1目录下的f1 到 test2,test3目录下
[root@localhost test1]# cd /home
[root@localhost home]# cp test1/f1 test2 test3
cp: 略过目录"test2"
[root@localhost home]# cd test3
[root@localhost test2]# ls
f1

# 再次复制,加上-i参数,增加覆盖询问?
[root@localhost home]# cp -i test1/f1 test3
cp:是否覆盖"test3/f1"? y# n不覆盖,y为覆盖

rm

移除文件或目录

语法:rm [-fir] 文件或目录

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

测试:

# 将刚刚在 cp 的实例中创建的 f1删除掉!
[root@localhost home]# rm -i test3/f1
rm:是否删除普通文件 "test3/f1"# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

rm -rf / # 命令解释:强制递归删除根目录`/`下所有文件!!! 

mv

移动文件与目录,或修改名称

语法:

mv [-fiu] source destination

mv [options] source1 source2 source3 …. directory

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

测试:

# 将test3下f1文件移动到test2下
[root@localhost home]# mv test3/f1 test2
[root@localhost home]# cd test3
[root@localhost test3]# ls
[root@localhost home]# cd test2
[root@localhost test2]# ls
f1
#可以使用*表示所有文件,将test2下所有文件移动到test3
[root@localhost test2]# ls
f1  f2
[root@localhost home]# mv test2/* test3
[root@localhost home]# cd test2
[root@localhost test2]# ls
[root@localhost test2]# cd ../test3
[root@localhost test3]# ls
f1  f2

# 若目标文件夹不存在,就相当于重命名!
[root@localhost home]# ls
test1  test2  test3
[root@localhost home]# mv test3 test4
[root@localhost home]# ls
test1  test2  test4

基本属性

看懂文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

属组,属组

实例中,boot文件的第一个属性用”d”表示。”d”在Linux中代表该文件是一个目录文件。

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

前三个比较常用

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档 ( link file );
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

每个文件的属性由左边第一部分的10个字符来确定,例如:

文件类型 属主 属组 其他用户
d rwx r-x r-x

其中:

第1、4、7位用字符”r”,表示有读权限,如果用”-“字符表示,则没有读权限;

第2、5、8位表示写权限,如果用”w”字符表示,则有写权限,如果用”-“字符表示没有写权限;

第3、6、9位表示可执行权限,如果用”x”字符表示,则有执行权限,如果用”-“字符表示,则没有执行权限。

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

修改文件属性

1、chgrp:更改文件属组:

语法:

chgrp [-R] 属组名 文件名

-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组:

语法:

chown [–R] 属主名 文件名

chown [-R] 属主名:属组名 文件名

3、chmod:更改文件9个属性(必须掌握):

语法:

chmod [-R] xyz 文件或目录

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

r:4     w:2      x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx—] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0
# chmod 777 [filename] 所有用户可读可写可执行(rwxrwxrwx)

文件内容查看

可以使用 *man [命令]*来查看各个命令的使用文档,如 :man cp。

cat

由第一行开始显示文件内容

语法:

cat [-AbEnTv]

选项与参数:

  • -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

测试:

可以同时查看多个文件

[root@localhost home]# cat test1/f1 test4/f1
begin 

end
begin 

end

tac

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

[root@localhost home]# tac test1/f1
end

begin

nl

显示行号

语法:

nl  [-bnw]  文件

选项与参数:

  • -b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

测试:

[root@localhost home]# nl -n ln test1/f1
1      begin 
             
2      end
[root@localhost home]# nl -n rn test1/f1
     1 begin 
            
     2 end
[root@localhost home]# nl -n rz test1/f1
000001 begin 
             
000002 end

more

在 more 这个程序的运行过程中,你有几个按键可以按的:

  • 空白键 (space):代表向下翻一页;
  • Enter:代表向下翻『一行』;
  • /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f:立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
[root@localhost home]# more /etc/csh.login
....(省略)....
--More--(61%) # 重点在这一行喔!你的光标也会在这里等待你的命令

less

less运行时可以输入的命令有:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序;
[root@localhost home]# more /etc/csh.login
....(中间省略)....
:   # 这里可以等待你输入命令!

语法:

head [-n number] 文件

选项与参数:**-n** 后面接数字,代表显示几行的意思!

默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@localhost home]# head -n 20 /etc/csh.login

tail

语法:

tail [-n number] 文件

选项与参数:

  • -n :后面接数字,代表显示几行的意思

默认的情况中,显示最后 10 行!若要显示最后 20 行,就得要这样:

[root@localhost home]# tail -n 20 /etc/csh.login

ifconfig 可以查看网络情况:

# 安装ifconfig命令:
yum search ifconfig
yum install net-tools.x86_64