linux命令、shell和linux系统使用详解———非常详细

写在前面——学习linux这么久了,是时候做个学习总结了。总结linux常用基本命令总览

clear: 清屏,清除界面内容

pwd: 显示当前目录

mkdir :创建一个目录 参数:-p 用于级联创建没有的目录

rmdir: 用于删除空目录,但不能删除文件 ,-p 用于级联删除空目录

rm: -r参数用于删除目录,-f参数用于强制删除不询问  如rm –rf  /tmp/test/123

whoami : 当前用户(简略) who:当前用户(详细) w:当前用户(最详细)

cd: 切换到某个目录

date:时间   cal:日期  uptime:时间和登陆时长

hostname:主机名

touch:创建一个文件、

echo:展开,把一个文件或字段的内容作为输出,默认输出到控制台

uname:显示电脑以及操作系统的相关信息 –a 显示全部信息

ls:显示一个文件或目录的信息  -l 显示详细信息-d显示目录信息  ll=ls –l

file:辨识文件类型

cat: 连接文件并打印到标准输出设备上。

-n 或 --number:由1 开始对所有输出的行数编号。

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

head:显示前10行

     -n显示前n行

tail: 查看文件的内容

   tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

   -n:显示行数

   tail notes.log:显示最后10行

   tail -f notes.log:显示并不断更新

   tail +20 notes.log:显示从第 20 行至文件末尾

   tail -c 10 notes.log:显示最后 10 个字符

jobs;查看当前作业

-l,列出进程的PID和作业号

-p,只列出作业的PID

-s,只列出停止的作业

-r,只列出运行的作业

fg:  把程序调回前台运行 , 如fg 1

bg: 把程序调度到后台执行 ,如bg 1  , 1为作业号,可以用jobs查看

zip: 压缩文件或目录

    -q 不显示指令执行过程。

-r 递归处理,将指定目录下的所有文件和子目录一并处理

如zip-q -r html.zip /home/html  ,将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip

如zip-q -r html.zip * 将当前目录下的所有文件和子目录打包为当前目录下的html.zip

-d 从压缩文件内删除指定的文件。

-v 显示指令执行过程或显示版本信息。

如zip-dv cp.zip a.c ,从压缩文件cp.zip 中删除文件a.c

unzip: 解压缩zip文件

      -l 如,unzip-l abc.zip  查看压缩文件中包含的文件

      -v 执行是时显示详细的信息,但不解压

gzip:  用于压缩文件

      gzip * 压缩目录下的所有文件,不能压缩目录

      -d 解压缩

      -v 显示详细信息

more: 类似 cat ,不过会以一页一页的形式显示,空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似)

      V 调用vi编辑器

      q 退出more

      空格键 向下滚动一屏

      b返回上一屏

less:  与 more 类似

      [pagedown]: 向下翻动一页

[pageup]: 向上翻动一页

su:  切换用户,默认切换到root用户

su-:  切换目录,家目录也会改变

sudo: 以其他身份来执行命令,预设的身份为root

tar: 用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz

tar -xzvf test.tar.gz a.c //解压文件

-c 建立新的备份文件。

-x从备份文件中还原文件。

-z 通过gzip指令处理备份文件。

-v 显示指令执行过程。

-f<备份文件>指定备份文件。

lspci: 显示所有的pci设备信息

lsusb: 显示系统中以及连接到系统的USB总线信息的工具。

lsmod: 显示已载入系统的模块

id: 显示用户的ID,以及所属群组的ID

cp: 用于复制文件或目录

   -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

   如:cp –r test/  newtest

rm: 删除一个文件

-r,可删除目录

-f, 强制删除

shutdown:  -h关机

          -r 重启

          now 立刻关机

           

passwd: 更改密码

man: 查看Linux中的指令帮助

info: 查看命令的帮助文档

-h: 关机

--help: 显示shell内部的帮助信息

poweroff: 关机

reboot: 重新启动计算机


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

知识点回顾总结:


一、常用快捷件和命令:

命令历史:上下箭头显示历史命令

自动补全:tab键

清空屏幕内容:clear命令

退出命令行界面:exit命令

date:查看日期

cal:查看月历

free:显示内存使用信息

