因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧。学的不算深入,所以都是一些比较junior的内容。

在下一篇随笔会详述之前写的一个用于解析swift(569/940/950)的Shell。

一. Linux

1. 如下为一些经常使用到的命令,因为刚开始学习的时候记忆的东西比较多,都是根据全称来记忆的,多使用之后就会熟悉了。

cd / ls / mkdir / rmdir / rm / touch / mv / cp

对应全称如下

change directory / list / make directory / remove directory / remove / touch / move / copy

2. 归档/压缩会用到后面两个命令: tar / gzip

归档/解归档命令如下:

tar -cvf archived.tar fileName/FolderName --- 归档文件/文件夹,其中c=create(创建归档);v=visual(显示归档过程);f=file(归档后文件名);archived.tar为归档后的文件名; fileName/FolderName为需要归档的文件/文件夹

tar -xvf  archived.tar   --- 解除归档,其中vf参数与归档的含义相同,x=extract(解析归档)

压缩/解压命令如下:

gzip fileName  --- 压缩,会自动生成fileName.gz的压缩文件(原始的fileName文件会消失)

gzip -d fileName.gz  --- 解压缩,会自动生成fileName的文件(压缩文件会消失)

上述的归档/解归档和压缩/压缩可以同时使用

tar -zcvf archived.tar.gz fileName/FolderName  --- 在归档命令的基础上添加z(标识以gzip的方式进行压缩)

tar -zxvf  archived.tar.gz   --- 在解归档的基础上添加z(标识以gzip的方式进行解压)

3.history

该命令用来获取历史执行命令的记录(会显示对应的commandNumber & commandContent),有如下两个参数:

history n  --- 展示最新的n条历史记录

history -c  ---清空历史记录

其中针对展示的历史记录,可以通过两个方式进行调用:

! + commandNumber

! + commandContent

其中commandContent可以为前几个字符,环境会自动匹配历史中最新的命令。

4. 用户/用户组操作

添加/删除用户

useradd newUsername  --- 添加新用户newUsername(此时用户组也默认新建,亦为newUsername)

uueradd groupName newUsername  --- 添加新用户newUsername,并且该用户所属groupName 用户组

passwd newUsername userPwd  --- 为用户newUsername 添加密码userPwd

userdel newUsername  --- 删除用户newUsername

groupadd newGroupName  --- 添加新用户组newGroupName

groupdel newGroupName  --- 删除用户组newGroupName

5. 文件夹权限管理

针对每个文件都存在属主/属组/其他人的三个读/写/执行权限。可通过如下命令修改文件的属主/属组

chown newUsername:newGroupName fileName  --- 修改文件fileName的属主为newUsername,属组为newGroupName

如果只想修改属组,把newUsername置空,注意':'不能去掉。同时也可以通过如下命令

chgrp newGroupName fileName

如上两个命令我理解全称就是change owner和change group(方便记忆,包括后面的chmod=change modification)

6. 利用scp进行上传/下载

规则一般就是scp source destination

下载:scp username@host:absolutePath/fileName D:\  ---- 将文件fileName下载到D盘中

上传:scp D:\fileName username@host:absolutePath/  --- 将文件fileName上传到服务器absolutePath/下

如果是上传文件夹,在上传的路径前加-r (标识recursive)

7. grep/sed/awk

这三个命令也会经常使用到,查询的时候使用grep比较多,替换使用sed比较多,对查询后的继续处理使用awk比较多。

grep:

如grep test test*   ---用来查询以test开头的文件中包含test字符串的内容

echo “abc” | grep ‘^a'  -- 查询字符串abc是否以字母a开头

如上可以知道grep也支持正则表达式(会在后面描述),一般情况下需要使用正则时候我会使用egrep,因为有些正则grep还不能使用(应该需要使用grep -e)

sed:

echo “abc" | sed 's/a/A/g’  ---可以将a替换成A

sed -n '1,3p' fileName   输出文件fileName的第一行到第三行,其中p为print,n为quiet(代表只输出选中的内容,否则所有内容都会输出,而且选中的内容会输出两遍)

awk:

awk -F ‘:’ '{print $2}' fileName  --- 以分号为分隔符,输出每一行的第二个字符。其中-F为field seperator,作用同-v FS

