Linux常用命令、基础知识点-----Shell基础

这段时间想要了解一些关于Linux的基础命令知识,以下是通过在牛客网刷题整理的碎片化知识点以及菜鸟教程的总结

1.各命令及含义

  • touch:创建文件
  • cp:复制文件
  • mv:删除文件
  • rename :修改文件名
  • more:查看文件内容
  • file:查看文件类型
  • dd:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换—磁盘维护
  • df:查看磁盘使用情况
  • top:是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
  • netstat:显示网络情况
  • crontab:Unix和Linux用于设置周期性被执行的指令(时间顺序:分 时 日 月 星期)
  • history n:查看最近执行的命令(该history命令也算入最近执行的命令)
  • 挂载设备使用mount,卸载设备使用umount,有三种方式,通过设备名,挂载点或者设备名和挂载点
  • dev 设备信息
  • home 用户家目录
  • bin/sbin 可执行文件
  • etc 用于存放配置信息
  • lib/lib64 动态库/静态库
  • lost+found 丢失文件
  • opt 第三方文件(相对于操作系统)
  • root 管理员的家目录,用于存放用户信息
  • usr 第三方头文件和库
  • var 系统日志文件/缓存文件
  • /bin 二进制执行文件,也就是命令文件
  • /etc 下存放的是配置文件
  • /dev 存放是时外部设备文件,硬盘,usb等
  • /lib 存放的是库文件
  • ps -aux为查看所有进程
  • netstat -apn :Linux下查看服务程序占用的端口命令
  • watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行
  • isof 是一个列出当前系统打开文件的工具

2.Unix

UNIX系统由内核、shell、文件系统和应用程序等4部分组成。 UNIX是一个通用、交互型分时操作系统

3.fork函数

使用fork函数得到的子进程从父进程的继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。 子进程与父进程的区别在于: 1、父进程设置的锁,子进程不继承(因为如果是排它锁,被继承的话,矛盾了) 2、各自的进程ID和父进程ID不同 3、子进程的未决告警被清除; 4、子进程的未决信号集设置为空集。

4.用户及文件权限管理

4.1 用户
  - 创建用户  $ sudo adduser xxx【passwd:设置密码】
  - 创建用户  $ sudo deluser xxx
  - 切换用户登录 $su -l xxx
  - 查看用户 who am i
  - 查看属于哪个组别 $ groups xxxx【查询结果为:冒号前为用户名,冒号后面为用户所属组别】
  - $ cat /etc/group |sort
  cat 命令用于读取指定文件的内容并打印到终端输出。 | sort 表示将读取的文本进行一个字典排序再输出,

4.2 文件

文件操作
新建文件 $ touch 文件名
使用较长格式列出文件:$ ls -l
变更文件所有者 $ sudo chown shiyanlou iphone6
$ cat 文件名

读权限,表示你可以使用 cat 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。
在这里插入图片描述
在这里插入图片描述

5.Shell基础

定义变量: temp='www.xxx.com' #定义变量不用$符号,而在php中则需要
使用变量: $temp【显示变量:echo $temp】
设置变量为只读: readonly temp
删除变量:unset temp【unset 命令不能删除只读变量。】

Shell字符串
str='this is name'【单引号引用的字符串不可存放变量,若要存放变量,需拼接字符串,注:拼接不用+,例子:str='this is '$name'!'】
str="this is \"$name\"!" 等同于str="this is ${name}!" 
获取字符串长度:echo ${#name}--输出变量name的长度
提取字符串:echo ${#name 1:4}
查找字符串:echo `expr index "$name" o`【查找字符o的位置;脚本中` `是反引号,而不是单引号 ' 】

Shell数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开
读取数组:valuen=${array_name[n]}
使用 @ 符号可以获取数组中的所有元素,例如:echo ${array_name[@]}
获取数组长度:【取得数组元素的个数】length=${#array_name[@]}或者length=${#array_name[*]}或者【取得数组单个元素的长度】lengthn=${#array_name[n]}

Shell注释
单行注释:#
多行注释::!<<.........!【其中!可由其他符号代替】

: 只有使用变量的时候才加美元符($)

shell传递参数
 $0 为执行的文件名,后面才是参数
 参数个数为: $#
 传递的参数作为一个字符串显示:$*

shell字符串输出命令
echo string

shell函数

myfunction(){
	echo "第一个参数 $1"
	echo "第十个参数 ${10}" #参数个数大于10时,必须加括号
	return `expr 1 + 1`
}

调用函数
myfunction 1 2 3 4 6
echo $? #返回计算结果用$?表示

计算执行命令行数:$ wc -l 

包含外部脚本: 引用. /filename【.和/之间有个空格不可省略】
test2.sh中引用test1.sh: . ./test1.sh

运行shell脚本:(两种方式)
$ chmod +x test2.sh  #为 test2.sh 添加可执行权限并执行:
$ ./test2.sh #执行test2.sh
菜鸟教程官网地址:http://www.runoob.com

$ /bin/sh test2.sh #直接运行解释器

整数运算
1.   let "x=$x+1"
2.   x=`expr $x+1`

流程控制
if语句
then
...
fi  #if倒过来
-------------------------------------------------------
case $var in 
	condition 1)
	...;;
	condition 2)
	...;;
	*)
	default...;;
esac
-------------------------------------------------------
for $var in [list]
do...
done;

6.Linux命令

6.1 awk命令
awk是Linux系统用于分析文本的工具,通过逐行分域进行匹配
语法:
1.awk ‘{[pattern] action}#pattern可以是/re/,re就是正则表达式
2.awk -F  #-F相当于内置变量FS, 指定分割字符
3.# 或者使用内建变量
$ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
4. awk -v  # 设置变量  eg: awk -va=1'{print$1+a}' log.txt【定义变量a】
5. awk -f awk脚本 {文件名} # eg: $ awk -f cal.awk log.txt
6.2 sed命令
sed是用于编辑文件的命令
sed -e 4a[添加]/c[取代]/d[删除]/i[插入]/p[打印]/s[取代]
eg:$ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  
或$ sed '4a\newline testfile' #使用sed 在第四行后添加新字符串
$ sed '2,5d' #删除2~5行
$ sed -n '5,7p' #显示行号-n,输出5~7行  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值