df:显示文件系统的磁盘使用情况

ps:显示进程信息

二、linux文件系统

1.基本命令:

pwd

打印当前工作目录名 - Print name of current working directory

cd

更改目录 - Change directory

ls

列出目录内容 - List directory contents

file

确定文件类型 - Determine file type

less

浏览文件内容 - View file contents

cp

复制文件和目录 - Copy files and directories

mv

移动/重命名文件和目录 - Move/rename files and directories

mkdir

创建目录 - Create directories

rm

删除文件和目录 - Remove files and directories

ln

创建硬链接和符号链接 - Create hard and symbolic links

type

显示命令类型

which

显示命令对应的可执行程序

whatis,info,man

命令相关信息和帮助文档

alias

创建命令别名

2.Linux文件系统是一个典型的单根、分层、树形结构

3.权限字符串的第一个字符表示的文件类型:

如 -rw------

字段

含义

d

目录

-

文件

l

链接文件

b

面向块的设备文件,一般是供储存的接口设备

c

面向字符的设备文件,即串行设备,例如键盘、鼠标

4.linux常用目录结构

/

根目录

/bin

系统启动和运行所必需的二进制程序(可执行程序)

/boot

Linux内核、安装磁盘映像、启动加载程序
/boot/grub/
grub.conf启动加载配置文件
/boot/
vmlinuzLinux内核文件

/dev

设备目录

/etc

所有系统层面的配置文件和一系列的脚本文件
/
etc/crontab,计划任务配置文件
/
etc/fstab,存储设备及挂载点配置文件
/
etc/passwd,用户信息

/home

普通用户的家目录的父目录

/lib

系统程序所需的库文件

/lost+found

文件系统分区的备份区

/media

媒体存储设备挂载点

/mnt

可移动存储设备挂载点

/opt

可选软件的安装目录

/proc

内核的虚拟文件系统

/root

root用户的家目录

/sbin

系统的二进制可执行文件,root用户操作

/tmp

系统和各程序创建的临时文件的存储目录

/usr

普通用户所需的程序和文件

/usr/bin

系统安装的二进制可执行文件

/usr/lib

/usr/bin里的程序所需的库文件

/usr/local

用户开发的程序的编译结果目录

/usr/sbin

系统管理程序目录

/usr/share

/usr/bin里的程序运行所需的一些共享数据

/usr/share/doc

共享的文档

/var

内容动态改变的目录,数据库、邮件等数据文件存放该目录

/var/log

日志文件

5.常用通配符

*

匹配零个或多个任意字符

?

匹配任意一个字符

[字符集]

匹配任意一个字符集中的字符

[!字符集]

匹配任意一个不是字符集中的字符

[[:字符类:]]

匹配任意一个属于字符类中的字符

[:alnum:]

匹配任意一个字母或数字

[:alpha:]

匹配任意一个字母

[:digit:]

匹配任意一个数字

[:lower:]

匹配任意一个小写字母

[:upper:]

匹配任意一个大写字母

使用通配符的例子:

*

所有文件

g*

文件名以g开头的文件

b*.txt

以b开头,中间零个或任意多个字符,并以.txt结尾的文件

Data???

以Data开头,其后有三个字符的文件

[abc]*

以a、b或c开头的文件

backup.[0-9][0-9]

以backup.开头,紧跟两个数字的文件

[[:upper:]]*

以大写字母开头的文件

[![:digit:]]*

不以数字开头的文件

*[[:lower:]123]

以小写字母结尾,或以1、2、3结尾的文件

6.硬链接与软(符号symbolic)链接

硬链接:新建立一个inode(索引节点)链接到文件放置的块区域。限制:(1)不能跨文件系统,因为不同文件系统有不同的inode table; (2)不能链接目录。

软链接:建立一个独立的文件,把读取行为转发到该文件所链接的文件上。当删除原文件时,链接文件不会受影响,但打不开原文件了。

创建方法:

ln -s 源文件  目的文件  (加-s为建软链接,不加为建硬链接)

如:ln  /etc/passwd  passwd-hard  则建立了一个名为passwd-hard的硬链接

