文章目录

    • 介绍:
    • 1.cat /etc/shells
      • 编写并执行一个shell脚本
    • 3.chmod u+x who.sh
    • cp复制一个文件到另一个目录中
      • find
    • ln -s
      • vim
      • grep
  • nohup 命令
  • touch命令

介绍:

脚本语言(Script Language)是相对于编译型语言而言的,它是为了缩短编译型语言编写—编译—链接—运行(Edit-Compile-Link-Run)过程而创建的计算机编程语言。由于脚本语言常常运行于底层,所处理的是字节、整数、浮点数或其他机器层的对象,因而脚本语言是低级程序设计语言。如C\C++、Ada、Java、C#等都属于编译型语言,也可称为高级程序设计语言,这类语言所编写的程序需要经过编译,将源代码转化为目标代码才能运行。而脚本语言往往是解释运行而非编译,即由解释器(Interpreter)读入脚本程序代码,将其转换成内部的形式执行,而解释器本身则是编译型程序。 脚本语言的好处是简单、易学易用,适合处理文件和目录之类的对象,以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,脚本语言的特性可以总结为以下4个方面。
● 语法和结构通常比较简单。
● 学习和使用通常比较简单。
● 通常以容易修改程序的“解释”作为运行方式,而不需要“编译”。
● 程序的开发产能优于运行效能。
脚本语言的灵活性是以执行效率为代价的,脚本语言的执行效率通常不如编译型语言。当然,脚本语言一般不适用于大型的项目、计算复杂的工程或有高级需求的应用软件,它适用于系统管理、文本处理等方面完成特定功能的常用的小工具或小程序。

1.cat /etc/shells

查看电脑安装的linux shell种类

2.ls -l /etc/sh*
用于列出/etc目录下以sh开头文件的详细信息
分号可以用于分隔同一行内多条命令

编写并执行一个shell脚本

需要使当前用户具备执行该脚本文件的权限
先编辑一个简单的脚本:

#!/bin/bash
date #显示当前日期
who  #当前登陆的用户

文件的第1行是“#!/bin/bash”,“#!”符号称为“Sha-bang”符号,是Shell脚本的起始符号,“#!”符号是指定一个文件类型的特殊标记,它告诉Linux系统这个文件的执行需要指定一个解释器。“#!”符号之后是一个路径名,这个路径名指明了解释器在系统中的位置,对于一般的Shell脚本而言,解释器是bash,也可以是sh,即用下面两种方式作为脚本的第1行都是正确的:
#/bin/bash
#/bin/sh

授予权限:

3.chmod u+x who.sh

执行
./who.sh

4.ls /home
查看用户
5.sudo tail -l /etc/shadow #查看加密后的用户账号及密码

6. ls -l

列出所在位置的目录下所有文件和目录的详细信息

cp who.sh PyTorch-YOLOv3

cp复制一个文件到另一个目录中

cp -a who.sh PyTorch-YOLOv3

复制一个文件到另一个目录中,且不改变权限和修改日期

cp -r pkgconfig 照片

将目录的所有内容全部复制到另一个目录中

mv:移动文件

mv [option] [source] [destination]
mv -p #移动时保留权限
mv -i #交互方式操作,如果mv将导致对已存在的目标文件覆盖,此时系统询问是否重写
mv -f #禁止交互操作

rm:删除

rm-rf #删除目录以及目录下所有文件

mkdir:创建目录

mkdir -m 777 tsk #创建目录且指定权限
mkdir -p testdir/test #创建父目录和需要创建的子目录

-m 777指定了目录的读写执行权限

rmdir:删除目录命令

cd ~回到主目录
cd - 回到上次访问的目录

chmod:修改权限

chmod u+x,g+w testvim #修改testvim文件的权限为主可读可写可执行 同组用户可读可写

u :表示用户(user 即文件或目录所有者)

g:表示同组
o:其他用户
a:所有用户

find

对于查找到的结果,find命令可以有三种处理方式,print仅将结果输出到屏幕,而exec和ok可以对结果进一步处理,区别在于:exec直接进行处理,而ok在处理之前出现提示信息,供用户最终确定是否执行该操作。

find . -name 'p*' -perm 744 -prin

第1条命令查找当前目录下文件名以t开头的,且文件属主具有读、写、执行权限的文件,命令用“.”表示当前目录,-name′t*′表示以t开头的文件名,其中的“*”字符表示任意字符,这种用法称为通配,本书第3章将会介绍这一概念。-perm 744表示文件属主具有读、写、执行权限,744是表示文件权限的数字设定法。第1条命令结果的./表示当前目录下的文件,./DEBUG则表示子目录DEBUG下的文件。

更改时间距今5天内的文件,使用了-mtime-n用法。

find . -mtime -5 -print

删除某目录下更改时间距今3天内的所有文件:

find /var/log -mtime -3 -ok rm {} \;

ln -s

它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接 和硬链接两种,软链接就是ln -s ** *,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln * **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。

ln -s /www/server/mysql /usr/local/mysql
export PATH=PATH:/usr/local/mysql/bin/echo′exportPATH=PATH:/usr/local/mysql/bin/ echo 'export PATH =PATH:/usr/local/mysql/bin/echo′exportPATH=PATH:/usr/local/mysql/bin/’ >> /etc/profile
tail -l /etc/profile #查看是否环境变量配置成功添加到了/etc/profile中

vim

插入模式(Insert mode) 在一般模式按下i、o、a等字母都可以进入编辑模式,在此模式下,vim将用户的输入插入到当前光标位置,修改暂时保存到缓冲区,按Esc键则从编辑模式退回到一般模式。

grep

grep 是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式,并把行打印出来。grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,grep也是Linux中最广泛使用的命令之一。

