linux入门学习笔记#02

linux入门学习笔记#01

 

目录

查看文件大小

纯文本文件显示

linux中的挂载

定义别名 alias

shell中的变量

变量的作用范围

数组

进程管理

linux 中的正则表达式

查看文件:cat / more / less / head / tail


查看文件大小

(base) 123deiMac:desktop a123$ ls -l
total 55848
drwxr-xr-x@  19 a123  staff      646  2 12  2019 PS素材文件
-rw-r--r--@   1 a123  staff    48700  3 12 15:25 Super Mario 64 - Medley.mid
drwxr-xr-x    6 a123  staff      204  1 31 20:07 for
drwxr-xr-x    4 a123  staff      136  1 30 15:49 git
drwxr-xr-x@  16 a123  staff      544  1 29 18:01 models
drwxr-xr-x   11 a123  staff      374  1 15 22:45 mp4一些
drwxr-xr-x   12 a123  staff      408  3  8 21:14 my_python
-rw-------@   1 a123  staff  8907308  3 12 16:07 pre1.pptx
drwxr-xr-x@  59 a123  staff     2006  1 29 18:04 protobuf-3.11.2
drwxr-xr-x@ 140 a123  staff     4760  1 31 20:07 test

ls -l

# 查看文件的详细信息

# 包括文件类型(第一列),权限,大小,所有者,所属组,hard link数量,创建时间,文件名

# 第一列的详细参数:

# [d]:dirtectory目录; [-]:文件;[ l ]:link链接文档;

# [b]:装置文件里面的可供储存的接口设备; [c]:装置文件里面的串行端口设备,例如键盘、鼠标

du -h  # 以易于阅读的形式,查看当前目录下所有文件的大小

du -h --max-depth=1  # 同上,但指定递归深度为1

du -h filename  # 查看文件或目录的大小

 

纯文本文件显示

#查看一个纯文本文件 file 的几种方法

cat -n file  # -n表带行号显示

tac file  # 倒序显示

nl file  # 带行号显示

 

tail -n 5 file  # 只显示文件后5行,不写-n 5默认显示后10行

head -n 5 file  # 只显示文件前5行,不写-n 5默认显示前10行

 

more file  # 一页一页地看,space向下翻页,Enter下一行,按q退出后内容还在屏幕上

less  file  # 一页一页地看,Pageup向上,Pagedown向下,按q退出后内容不在屏幕上

# more 和 less都可以预览 .gz 文件,less的功能比more更丰富些,less中?字符串 表向上查询字符串

 

linux中的挂载

mount /dev/sdb1 ~/share  # 把 /dev/sdb1 挂载到 ~/share 

 

定义别名 alias

alias 定义简写/别名

alias  # 显示当前所有别名

alias ls='ls -l --color==tty'  # 定义别名,注意等号左右不要加空格,这里用单引号引起来是因为变量中有空格

unalis ls  # 删除别名

 

在 /etc/profile 这个配置文件里查看是谁定义的别名

自己别名在 exit 退出之后就不存在了,因为 $ 是另一个进程了

只有写在 /etc/profile 里的系统定义的还存在

想定义自己的别名用自己的 profile # 在 /home/username/.bash_profile

 

shell中的变量

  • 直接定义变量
(base) 123deiMac:desktop a123$ a=0
(base) 123deiMac:desktop a123$ echo $a
0
(base) 123deiMac:desktop a123$ a='k'
(base) 123deiMac:desktop a123$ echo $a
k
(base) 123deiMac:desktop a123$ str="Hello World!"
-bash: !": event not found
(base) 123deiMac:desktop a123$ str='Hello world!'
(base) 123deiMac:desktop a123$ echo $str
Hello world!

a=0  #等号没有空格,初始化为数字0,如果变量名中有空格要用引号引起来整个变量

echo $a  #打印变量 a 的值,$表示变量,如果没有符号$,则会打印字符a

echo 1+2  #打印结果1+2,要想得到数学运算结果使用 echo `expr 1+2` # esc下面那个引号

#字符串的表示用单引号而非双引号

unset var  # 删除变量var

  • 使用命令行中的结果赋值给变量

var=$(命令)

size=$(du /home/L4/file|cut -f1)  # 把命令du /home/L4/file|cut -f1的结果保存为变量size

  • 变量的替换和 { } 的使用

比如 pwd 为一个已经定义的变量,把 pwd 这个变量赋值给 curdir

curdir=$pwd 或 curdir=`pwd`

使用 { } 将一个变量括起来

(base) 123deiMac:~ a123$ a=this
(base) 123deiMac:~ a123$ b=that
(base) 123deiMac:~ a123$ echo $a$b
thisthat
(base) 123deiMac:~ a123$ echo $aand$b
that
(base) 123deiMac:~ a123$ echo {$a}and$b
{this}andthat
(base) 123deiMac:~ a123$ echo {$a}$b
{this}that
  • 变量的运算