通俗地讲,硬链接安全,为新建一个后门,把前门(原文件)删了,你还是能访问到数据所在的块区域。软链接为建一个快捷方式,把原文件删了,你这个链接就访问不到数据了。


三、重定向、权限和进程
1.基本命令

cat

连接文件并显示 - Concatenate files

sort    -k3nr  按第三列数值逆序排

排序文本行 - Sort lines of text

uniq    对排序后的结果去重

去重 - Report or omit repeated lines

grep   

显示匹配内容 - Print lines matching a pattern

wc

显示行、字符数、字节数 - Print newline, word, and byte counts

head、tail   默认10行

显示前或后部分内容 - Output the first/last part of a file

tee

双向重定向

id

显示用户身份信息 - Display user identity

chmod

修改文件权限 - Change a file's mode

umask

设置文件默认权限- Set the default file permissions

su

切换用户身份运行shell- Run a shell as another user

sudo

切换用户身份执行命令 - Execute a command as another user

chown

改变文件所有者 - Change a file's owner

chgrp

改变文件的所属用户组 - Change a file's group ownership

passwd

更改用户密码 - Change a user's password

ps

显示当前进程 - Report a snapshot of current processes

top

显示动态进程列表 - Display tasks

jobs

显示作业列表 - List active jobs

bg、fg

指定作业后台、前台运行 - Place a job in the background/foreground

kill

向进程发送信号 - Send a signal to a process

killall

通过进程名终止进程 - Kill processes by name

shutdown

关机或重启系统 - Shutdown or reboot the system

补充find命令:

-atime +n/-n   表示访问或执行时间大于或小于n天的文件

-ctime  +n/-n  表示写入、更改inode属性(如更改所有者、权限、或链接)的时间大于或小于n天的文件

-mtime  +n/-n 表示写入时间大于或小于n天的文件,该参数使用最多

可以用min代替time表示分钟

-name filename  直接查找文件名  如:find  ./  -name test2  表示在当前目录下查找test2文件

-type  filetype    通过文件类型查找文件  有f、b、c、d、l、s等类型

2.数据流重定向

>   覆盖重定向

>>  追加重定向

2>  将错误信息覆盖重定向

2>>  将错误信息追加重定向

2> /dev/null  将错误信息忽略,及输出到黑洞

<标准输入流默认从键盘输入

<<用于设定结束输入的关键字

如:cat >test  < ~/test1    将输入流重定向到文件输入

如:cat >test  <<"eof"     设定输入eof才结束输入

3.管道命令:

|   将“|”前面的输出作为“|”后面的输入

选取命令 cut   : 从一行中取出部分信息

cut   -d  '分隔符'  -f  field     以d分割-f表示选取哪一段  如  : echo $PATH  | cut -d ':'  -f 5

cut  -c 5-10  表示取第5到第10个字符

选取命令grep  :按条件取出某行  如 last  | grep 'Nov 26'

3.用户管理

基本命令:

命令

作用

id

查看当前用户的信息

passwd

修改当前用户密码

whoami

显示当前用户

who

显示当前登录的所有用户

w

显示所有登录用户和正在进行的操作

useradd

创建新用户,常用选项-d,-s,-u,-g

usermod

修改用户相关信息,常用选项-l,-u,-d,-g,-L,-U

userdel

删除用户,常用选项-r

su

切换用户

sudo

切换用户执行命令

4、权限管理

文件权限的意义:

- r(read) 可读取此文件的实际内容,如读取文本文件的文字内容等
- w(write) 可以编辑、新增或者修改文件的内容 ( 但不含删除该文件 );
x( eXecute ) 该文件具有可以被系统执行的权限

目录文件的意义:

- r(readcontents in directory) 表示具有读取目录的权限,即可以用ls命令查询该目录下的文件信息
- w(modifycontents of directory) 表示具有更改该目录结构列表的权限。包含
- 新建新的文件与目录
- 删除已经存在的文件与目录
- 将已存在的文件或目录进行重命名
- 转移该目录内的文件或目录的位置
- x( eXecute ) 表示是否能进入该目录


文件默认权限

- 新建文件的默认权限=666 - umask值
- 新建目录的默认权限=777 - umask值


set uid:  使文件在执行阶段具有文件所有者的权限

