一、Shell 的含义

学习 Bash,首先需要理解 Shell 是什么。Shell 这个单词的原意是“外壳”,跟 kernel(内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。

具体来说,Shell 这个词有多种含义。

首先,Shell 是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境(commandline,简写为 CLI,shell是linux API的命令行接口,对应图形接口。Shell 接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。本书中,除非特别指明,Shell 指的就是命令行环境。

其次,Shell 是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用 Shell 命令写出各种小程序,又称为脚本(script)。这些脚本都通过 Shell 的解释执行,而不通过编译。

最后,Shell 是一个工具箱,提供了各种小工具,供用户方便地使用操作系统的功能。

二、Shell 的种类

1. Shell 有很多种,只要能给用户提供命令行环境的程序,都可以看作是 Shell。

历史上,主要的 Shell 有下面这些。

Bourne Shell(sh)

Bourne Again shell(bash)

C Shell(csh)

TENEX C Shell(tcsh)

Korn shell(ksh)

Z Shell(zsh)

Friendly Interactive Shell(fish)

Bash 是目前最常用的 Shell,我的电脑是Z shell.

2. 下面的命令可以查看当前运行的 Shell。

$ echo $SHELL

/bin/bash

3. 先看看自己的控制台是哪一种类型的:bashrc或者zshrc,然后把常用的一些设置,比如别名设置或者环境变量之类的放到~/.zshrc或者~/.bashrc里。每当打开一个终端就会自动跑这个文件里的命令,或者是人工启动这个文件source ~/.bashrc 或者. ~/.bashrc (.就相当于source ),省得每次都自己再写一遍。

三、Shell 常用命令

1. touch

新建一个不存在的文件:touch a.text

2. echo

用于字符串的输出

(1) echo "It is a test"

这里的双引号完全可以省略,以下命令与上面实例效果一致:

echo It is a test

(2) 显示结果定向至文件

echo "It is a test" > myfile

3. cat

(1). 一次显示整个文件:cat filename

(2). 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.

(3). 将几个文件合并为一个文件:cat file1 file2 > file

4. control+c (cancel) 撤销当前命令

control+a (a, b, c...) 到当前命令开头

control+e (end) 到当前命令结束

5. ls

ls [选项] [目录名]  列出目标目录中所有的子目录和文件

(1)-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件

(2)-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)

(3)-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来

6. alias 设置别名:alias name='command line' : alias a=“ssh -D 12345  clouddesktop_hostname”

7. pwd 列出该目录的路径

8. rm -rf  删除指定目录下的所有文件与子目录

9. mkdir [目录名] 当前目录中创建一个目录

10. vi filename/vim filename: 打开或新建文件,并将光标置于第一行首

11. 输入Hive,进入Hive环境

输入python,进入python环境

12. mv 用来为文件或目录改名、或将文件或目录移入其它位置

mv 文件名 文件名

将源文件名改为目标文件名

mv 文件名 目录名

将文件移动到目标目录

mv 目录名 目录名

目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名

mv 目录名 文件名

出错

13. cd [目录名] 切换当前目录至dirName

(1)cd / 进入系统根目录

(2) cd ~ 进入当前用户主目录

(3) cd .. 进入上一级目录

14. du [选项][文件]   显示每个文件和目录的磁盘使用空间,例如:du -sh *

(1)-s或--summarize  仅显示总计,只列出最后加总的值。

(2)-h或--human-readable  以K,M,G为单位,提高信息的可读性

15. df [选项] [文件]   显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。

(1) -h 方便阅读方式显示

(2) -a 全部文件系统列表

(3) -l 只显示本地文件系统

16. 用Ctrl + R +”前缀”. 搜索历史命令并将前缀进行字典序匹配

17. cp命令用来复制文件或者目录

-r, --recursive  复制目录及目录内的所有项目

18. wget 断点续传

eg: wget -b -c -t 0 -O new_name.tar.gz http://www.cnscn.org/old_name.tar.gz

(1) -c 断点续传

(2) -t 0 反复尝试的次数,0为不限次数

(3) -O name_name.tar.gz 把下载的文件命名为new_name.tar.gz

(4) http://www.cnscn.org/old_name.tar.gz 要下载的文件的网址

(5) -b:让wget在后台运行,记录文件写在当前目录下"wget-log"文件中;

19. clear

刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。

20、linux环境下创建和删除软链接

linux下的软链接类似于windows下的快捷方式

创建:ln -s [源文件或目录][目标文件或目录]

删除: rm -rf [目标文件或目录]

其作用是当进入目标文件目录,实际上是链接进入了源文件目录

值得注意的是执行命令的时候,应该是源文件或目录已经建立,不要创建目标文件或目录

21. 查看当前进程:ps aux

杀进程:kill -9 PID

22. grep 关键词匹配

23. | 管道:将前一条命令的输出,作为后一条命令的输入,相当于命令之间的粘合剂。

例如:查看python进程:ps aux| grep python

24. chmod命令用于改变linux系统文件或目录的访问权限。

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。

文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。

有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。

当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。

权限范围:

u :目录或者文件的当前的用户

g :目录或者文件的当前的群组

o :除了目录或者文件的当前用户或群组之外的用户或者群组

a :所有的用户及群组

权限代号:

r :读权限,用数字4表示

w :写权限,用数字2表示

x :执行权限,用数字1表示

- :删除权限,用数字0表示

chmod [who] [+ | - | =] [mode] 文件名

例如:增加文件所有用户组可执行权限

命令:chmod a+x filename

25. tail 命令

从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。

-f 循环读取 tail -f gg.log 查看实时日志

26. which 查看可执行文件(命令)的位置

在PATH变量指定的路径中,只找一层,搜索某个系统命令的位置,并且返回第一个搜索结果。

27. find命令用来在指定目录下查找文件

find path -option [ -print ] [ -exec -ok command ]

$ find . -name "*.c"

28、ssh (Secure Shell)

(1) SSH是一种网络协议,用于计算机之间的加密登录。

如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

(2) SSH主要用于远程登录。

$ ssh user@host

(3) 拷贝文件:

$ scp  用户名@远程host:远程文件路径 本地路径

29. 不挂断地运行命令

nohup comd > gg.log &(重定向符号,解放键盘)

配合tail -f可以打印输出日志

linux mv中途进程断掉,shell入门相关推荐

  1. linux mysql 僵尸进程_linux shell中清理僵尸进程

    今天登录到服务器上时,系统打印有6 zombie processes存在,于是用kill -9去清理掉这些僵尸进程,命令执行完后没有错误,可是再次查找时,发现僵尸进程仍然存在,不知道怎么清理了,上网找 ...

  2. linux常见命令以及shell入门编程(笔记总结记录)

    linux常见命令以及shell入门编程(笔记总结记录) 文章目录 linux常见命令以及shell入门编程(笔记总结记录) 一.linux常见命令 1.不常用 2.常用 3.数据查找处理相关 1.g ...

  3. 【linux教程(一)】Linux shell入门

    1. linux shell简介 2. bash shell基础命令 3. linux shell的一些基本知识 4. shell变量和传递参数 5. linux中的文件权限 6. linux中的ro ...

  4. 使用 shell 脚本对 Linux 系统和进程资源进行监控

    Shell 简介 Shell 语言对于接触 LINUX 的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行.实际上 Shell 是 ...

  5. 使用shell脚本对Linux系统和进程资源进行监控

    今天发现一个网站,快课网,感觉还不错,里面有编程,面试,算法等等相关内容. 链接如下:http://www.cricode.com/ 首页便看到这篇文章,正好对Linux和shell等持续关注,转载学 ...

  6. 【Linux】用最形象的例子学习进程,从入门到深入

    进程 前言 一.预备知识 1.1 什么是操作系统 1.2 为什么要有OS 二.进程 PCB的内容 进程切换 fork(系统调用接口) 操作系统进程状态 Z- -僵尸进程 僵尸进程的危害 S+/S 的区 ...

  7. Linux系统应用 第八章 Shell编程入门

    8.1Shell编程过程 在Linux中,Shell不但能与用户进行逐个命令交互执行,也可以通过脚本语言进行编程.通过对Shell进行编程,可使大量任务自动化,对于系统管理.系统维护方面特别有用. 复 ...

  8. linux脚本监控某一进程,linux监控某个进程的运行shell脚本

    该脚本实现了对指定进程名的进程进行每隔2的扫描监控,一旦发现进程不存在便重新启动. #!/bin/sh a=10; while [[ @a -gt 5 ]]; do if test $(pgrep - ...

  9. linux 杀死进程的shell脚本

    由于代码调试进程一直存在需要手动杀死,比较费时,写个小脚本节省下时间 #vi clear.sh ​!/bin/bash echo "$1" pid=`ps -ef | grep $ ...

  10. linux操作系统下 c语言编程入门

    linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...

最新文章

  1. redis(3)-redis基本类型
  2. linux symbol文件,LINUX EXPORT_SYMBOL_GPL及EXPORT_SYMBOL导出函数
  3. 机器人学习--自主移动机器人导论资料(附下载链接)
  4. python练手程序_100个python练手小程序
  5. 计算机专业 拒绝清华,高分拒绝清华北大怎么回事 为什么会拒绝
  6. javascript权威指南--学习笔记
  7. Activiti WAR 包简介
  8. OpenShift 4 - 创建Service Mesh运行环境
  9. jsp 点击左边菜单 菜单栏没有停在二级菜单上_Excel – 如何快速导入网页上的表格?...
  10. 阿里云加入开放媒体联盟AOM 科技巨头联合推广高清视频新标准
  11. 斯蒂芬-如何选择约会地点大大增加约会成功机率的干货贴
  12. Process Explorer 进程管理及排错利器(上)
  13. ASP.NET MVC的帮助类HtmlHelper和UrlHelper
  14. ETL数据同步工具Kettle简介
  15. java技术栈是什么_java技术栈必学有哪些?
  16. php流量单位换算处理,流量的换算(流量单位换算)
  17. Java多线程导出Excel表格, 100w数据量
  18. nacos的命名空间
  19. 32位int 最小负整数
  20. 海洋经济发展具体内容

热门文章

  1. 家里可以装网吧无盘服务器吗,我在家里想装个网吧系统,求好的网吧系统。请专业的来个连接我...
  2. 牛客网暑期ACM多校训练营(第二场)
  3. 汇编指令CALL的硬编码E8 和 JMP 的硬编码E9 后面参数的计算方法
  4. 数据库常考题型(8)——将关系模式R分解成2NF
  5. on1 photo raw 2020中文版(RAW图像处理) v14.5.1.9231绿色便携版
  6. 【沃顿商学院学习笔记】商业分析——Customer Analytics:04 规范性分析 Prescriptive Analytics
  7. adbdriver的安装
  8. 实体与实体之间的联系
  9. python微信抢票脚本_春节到了 教你使用python来抢票回家
  10. CSDN 技术问答升级规则