grep命令的模式十分灵活,可以是字符串,也可以是变量,还可以是正则表达式。需要说明的是,无论模式是何种形式,只要模式中包含空格,就需要使用双引号将模式引起来,如果不加双引号,空格后的单词容易被误认为是文件名,如普通字符串为“hello world”,grep hello world命令就将world认为是文件名,因此,grep“hello world”filename才是正确的写法。大部分情况下,使用单引号将模式引起来也是可以的

nohup 命令

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

使用权限
所有使用者

语法格式
nohup Command [ Arg … ] [ & ]
参数说明:
Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

实例
以下命令在后台执行 root 目录下的 runoob.sh 脚本:

nohup /root/runoob.sh &
在终端如果看到以下输出说明运行成功:

appending output to nohup.out
这时我们打开 root 目录 可以看到生成了 nohup.out 文件。

如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:

ps -aux | grep “runoob.sh”
参数说明:

a : 显示所有程序
u : 以用户为主的格式来显示
x : 显示所有程序,不区分终端机
另外也可以使用 ps -def | grep “runoob.sh” 命令来查找。

找到 PID 后,就可以使用 kill PID 来删除。

kill -9 进程号PID
以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:

nohup /root/runoob.sh > runoob.log 2>&1 &
2>&1 解释:

将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)

touch命令

用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

ls -l 可以显示档案的时间记录。

语法
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][–help][–version][文件或目录…]
参数说明:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
–help 列出指令格式。
–version 列出版本讯息。
实例
使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令:

$ touch testfile #修改文件的时间属性
首先,使用ls命令查看testfile文件的属性,如下所示:

$ ls -l testfile #查看文件的时间属性
#原来文件的修改时间为16:09
-rw-r–r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:

$ touch testfile #修改文件时间属性为当前系统时间
$ ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r–r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:

$ touch file #创建一个名为“file”的新的空白文件

shell的学习和命令使用入门相关推荐

  1. Shell脚本学习指南 - 第二章入门篇

    shell脚本的第一行#! #! /bin/awk -f 内核会扫描文件开头的#!后面内容,跳过所有空白符号,寻求可以用来执行程序的解释器的full path和option(option后面的空格会识 ...

  2. linux shell脚本学习xargs命令使用详解

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...

  3. Shell+VCS学习3---VCS命令

    1 VCS介绍 VCS的功能可以大致分为两个大类:编译和仿真. VCS编译的过程,就是经过一系列的操作,将verilog代码转换为可执行文件(.svim),接下来就是用dve进行仿真过程生成.vpd波 ...

  4. BASH命令和SHELL脚本学习

    BASH命令和SHELL脚本学习 转载于:https://www.cnblogs.com/huolong123/p/6228049.html

  5. Shell脚本学习-阶段二十七-命令解释三

    文章目录 前言 quyotastats repquota convertquota swapoff swapon sync chroot getent last lastb lastlog logro ...

  6. 【Shell牛客刷题系列】SHELL5 打印空行的行号:一起学习grep命令搭配正则表达式的使用

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Linux>.欢迎关注专栏~ 本 ...

  7. Shell脚本学习-阶段二十七-命令解释二

    文章目录-命令解释二 前言 emacs jed joe nano================ pico sed=================== vi,vim============ mtyp ...

  8. MongoDB开发学习开天辟地,经典入门

    如果你从来没有接触MongoDB或对MongoDB有一点了解,如果你是C#开发人员,那么你不妨花几分钟看看本文.本文将一步一步带您轻松入门. 阅读目录 一:简介 二:特点 三:下载安装和开启服务器 四 ...

  9. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

最新文章

  1. Redis几个认识误区
  2. 【django】创建django项目工程
  3. Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理
  4. webpack+vue-cli 中proxyTable配置接口地址代理
  5. 机器学习】LDA线性判别分析
  6. kb4023057安装失败_微软重发Win10 KB4023057 补丁,推动Win10更新
  7. 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题
  8. 终于回应!GitHub 承认解雇犹太员工的错误并道歉,HR 负责人辞职
  9. php使用函数封装去除空格,去除php注释和去除空格函数分享_PHP教程
  10. 【数学基础】特征值,特征向量与SVD奇异值分解
  11. 2021年工作报告词频词云分析
  12. 基于php的校园电影网站系统
  13. AirSim无人机仿真(Ubuntu18.04)
  14. oracle 根据符号分列,oracle 树结构数据层次分列显示
  15. 谷歌开发者工具preserve log
  16. Oracle参数为英文或数字,ORACLE中将数字转换为英文
  17. python名片制作代码_教你做一张能运行 Python 的名片,成本只要20元!
  18. CentOS防攻击设置
  19. matlab复函数画图
  20. 【sql 统计实例】统计本月,本年,去年

热门文章

  1. 笔记本电脑键盘切换_全球首款折叠屏笔记本电脑ThinkPad X1 Fold:5G高速互联拥抱PC场景融合时代...
  2. 印象笔记三级目录_我的印象笔记使用手册
  3. centos mysql下载64位_CentOS7 64位安装mysql教程
  4. USC提出拟牛顿法深度学习优化器Apollo,效果比肩SGD和Adam
  5. 实习热招 | 想找「NLP」实习机会?这 7 家公司正在等你
  6. 重磅!2021 高通人工智能应用创新大赛今日开赛
  7. 保姆式参赛教程全公开,居然还送10万奖金?
  8. 百万奖金!交通事件、医学病理、广告检测,江苏大数据开发与应用大赛报名...
  9. “非自回归”也不差:基于MLM的阅读理解问答
  10. 上海科技大学ACL2018高分论文:混合高斯隐向量文法