set gid:  目录设置这个权限后,任何用户在此目录下创建的文件都具有该目录所属组相同的组

sticky bit:  防删除位 ,设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件

5、Linux进程

ps查看进程信息

top实时监控进程活动状态

处于后台的进程被称为作业,可通过fg和bg进行前后台转换

jobs命令显示所有作业

ctl+z:挂起

ctl+c:终止一个进程或作业

kill:杀死进程或作业,作业id必须以%开始

在命令后添加符号(&),使命令在后台进行

fg  %2   表示把2号作业调到前台

fg %"find / -inum"  把匹配到进程调到前台


四、软件安装、存储管理

(插播)

1.linux  c编程基本概念(确保已安装gcc)

第一个linux  c程序

#include<stdio.h>

#include<stdlib.h>

int main()

{

   printf("Hello World\n");

   exit(0);

}

编译执行:

$   gcc  -o  helloworld  helloworld.c

$   ./helloworld

(-o指定编译后的文件名,如不指定默认为a.out)

gcc的-I选项可以引入不在默认路径中的头文件。

如:$gcc -I /usr/openwin/include hello.c

库文件可以分为静态库(.a)和共享库(.so)。
gcc的-l(不是i是L的小写)选项可以指定要搜索的库文件、-L选项指定库路径

2.make命令和makefile文件
makefile文件的规则必须以制表符开头,不能是空格。

一个简单的makefile文件实例:


编译:

$  make -f  Makefile1

3.YUM管理器的使用

yum install ***   安装软件

yum update *** 更新软件

yum list  列出所有已安装的软件

yum info ***  查询每个或某类软件的详细信息

4.linux系统中的磁盘

Linux系统中所有设备都被抽象成文件,存储在/dev目录下

设备名称一般为hd[a-z]或sd[a-z],如hda、sda等。

IDE设备一般为hd前缀,SATA、SCSI、USB设备一般为sd前缀。
目前主流的分区技术有: MBR和GPT
Linux中分区被表示为: 设备名称+分区号,如sda1。

5.Linux文件系统

Step  1:使用fdisk命令进行磁盘管理。

Step 2:对分区指定文件系统(mke2fs命令)。

Step 3:挂载文件系统(mount命令)。


fdisk用法:

需要超级用户权限

fdisk -l:列出所有安装的磁盘和分区信息

fdisk 设备名:对该设备进行分区操作,如fdisk /dev/sda

partprobe:手动更新分区信息到内核

查看分区信息还可以通过文件/proc/partitions

mke2fs用法:

mke2fs命令用于在指定分区上创建文件系统

基本语法为:mke2fs -t 文件系统名 分区名

如:mke2fs -t ext3 /dev/sdb5

常用参数
-b:指定块大小
-c:建立文件系统时是否检查有块损坏
-l:指定卷标
-j:建立文件系统日志

mkfs是简化的mke2fs命令

基本语法为:mkfs 分区名

dumpe2fs命令用于查看格式化好的文件系统
基本语法为:dumpe2fs 分区名

挂载 MOUNT:  mount命令用于将设置好的分区挂载到某一个目录下。

如 : mount  /dev/sdb5  /mnt

umount命令用于卸载已挂载的分区

基本语法为:umount 分区名或挂载点名

如:umount /dev/sdb5 或 umount /mnt

配置自动挂载:

Linux系统通过读取/etc目录下的fstab文件来决定哪些分区或设备需要自动挂载

fstab文件中的每一行就代表一个自动挂载的配置


6.VIM编辑器

有两种操作模式分别是:

命令模式、插入模式(允许输入文本)  ,在任意模式按esc回到命令模式

命令模式常用的命令:

i:在当前光标处插入文本

o:在当前行下面插入新行

dd:删除整行

yy:复制当前行(将当前行放入缓冲区)

n+yy:复制n行

p:将缓冲区中的文本插入到当前光标处

u:撤销上一操作

r:替换当前字符

/:查找字符

命令模式下按“:”进入ex模式,光标移到vi的底部

常用的ex命令:

:w  保存当前修改

:q! 不保存退出

:x  保存并退出,相当于:wq

:!  执行系统命令

:set number 显示行号

:sh 切换到命令行,ctrl+d切换回vim

