1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux bash命令入门

Linux bash命令入门

时间:2019-02-12 14:24:57

相关推荐

Linux bash命令入门

bash简介

基础操作

缩写规则就是:删掉元音字幕(A E I O U),保留前 2 到 3 个辅音字母

命令全部写法 缩写创建目录 make directory mkdir删除 remove rm移动/重命名 move mv复制 copy cp罗列 list ls改变目录 change directory cdcd ~/Desktop 进入桌面mkdir demo-1 创建目录,这时你可以切到桌面,看到 demo-1 目录rm -rf demo-1 删除目录touch 1.txt 创建文件,如果你发现文件后缀不见了,请让该死的 Windows 显示文件后缀(不会请百度或者谷歌)mv 1.txt 2.txt 这样我们就把 1.txt 移到 2.txt 了,也就是重命名-----------------------------------------------------------------操作 命令进入目录 cd显示当前目录 pwd创建目录 mkdir 目录名创建目录 mkdir -p 目录路径我是谁 whoami查看路径 ls 路径查看路径 ls -a 路径查看路径 ls -l 路径查看路径 ls -al 路径创建文件 echo '1' > 文件路径强制创建文件 echo '1' >! 文件路径追加文件内容 echo '1' >> 文件路径创建文件 touch 文件名改变文件更新时间 touch 文件名复制文件 cp 源路径 目标路径复制目录 cp -r 源路径 目标路径移动节点 mv 源路径 目标路径删除文件 rm 文件路径强制删除文件 rm -f 文件路径删除目录 rm -r 目录路径强制删除目录 rm -rf 目录路径查看目录结构 tree建立软链接 ln -s 真实文件 链接下载文件 curl -L > baidu.html拷贝网页 wget -p -H -e robots=off 磁盘占用 df -kh当前目录大小 du -sh .各文件大小 du -h

↑ ↓ 上一命令 / 下一命令!! 上一命令占位符Tab 自动补全路径Alt+. 上一命令的最后一个参数&& 前面的执行成功了,再执行后面的|| 前面的执行失败了,就执行后面的; 前面执行完了,不管成功失败,就执行后面的> 重定向| 管道

关于shell

hell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

以下是几种shell版本,bash是默认的:

sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。

Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。

bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。

与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。

csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很相似。

Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。

Tcsh 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数。

ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。

pdksh: 是 Linux 系统提供的 ksh 的扩展。

pdksh 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。

Bash如何解析命令

1.按行读取命令

2.处理引用问题

双引号内的字符将失去其原有意义,除了KaTeX parse error: Undefined control sequence: \。 at position 5: , "和\̲。̲ 单引号内的字符将失去…, "和\。

3.将输入的一行字符串按照 ; 分割成多个命令。

4.处理特殊字符

{…}, <(…), < …, <<< …, … | …等特殊字符会被按照特殊的执行次序处理。

重定向符号会被从命令行中移除,所以在执行命令时… > log, 2>&1这些命令都是不会提交给内核处理命令的进程的。

其他符号会被其对应的结果表达所替代,如{…}命令:

$ echo {a..c}a b c

5.变量替换

将带 $ 符号的变量 $parameter替换成变量内容, 术语叫Parameter Expansion.

$ echo $PWD/z/ros

6.将命令行分割成被执行命令和参数

分割的原则是任何空白(空格、Tab)都将作为分隔符将一整条命令分割成一个一个的词。分割后结果的第一个词作为命令,其他词作为参数。如果命令词中包含空白,需要用引号括起来。

$ My Command /foo/bar ## This will execute the command named 'My' because it is the first word.$ "My Command" /foo/bar ## This will execute the command named 'My Command' because the space inside the quotes has lost its special meaning allowing it to split words.

Tips: 在从Windows或MacOS将文件复制到Linux时,有些文件的文件名可能包含Linux不支持的特殊字符,如空格,#等,如文件名file 1127.txt在Windows下是合法的,但是在Linux不合法,删除这个文件的命令:

$ rm file 1127.txt // not work $ rm "file 1127.txt" // work

7.执行命令

a. 如果命令是 function or builtin,该命令将会被接收命令的同一个Bash process处理。

b. 否则 (像是 hadoop fs 等命令), Bash 将会 fork off,创造一个新的Bash子进程,将解析好的命令传递给它,并等待它返回结果。一般情况下,子进程将会继承父进程的标准流。

bash命令的使用

bash的工作特性之命令执行状态返回值和命令展开所涉及的内容及其示例演出

!脚本执行与调试

1、绝对路径执行,要求文件有执行权限

2、以sh命令执行,不要求文件有执行权限

3、加空格或source命令执行,脚本将在当前shell中执行

4、检查脚本语法

bash -v test.sh

5、跟踪脚本执行

bash -x test.sh

!环境脚本执行规则