awk -v RS=':' 'NR==2{print}'  --- 以分号为RS(row seperator行分隔符),并输出第二行(NR=number row)

上述只是具体,实际功能均远不止于此,特别awk的功能在处理字符串上极为强大。前段时间因为工作需要利用awk解析swift(569/940/950)报文到指定的格式上,会在后面单独写一遍文档详述。

8, 切换用户

su userName  --- 切换到userName用户,但依旧使用当前的环境变量,但userName为空时为切换到root。可以使用exit命令退出当前用户

su - userName  --- 与上面的相比的不同时会切换当前的环境变量到新用户

9.管道

管道用符号|标识,即将管道左边的输出作为管道右边的输入,如:

echo “123” | grep ‘1’

上述命令中将文本作为grep命令的输入

10. 标准输出/输入/错误输出

标准输入为0,默认从屏幕输入

标准输出为1,默认输出的屏幕

标准错误输出为2,默认输出到屏幕

echo 123 > fileName  --- 将文本123输出到文件fileName中,此时123不会输出到屏幕上

cat > file1 < file2  --- 将file2作为file1的标准输入,即拷贝file2的内容到file1

command > file 2>$1  --- 将命令command的结果输出到file中,并将标准错误输出的转到标准输出,即此时如果存在错误也会很标准输出一样输出至file中

11. 其他零碎的小命令

sort  排序

last | sort

uniq  对重复的内容只显示一次(unique),其中可以使用参数-c来计算重复的数量,如下

uniq -c

wc 计算数量(行/单词/字符), 全称应为word count

wc -l A --- 计算行数

wc -w  --- 计算单词数量

wc -m  ---计算字符数量

如果什么参数都没有,会显示行/单词/字符的数量

tee 将内容输出的文件的同时标准输出,如:

echo “123” | tee test.txt

如上命令在把文本123输入到test.txt*(覆盖的方式)的同时输出到屏幕

ps -aux  --- 查看内存等使用情况

top  --- 查看内存等使用情况(动态)

df -h  ---查看磁盘使用情况

dos2unix fileName  ---- window和linux的换行符不同,所在需要通过该命令去除多余的^M

unix2dos filename

tr ‘a-z’ 'A-Z' 将小写字母转成大写字母

二. VIM

1. 搜索字符串

:/string  --- 向文件尾部搜索字符串

:?string  --- 向文件头部搜索字符串

搜索过程中使用n(向下搜索)/N(向上搜索)字符串

2. 替换字符串

:[range]s/oldString/newString/g

其中range可以是1,4代表第一行至第四行:%代表全部内容

g标识全部替换

3. 编辑模式

i/o为进入编辑模式,其中o为在当前行插入一行并让光标停在新的一行

通过ctrl x + ctrl o可以对参数进行补齐(根据现在文件内容),如果在写shell,参数又比较长,还是比较好用的

通过ctrl x + ctrl n可以对参数进行补齐(根据当前目录文件)

4. 指令模式

u为取消上一次操作(undo),ctrl + r为重做上一次操作(redo);万一取消错了,redo还是很有用的

v/V/ctrl + v可以对区块(即不对整行进行处理)进行选择,进而进行后续操作(yy/dd/p)

5. 多文件处理

好处是针对多个文件间需要使用yy/p命令,不同vim下的文件是无法处理的。vim 后加多个文件可以多文件处理,利用:files可以展示正在多文件处理的文件列表,:n进入到下一个文件,:N进入到上一个文件。

环境参数设置

:set nu  --- 显示行号(number)

:set nonu  --- 不显示行号

:set hlsearch  --- 高亮查询的结果(highlight search)

:set nohlsearch  --- 不高亮查询结果

:set autoindent  --- 启用indent(当该行存在indent,换行后下一行也会保留和改行的indent)

:set noautoindent  --- 不启动indent

:set backup  --- 启动备份,当文件发生修改时,会自动生成一个fileName~的备份文件

:set nobackup  --- 关闭备份(默认为关闭的状态)
;syntax on   --- 启动语法(字符颜色不同)

:syntax on  --- 关闭语法

三. 正则

^为匹配首字符,但在[]代表非

$匹配尾字符,如^1.*2$为匹配1开头2结尾的字符

. 匹配除换行符外的任意字符

*匹配前面的内容0次或多次

+匹配前面的内容1次或多次