$表示后面要跟的是一个变量,如 $temp

expr 表示后面是一个数学运算,如 var=`expr 2**3` 表示 var 等于2 的 3 次方 

$[ ]表示[ ]中的是一个数学运算,如 var=$[5%4] 表示 var 等于5对4取余

用``把一个变量引起来  # `是Tab上面那个小斜点不是单引号

((i=$j+$k))  等价于   i=`expr $j + $k`

((i=$j-$k))  等价于   i=`expr $j -$k`

((i=$j*$k))  等价于   i=`expr $j \*$k`

((i=$j/$k))  等价于   i=`expr $j /$k`

注意:

linux 下的除法 / 默认是整除,如果要显示小数可以使用 scale 和 bc 结合

如 temp=`echo “$size/10”|bc`

更多 shell 中的变量与数值运算详见这里

看一段shell

vim myscript.sh

#!bin/bash

size=$(du /home/L4/file|cut -f1)  # the size of file

temp=`echo “$size/10”|bc`

# linux下的除法默认是整除,使用scale和bc结合可以指定显示小数位数

#但是split -b的参数bytes只能是整数,所以这里我们就使用默认的整除就行

split -b $temp’k’ /home/L4/file  # 把file按照 temp kb一个的大小分成许多个小文件

find . -name “x*” -exec mv {} /home/zhangsan \;  # 当前目录下查找刚才分出来的小文件移动

cd /home/zhangsan

cat x*>file2  # 把小文件合并成一个文件叫做file2

ln -s file2 /home/yd211/file2  # 给file2在/home/yd211/创建软链接

:wq

# chmod +x ./myscript.sh; ./mycsript.sh

 

变量的作用范围

shell 是一个进程,进程分为局部区 local 和环境区 environment ;

在定义新变量时,默认在本进程中的 local 存储,所有后续子进程都不能访问这些局部变量;

但是,子进程可以访问父进程迁移到环境中的变量。

set 看所有局部和环境中的所有值

env 看环境中环境变量的值

export 将 local 中的指定变量导出到环境区中,变成所有子进程都可访问的变量,且是单向传递

source 子进程与父进程共用一个变量空间,所以子进程可以将变量“传回”父进程

在 Shell 脚本中调用另一个 Shell 脚本的三种方式

 

数组

  • 数组的定义

shell 不支持浮点运算,数组定义只能定义整形

arr_number=(1 2 3 4 5);
$ arr_number=(1 2 3 4 5)
$ echo ${arr_number[0]}  # output 1

字符串型数组,用单引号或双引号引起来

arr_string=("abc" "edf" "sss")  # 或 arr_string=('abc' 'edf' 'sss');
  • 获取数组长度

arr_length=${#arr_number[*]} 或 ${#arr_number[@]}均可,即形式:${#数组名[@/*]} 可得到数组的长度

  • 读取某个下标的值

arr_index2=${arr_number[2]},即形式:${数组名[下标]}

  • 对某个下标赋值

例如:arr_number[2]=100,数组被修改为(1 2 100 4 5)

  • 删除操作

清除某个元素:unset arr_number[1],这里清除下标为1的数组; 清空整个数组:unset arr_number

  • 数组的遍历

数组遍历我们使用for语句来演示:

for v in ${arr_number[@]}; do

echo $v; done
 

进程管理

看本字符终端的进程

$ ps  # 稍纵即逝的,可能打印 PID 的时候还在,看到的时候已经不在了

看本 id 在本机的所有进程

$ ps xf  # 用 pid 和 ppid 那个之字形串起来,查看树形的进程情况

看本机所有进程

$ top  # 动态的,一秒刷新一次

$ htop  # 图形化的树形结构

 

只能杀自己的进程

杀掉自己的进程用 ps 查看 PID后用 kill 杀掉

# kill 999  # 出于内存保护,有时候可能 kill 不掉

# kill -9 999  # 强制杀掉,可能会有内存泄漏

根据名字查找进程

$ ps -ef|grep xxxx  # xxxx是要查找的名字

 

linux 中的正则表达式

? 匹配一个字符(除了 . 因为不希望动到隐含文件)

[ ] 匹配方括号内的一类字符

- 用于指定方括号内的范围,[1-9] 表示数字 1~9 ,[A-Z] 表示任意一个大写字母

! 非,[!1-9]表示除了数字 1~9 的字符

* 匹配任意长度的任意字符(除了 . )

 

查看文件:cat / more / less / head / tail

【Linux】查看日志类命令cat、less、more、tail、head

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值