用户登录:/etc/profile、/.bash_profile、/.bash_login、~/.profile

用户注销:~/.bash_logout

执行新shell: /etc/bash.bashrc、~/.bashrc

执行script(使用#!/bin/bash):如指定BASH_ENV的值,则执行其指定的启动文件

执行script(使用#!/bin/sh):不调用任何环境脚本

!基本语法

1、脚本程序以#!/bin/bash 开始。以告之系统脚本以何种shell执行。

2、以#开头的行被视为注解,执行时自动忽略。

3、每行不得多于255个字节,可在行末加上反斜杠的方式拆分单行内容到多行中。

例如:

test1=abcdefg\hij\klmnopd\rstuvwxyz

4、多命令以分号分隔时,命令从左至右依次执行。例如: whoami;w5、多命令以&&分隔时,命令从左至右按前面命令执行成功后再执行下个命令的原则依次执行。例如:make && make install6、多命令以||分隔时,命令从左至右按前面命令执行失败后再执行下个命令的原则依次执行。7、多个命令以分号分隔放置()中,则会启用子shell并执行。例如:(mkdir testdir;cd testdir;touch testfile)8、多个命令以分号分隔放置{}中,则会在当前shell中执行。需要注意的是命令和{}必须有空格间隔,并且最后一条命令也必须加分号。例如:{ mkdir testdir;cd testdir;touch testfile; }9、被反引号`括起来的命令或$(命令),shell将直接引用执行结果。例如:

test=datetest=$(date)

10、可以将算术运算式以$[ 算术运算式 ]的形式进行求值。注意算术运算式和[]必须有空格分隔,此方法只支持整型运算。例如:test=$[ 32 * 17 ]11、使用$((运算式))的形式也可以进行算术运算求值,并且可以进行布尔运算。例如:test=$(( 32 * 17 ))12、使用let 运算式也能进行算术运算,算术式各元素间不得有空格,否则应将算术式用引号括起来。例如:let ++test13、任何命令执行后均会返回一个取值范围在0~255之间的整型返回码。主要值含义如下:0:正常结束1:通用执行错误2:误用shell命令126:命令不可执行127:命令未找到128:无效退出参数130:被ctrl-c强行中止255:退出状态码越界shell script默认返回最后一条命令的返回码。可以使用exit退出script执行并返回指定的返回码。例如:exit 15通过$?这个系统变量可以获取上一条命令的返回码。例如:

syncecho $?

14、通过getopts命令获取命令行选项。

语法为:getopts 选项行 选项变量。

选项行由各选项的单一字符组成,如某选项字符需要参数,则在选项字符后加冒号。调用时此选项后无参数的话系统会提示错误,如不希望出现提示则应在选项行最前面加上冒号。系统会将参数存入OPTARG变量。

例如:

#!/bin/bashwhile getopts :a:bc optdocase $opt ina)echo "选项a,后跟参数:$OPTARG";;b)echo "选项b";;c)echo "选项c";;*);;esacdone

15、利用mktemp建立临时文件

语法为:mktemp 选项 临时文件模板

如果建立成功返回0。

临时文件模板格式形式如:/tmp/test.XXXXXX或/usr/ttt/tttt.XXXXXX,文件名末6个字符必须为XXXXXX.生成成功后会由系统代替为随机6个字符。

选项-q 不产生错误信息。

选项-p 指定建立临时文件的父级目录,父级目录必须已存在。例如:mktemp -p /usr/tmp tf.XXXXXX

选项-t 按环境变量TMPDIR变量中指定的父级目录建立临时文件,如变量未定义,则父级目录为/tmp

选项-d 建立的是临时目录。

直接执行mktemp,会在/tmp目录下建立tmp.XXXXXX形式的临时文件,文件名末6个字符为随机字符。可使用下面方式获取生成的文件名。

tmpfile=$(mktemp)

16.cat命令

创建两个文件’1.txt’:写入1\n2\n3\n,‘2.txt’:写入one\ntwo\nthree\n

cat 1.txt 2.txt输出:123onetwpthree------------------------------------------------cat -n 1.txt 或者是cat -b 1.txt# 对文件中各行进行编号后输出输出:112233------------------------------------------------cat -n 1.txt>2.txt# 对文件1.txt进行编号后覆盖2.txt中的内容cat 2.txt输出:1one2two3three------------------------------------------------cat -n .txt>>1.txt# 与上面的内容相识,只是将2.txt中的内存追加到1.txt中输出:1231one2two3three

17.touch命令

# 翻译为触摸,当目录下没有该文件时,创建文件;当有该文件时,运行之后,文件的最近修改时间改变为当前时间touch aa.txttouch aa.txt18.花括号拓展{}```bashecho a{b,c,d}eabe ace ade# 当花括号扩展和通配符一起使用时,花括号扩展首先被解析,然后正常解析通配符。ls *.{jpg,jpeg,png}echo *.{jpg,jp{e,}g,png}echo {1..20..3}1 4 7 10 13 16 19# 当花括号扩展和变量扩展一起使用时,变量扩展解析于花括号扩展之后。有时有必要使用内置的eval函数a=1;b=20echo {$a..$b..3}{1..20..3}#上面解析顺序不对,无法得到想要的结果#val命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。#第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令eval echo {$a..$b..3}1 4 7 10 13 16 19# 与Bourne shell不同的是bash不用另外生成进程即能进行整数运算。bash使用((...))命令和$[...]变量语法来达到这个目的var=55echo "var*var=$(($var*$var))"19.进程管理Bash有两种执行命令的模式:批处理模式、并发模式。 要以批处理模式执行命令(即按照顺序),必须用;分隔```bashcommand1 ; command2

在这个例子中,当command1执行完毕,即执行command2 要并发执行两个命令,它们必须用&分隔

command1 & command2

在这种情况下,command1 在后台执行(通过&),从而立即将控制返回到shell,以执行command2

总结:一般命令在前台执行(fg),执行完毕后,控制返回给用户。在命令后面加上&,它会在后台执行(bg),并将特殊的环境变量$!设置为该任务的进程id。这时shell可以并发执行其他命令。按Ctrl+z可以挂起前台运行的程序挂起的程序可以用fg恢复到前台,或者用bg恢复到后台后台程序试图写入数据到终端设备时(与写入标准输出不同)可能被阻塞。shell可以等待一个后台任务执行完成,只需使用wait命令,加上进程ID或者任务序号;也可以等待所有的后台任务,只需使用不加参数的wait

bash脚本命令

#!/bin/bash echo "Hello World !"

#!/bin/bash。

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

1、作为可执行程序运行:

将上面的代码保存为 test.sh,并 cd 到相应目录:

chmod +x ./test.sh #使脚本具有执行权限

./test.sh #执行脚本

或者

sh ./test.sh

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

2.作为解释器参数:

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

/bin/sh test.sh /bin/php test.php

常用bash命令

a)查看文件大小,内存大小,cpu信息,硬盘空间等等。

du -sh *#查看当前文件夹大小 du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序 #附送: du -sk filename 查看指定文件大小 1、cpu查看 1)cpu个数:#cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2)cpu核数:#cat /proc/cpuinfo | grep "cpu cores" | uniq 3)cpu型号:#cat /proc/cpuinfo | grep 'model name' |uniq 2、内存查看:#cat /proc/meminfo | grep MemTotal 3、硬盘查看: #fdisk -l | grep Disk uname -a # 查看内核/操作系统/CPU信息的linux系统信息 head -n l /etc/issue # 查看操作系统版本 cat /proc/cpuinfo # 查看CPU信息 hostname # 查看计算机名的linux系统信息命令 lspci -tv # 列出所有PCI设备 lsusb -tv # 列出所有USB设备的linux系统信息命令 lsmod # 列出加载的内核模块 env # 查看环境变量资源 free -m # 查看内存使用量和交换区使用量 df -h # 查看各分区使用情况 du -sh # 查看指定目录的大小 grep MemTotal /proc/meminfo # 查看内存总量 grep MemFree /proc/meminfo # 查看空闲内存量 uptime # 查看系统运行时间、用户数、负载 cat /proc/loadavg # 查看系统负载磁盘和分区 mount | column -t # 查看挂接的分区状态 fdisk -l # 查看所有分区 swapon -s # 查看所有交换分区 hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) dmesg | grep IDE # 查看启动时IDE设备检测状况网络 ifconfig # 查看所有网络接口的属性 iptables -L # 查看防火墙设置 route -n # 查看路由表 netstat -lntp # 查看所有监听端口 netstat -antp # 查看所有已经建立的连接 netstat -s # 查看网络统计信息进程 ps -ef # 查看所有进程 top # 实时显示进程状态用户 w # 查看活动用户 id # 查看指定用户信息 last # 查看用户登录日志 cut -d: -f1 /etc/passwd # 查看系统所有用户 cut -d: -f1 /etc/group # 查看系统所有组 crontab -l # 查看当前用户的计划任务服务 chkconfig –list # 列出所有系统服务 chkconfig –list | grep on # 列出所有启动的系统服务程序 rpm -qa # 查看所有安装的软件包 cat /proc/cpuinfo :查看CPU相关参数的linux系统命令 cat /proc/partitions :查看linux硬盘和分区信息的系统信息命令 cat /proc/meminfo :查看linux系统内存信息的linux系统命令 cat /proc/version :查看版本,类似uname -r cat /proc/ioports :查看设备io端口 cat /proc/interrupts :查看中断 cat /proc/pci :查看pci设备的信息 cat /proc/swaps :查看所有swap分区的信息

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。