?匹配前面的内容0次或1次

{n}匹配前面的内容n次

{n,}匹配前面的内容n次或更多次

{n,m}匹配前面的内容n-m次(包含n和m)

|各个条件之间的或

Linux & Shell 学习笔记【1/2】的更多相关文章

  1. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  2. linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  3. Linux Shell 学习笔记

    2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...

  4. Linux Shell学习笔记:exit退出状态代码

    inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令 ...

  5. Linux Shell学习笔记(一)

    Shell,见名知意,就是一个作为用户与Linux OS间接口的程序,允许用户向OS输入需要执行的命令.Shell众多,这里只介绍Bash. 0)实验的Shell版本 显示shell版本: /bin/ ...

  6. linux shell 学习笔记--内部命令学习

    .基本命令 新手必须要掌握的初级命令 ls 基本的列出所有文件的命令.但是往往就是因为这个命令太简单,所以我们总是低估它.比如 ,用 -R 选项,这是递归选项,ls 将会以目录树的形式列出所有文件, ...

  7. linux shell学习笔记

    一  变量 声明变量: my_var='ddd'使用变量: ${my_var}设置为只读变量: readonly my_var删除变量: unset my_var 注意只读变量不能被删除 变量类型:( ...

  8. linux shell 学习笔记01

    1.命令历史记录history !$     :调用上一条命令的执行结果 !100   :运行history记录里的第100条命令 !ser   :调用以ser开头的最后一次执行的命令 ctrl+r  ...

  9. Linux Shell 学习笔记 00

    1.Bash = Bourne Again SHell 2.终端提示符: #普通用户 username@hostname$ #管理员用户 root@hostname# 3.shell脚本通常是一个以s ...

随机推荐

  1. Flask admin Flask login 整合模板

    项目地址: https://github.com/WES6/supflask Flask admin 官方文档: https://flask-admin.readthedocs.io/en/lates ...

  2. iOS多线程开发之GCD(基础篇)

    总纲: GCD基本概念 GCD如何实现 GCD如何使用 队列和任务组合 一.GCD基本概念 GCD 全称Grand Central Dispatch(大中枢队列调度),是一套低层API,提供了⼀种新的 ...

  3. 从租人APP沦为性工作发布平台 看共享经济监管边界

    看共享经济监管边界" title="从租人APP沦为性工作发布平台 看共享经济监管边界"> 继直播类软件部分涉黄之后,最近火爆的各类"租人"软件 ...

  4. Spring源码分析-BeanFactoryPostProcessors 应用之 PropertyPlaceholderConfigurer

    BeanFactoryPostProcessors 介绍 BeanFactoryPostProcessors完整定义: /** * Allows for custom modification of ...

  5. 自定义Toast的出现样式

    使用下面的方法来获取一个Toast对象: private Toast showShortToast() { if (toast == null) { toast = new Toast(this); ...

  6. Channel Estimation for High Speed Wireless Systems using Gaussian Particle Filter and Auxiliary Particle Filter

    目录 论文来源 摘要 基本概念 1.时变信道 2.粒子滤波 3.高斯粒子滤波 4.辅助粒子滤波 比较 借鉴之处 论文来源 International Conference on Communicati ...

  7. windows下用Python把pdf文件转化为图片

    依赖:PyMuPDF(pip install pymupdf) # -*- coding: utf-8 -*- """ 1.安装库 pip install pymupdf ...

  8. Spring Boot 2.x基础教程:使用 ECharts 绘制各种华丽的数据图表

    上一节我们介绍了如何在Spring Boot中使用模板引擎Thymeleaf开发Web应用的基础.接下来,我们介绍一下后端开发经常会遇到的一个场景:可视化图表. 通常,这类需求在客户端应用中不太会用到 ...

  9. 基于arduino的红外传感系统

    一.作品背景 在这个科技飞速发展的时代,物联网已经成为了我们身边必不可少的技术模块,我这次课程设计做的是一个基于arduino+树莓派+OneNet的红外报警系统,它主要通过识别人或者动物的运动来判断 ...

  10. C# 关于位运算的学习笔记

    一.理解什么是位运算 程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),简单来说位运算就是直接对在内存中的二进制数的每位进行运算操作. 二.学习前先了解一下有哪些运算,运算符都怎么 ...