概述
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
最后
以上就是洁净大碗为你收集整理的linux入门学习笔记#02的全部内容,希望文章能够帮你解决linux入门学习笔记#02所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复