五、Shell程序设计基础

1.两种执行方式:

①输入路径即可,需rx权限②sh  1.sh只需要读权限

2.基本知识

echo : 展开、显示

printf : 格式化输出


shell变量常用命令:

变量的显示与设置:echo、unset

环境变量的相关操作:env、export

变量的输入:read

数组:declare/typeset

设置:  如a=6

显示:  如echo $a  或echo ${a}

取消:  unset  a

env:     查看环境变量

set:      查看所有变量,包括自定义的和环境变量

export:  将自定义变量转化为环境变量  如  export  a

read:  变量输入 ,  如   read  -p "please input"  -t  10   a   ,-p为提示,-t为等待时间

declare或typeset声明变量的类型:


如:declare  -i  sum=1+2+3

如:declare  -a  array

array[1]="a"   array[2]="b"

echo  ${array[2]}  
echo  -e  "the two element are :"  ${array[1]}  ${array[2]}

3.从终端接收用户输入作为文件名创建新文件:

$()  等同于 ` ` ,为执行一段命令所得的结果


4.在脚本中进行数值运算:

注意:  echo -e  参数表示对要显示的内容进行转义,

           如echo  -e "a\n"  为a换行,而不是直接打印  “a\n”

echo  -e "input two numbers"

read   -p "first number: "  first

read  -p "last number: "  last

total=$(($first+$last))

declare -i total =$first*$last

shell脚本中的数值运算只支持整数的运算;

shell脚本中变量都默认为字符串,所以如果希望变量进行数值运算有如下两种办法

第一种是使用$((数值表达式)),如$(($first+$last))

第二种将变量声明为整型:declare –i total=数值表达式

5.在脚本中使用test命令进行判断(常结合echo进行判断)

如:

test -e  /demo && echo "exist" || echo "not exist"

test -f  /demo && echo "exist"  || echo "not exist"

常用参数:


字符串测试

参数	说明

=	等于则为真  , 注意 , "=" 左右要有空格

!=	不相等则为真

-z 字符串	字符串的长度为零则为真

-n 字符串	字符串的长度不为零则为真
数值测试
参数	说明
-eq	等于则为真
-ne	不等于则为真
-gt	大于则为真
-ge	大于等于则为真
-lt	小于则为真
-le	小于等于则为真

6、在shell脚本中使用参数传值


7. shell脚本中使用if语句

if  [表达式] ; then
         语句
elif[]
         语句
else[]
         语句
fi
if或elif后的条件必须用[],且表达式和中括号之间一定要有空格;
比较的表达式中用$取变量值之后要用双引号引起;
在linux的shell脚本中==和=含义是一样的

if运用:


8.shell脚本中使用case......esac
read  -p  "input your choice:"  select

case  $select  in

     "1" )

               echo "you select 1"

      ; ;

    "2")

              echo "you select 2"

      ; ;

      *)

             echo  "you select others"

       ;;

esac

9、在shell中使用while循环

第一种:

while [ "$flag"  != "yes"  -a "$flag"  != "YES"  ]     # -a 表示并且  -o表示或
  
do

        read  "input  your  choice  :"  flag

done

echo "input  yes ,  loop  done"

第二种:

until  [ 条件表达式 ]

do

     语句

done

计算1+2+3+...+100:


10、shell脚本中使用for循环,两种方法

第一种

for  变量名   in  value1  value2   value3 ...

do

     语句

done

第二种:

for (( 初始值 ;终止条件 ;执行步长))

do

    语句

done

10、shell中使用函数function

function  函数名()

{

    程序段

}

输入函数名直接调用,或在函数名后面加参数

如:计算阶乘:


11、shell编程一些例子

添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30


在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行


12.正则表达式

①grep  -in  "匹配字段"   文件名

如:  grep  -in  "the"  1.txt

-i表示不区分大小写, -n为显示行号

②使用[]  ,如 grep  -n  '[^a-z]oo'   1.txt

^表示行的开始,$表示行的结尾

③ ‘.’ 表示任意一个字符   '*'表示0个或多个字符  ,如“oo*”表示一个或多个o,  "o."表示一个o加一个其他字符


六、用户账户和磁盘管理



  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值