当前位置 博文首页 > DevínKelly的博客:关于Linux指令操作大全(整理一)
Linux目录结构:
bin (binaries)----------------> 存放二进制可执行文件
sbin (super user binaries)----> 存放二进制可执行文件,只有root才能访问
etc (etcetera)-----------------> 存放系统配置文件
usr (unix shared resources)—> 用于存放共享的系统资源
home --------------------------> 存放用户文件的根目录
root -------------------------> 超级用户目录
dev (devices)------------------> 用于存放设备文件
lib (library)-----------------> 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt (mount)-------------------> 系统管理员安装临时文件系统的安装点
boot --------------------------> 存放用于系统引导时使用的各种文件
tmp (temporary)---------------> 用于存放各种临时文件
var (variable)----------------> 用于存放运行时需要改变数据的文件
Linux常用命令:
hostname ---------------> 查看主机.
ifconfig ----------------> 查看ip地址.
ping ip地址 -------------> 测试网络的连通性 ip 192.168.3.4
shutdown ---------------> 系统关机.
-r 关机后, 立即重启.
-h 关机后, 不重新启动.
halt --------------------> 关机后,关闭电源.
reboot ------------------> 重新启动.
crtl c ---------------> 停止当前进程.
history-----------------> 查看命令历史.
crtl l ----------------> 清屏.
clear-------------------> 清屏.
su ---------------------> 切换用户,低权限用户切换时,默认切换为root, 需要输入密码. 高权限切为低权限需要指定用户名.
top --------------------> 显示当前系统中耗费资源最多的进程
ps ---------------------> 显示瞬间的进程状态
-e /-A 显示所有进程,环境变量
-f 全格式
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
ps -ef | more ---------> 查看进程
kill -9 pid值 ----------> 杀死一个进程 , kill -9 3727
df ---------------------> 显示文件系统磁盘空间的使用情况.
free--------------------> 显示当前内存和交换空间的使用情况
netstat ----------------> 显示网络状态信息
-a 显示所有连接和监听端口
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
netstat -an | grep 8080 -----> 查找8080端口的程序.
ls -la /usr ------------> 查看文件和目录列表. ls -lt /usr , ls -l /usr , ls -a /usr , ll(查看默认目录内容)
-a 显示所有,包括隐藏文件.
-l 以长列表形式显示long.
ls -lhR mnt/ ----> 表示查看大小, R表示递归查看, 可以查看mnt下的所有的文件夹及文件.
cd /usr --------------> 切换目录 , cd . , cd … , cd /usr/local/java , cd 跳出当前环境.
cd - -----------------> 返回进入此目录之前所在的目录
cd !$ ----------------> 把上个命令的参数作为cd参数使用。
pwd --------------------> 查看当前工作目录.
help + 命令 ------------> 内部命令, 查看帮助文档. eg: help cd
man + 命令 ------------> 外部命令, 查看文档帮助. eg: man ls
mkdir 文件目录 --------> 创建文件目录 mkdir /usr/local/jdk , mkdir /hello ,
创建项目的目录结构:
mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}
创建的目录结构如下:
scf/
|-- bin
|-- doc
| |-- info
| -- product |-- lib |-- logs | |-- info |
– product
-- service
– deploy
|-- info
`-- product
mkdir room-1,room-2,room-3 , 可以一次性创建多个目录.
mkdir -p 文件目录 -----> 创建文件目录, 父目录不存在, 先创建父目录. mkdir -p /java/jdk7
mkdir -m 777 dirname ----> 创建权限为777的文件目录.
cp 文件 目录 ---------> 复制文件到目录下. cp book room-a, 复制book文件, 并放在room-a目录下.
cp -r 目录/文件 目录--------> 递归处理,将指定目录下的文件与子目录一并拷贝 . cp -r /usr/java /family/room , 将java下的左右内容复制到room下.
touch:
1). touch 文件 ------------> 创建一个空文件. touch book , 创建一个文件book.
2). touch -r file1.log file2.log -----> 更新file2.log的时间戳与file1.log的时间相同.(file1.log的时间戳不变)
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
3). touch -t 201502072137.50 file3.log ----> 手动设定文件的时间戳.
-t time : 使用指定的时间值 time 作为指定文件相应时间戳记的新值.此处的 time规定为如下形式的十进制数: [[CC]YY]MMDDhhmm[.SS]
echo ‘内容’ > 文件名----> 在创建文件时, 添加文件内容. echo ‘think in java’ > book, 创建book文件时, 添加内容"think in java".
echo ‘content’ > filename -----> 往文件中追加信息.
文件 -----------------> 创建一个空文件, 与touch 效果相同.
mv :
1). 文件改名 : mv test1.log test2.txt ----> 将test1.log 名字改为 test2.txt
2). mv dir1 dir2 ---------> 如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中。
3). mv 目录/文件(*) 目录 --> 将目录或文件,移动到另一个目录中.
4). mv book room-a room-c/ , 将文件book及目录room-a移动到room-c目录中.
eg: mv * ../ -----> 将本目录下的内容全部移动到上一级目录.
5). mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt 命令将三个文件移动到test4目录中去
-t: 加上这个, 就可以将目录放在前面, 文件放在后面.
rm 目录 ---------------> 移除文件. rm room , 删除文件, 会有确认, 移除目录, 只能移除空目录.
-r 同时删除该目录下的所有文件(recursive),递归删除
-f 强制删除文件或目录(force)
rm -rf room , 移除room目录及其中的所有内容.
rmdir 空目录------------> 删除空目录.
cat :
1). cat 文件 ---------------> 查看文件中的信息, 全部显示. cat install.log , 查看其全部信息, 全部显示.
参数:
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
2). cat > filename ----------> 从键盘创建一个文件,只能创建新文件,不能编辑已有文件.
3). 将几个文件合并为一个文件: cat file1 file2 > file .
cat 1.txt 2.txt > new.txt -------> 将1.txt和2.txt文件的内容合并到new.txt文件中, 前提是new.txt文件是存在的.
4). tac file1.log ------> 反向列示, 就是讲文件的内容从后向前, 倒过来显示.
5). here doc 来生成文件.
cat > 1.log << eof
> ...
> ...
>eof
--------> 系统会将...键盘接受的输入的内容输出到文件1.log中, eof为开始和结束标志, 注意语法.
nl 命令:
1). nl file.log --------------> 带行号查看文件, 如果为空行, 则不计算该行的行号
2). nl -b a file.log ---------> 带行号查看文件, 如果该行为空行, 也计算该行的行号.
3). nl -n ln file.log --------> 在屏幕的最左方显示行号.
4). nl -n rn file.log --------> 在屏幕的最右方显示行号.
5). nl -n rz file.log --------> 行号在自己栏位的最右方显示,且加 0 ;
more/less 文件 ---------> 分页显示文件内容. more install.log
1). more +5 file.log ------------> 查看文件file.log自第五行之后的文件内容.
2). more +/day3 log2012.log -----> 从文件中查找第一个出现"day3"字符串的行,并从该处前两行开始显示输出
3). more -10 menu.sh ------------> 设定每屏显示行数
4). ls -l | more -5 ------------> 列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来
-------> 每页显示5个文件信息,按 Ctrl+F 或者 空格键 将会显示下5条文件信息。
head/ tail --------------> 查看文本中开头或结尾部分的内容,默认显示十行. head install.log, tail install.log.
tail -n 5 install.log----> 查看文本的末尾的5条数据.
tail -f install.log----> 循环读取文本中的数据.
wc install.log-----------> 统计文本的行数、字数、字符数. // 920 1853 39317 install.log
-m 统计文本字符数 -w 统计文本字数(word) -l 统计文本行数(line)
wc -m install.log wc -w install.log wc -l install.log
find 指定目录(选) -name 文件/目录名—> 在文件系统中查找指定的文件 , 指定目录可以不填.
find -name book , 将从文件系统中查找所有的book的路径
grep ‘内容’ 文件 ---------------> 在指定的文本文件中查找指定的字符串 . grep ‘java’ book.
ln -s family/room-c/ link -------> 建立链接文件
-s 对源文件建立符号连接,而非硬连接
time [command] ----> 查看指定命令的执行时间.
which 命令:
1). which 查看可执行文件的位置。
which pwd ----------> /bin/pwd
which useradd ------> /usr/sbin/useradd
2). whereis 查看文件的位置。
3). locate 配合数据库查看文件位置。
4). find 实际搜寻硬盘查询文件名称。
5). which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
gzip 文件 ------------------------> 压缩(解压)文件或目录,压缩文件后缀为gz
-d将压缩文件解压(decompress)
-l显示压缩文件的大小,未压缩文件的大小,压缩比(list)
-v显示文件名和压缩比(verbose)
-num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),
-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
eg: gzip install.log , 压缩. gzip -d install.log.gz, 解压.
gzip -9 install.log , 高压缩比压缩.
bzip2 文件 -----------------------> 压缩(解压)文件或目录,压缩文件后缀为bz2
-c将压缩的过程产生的数据输出到屏幕上
-d解压缩的参数(decompress)
-z压缩的参数(compress)
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),
-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
bzip2 install.log, 压缩. bzip2 -d install.log.bz2, 解压.
tar 文件-------------------------> 文件、目录打(解)包
-c 建立一个压缩文件的参数指令(create)
-x 解开一个压缩文件的参数指令(extract)
-z 是否需要用 gzip 压缩
-j 是否需要用 bzip2 压缩
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在 f 之后要立即接档名(file)
tar -czvf ff.tar.gz family/, 将文件解压到family目录下.
nohup -----> 不挂断的运行命令. 如: nohup java -jar sendMessage.jar & —> & 表示后台运行,需要加上
----> 后台运行, 原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。
nohup command > myout.log 2>&1 & ----> 也可以指定输出日志的文件 , 2>&1 表示错误输出也指向正常日志, 也就是, 错误正确都指向这个日志文件.
VIM/VI 文本编辑器:
vim install.log ----> 进入文本详情:
i ----------> 在光标前插入.
I ----------> 在光标当前行开始插入.
a ----------> 在光标后插入.
A ----------> 在光标当前行末尾插入.
o ----------> 在当前行的下一行插入新的空行.
O ----------> 在当前行的上一行插入新的空行.
:set nu-----> 显示行号.
:set nonu---> 取消行号.
gg----------> 到文本的第一行.
G-----------> 到文本的最后一行.
:n----------> 到文本的第n行.
x-----------> 删除光标所在处的字符.
nx----------> 删除光标所在处后的n个字符.
dd----------> 删除光标所在行
ndd---------> 删除n行.
dG----------> 删除光标所在行到末尾行的所有行.
D-----------> 删除光标所在处到行尾的内容.
:n1,n2d ----> 删除指定范围的行.
u-----------> 取消上一步操作.
crtl+r------> 返回到undo之前.
r-----------> 替换光标坐在处的字符.
R-----------> 从光标所在处开始替换,按esc键结束.
shift+zz ---> 保存退出
:wq --------> 保存并退出,与上述作用相同.
:x ---------> 保存并退出
:q! --------> 不保存退出
v 或 shift+v----> 进入行可视模式.
crtl+v -----> 进入块可视模块.
用户与账户管理:
/etc/passwd ----------------> 保存用户信息的文件:
/etc/shadow ----------------> 保存密码的文件
/etc/group -----------------> 保存用户组的文件
/etc/gshadow ---------------> 保存用户组密码的文件
/etc/default/useradd -------> 用户配置文件
查看其中的内容就可以使用: cat , more, less, tail, head.
操作用户命令:
--------------------------------> account:password:UID:GID:GECOS:directory:shell <-----------------------
添加用户命令:useradd username-----> 添加用户. useradd lisi
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-e 失效时间(expire date)
查看用户的命令: id username --> id root ===> uid=0(root) gid=0(root) groups=0(root) ;
查看系统的所有的用户信息: cat /etc/passwd --> 对于普通用户, uid都是从500开始排的.
设置密码命令: passwd username---------> 为哪个用户设置密码, eg: passwd lisi—> 为lisi用户设置密码.
ll /home/ ----------> 查看用户及组.
cat /etc/passwd-----> 查看用户信息.
cat /etc/shadow ----> 查看当前系统中的账户的密码信息.
cat /etc/group ----> 查看当前用户的组信息.
修改用户命令:usermod(user modify)
-l 修改用户名 (login)usermod -l a b(b改为a) ----------- eg : usermod -l LiSi zhangsan 将用户名张三修改为LiSi.
-g 添加组 usermod -g sys tom
-G添加多个组 usermod -G sys,root tom
–L 锁定用户账号密码(Lock)
–U 解锁用户账号(Unlock)
删除用户命令:userdel(user delete) —> 删除用户的同时,会删除该用户的组,密码, home下的所有信息.
-r 删除账号时同时删除目录(remove)
查看系统中组的信息: cat /etc/group
添加组:groupadd
-g 指定gid
修改组:groupmod
-n 更改组名(new group)
删除组:groupdel
groups 显示用户所属组
将用户添加到组中:
gpasswd -a user1 root -----> 将用户user1 添加到root组中. 一个用户可以同时属于多个组. 该用户的权限, 是两个组的权限之和.
把组中的用户删除:
gpasswd -d user1 root -----> 将root组中的user1用户删除.
权限管理:
三种基本权限
r 读权限(read)
w 写权限(write)
x 执行权限 (execute)
d r w x r - x r - x - r w - r - - r - - l r w x r w x r w x
第1位:文件类型(d 目录,- 普通文件,l 链接文件)
第2-4位:所属用户权限,用u(user)表示
第5-7位:所属组权限,用g(group)表示
第8-10位:其他用户权限,用o(other)表示
第2-10位:表示所有的权限,用a(all)表示
完整信息:一个文件,所属用户具有读写执行权限;所属组的用户
有读写权限,没有执行权限;其他用户只有读权限
//------- chmod 权限分配
chmod修改文件权限命令(change mode)
参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)
-----> chmod u+x a.txt --- 增加权限 | chmod u-x a.txt ---- 减少权限
-----> chmod g+x a.txt --- 增加权限 | chmod g-x,g-w a.txt ---- 减少权限
-----> chmod a+x a.txt
用数字来表示权限(r=4,w=2,x=1,-=0)
-----> chmod 750 b.txt
rwx用二进制表示是111,十进制4+2+1=7
r-x用二进制表示是101,十进制4+0+1=5
7 5 0
1 1 1 1 0 1 0 0 0
r w x r _ x - - -
// ----------- acl 权限 ------
1). getfacl root.txt ----> 获取文件的权限信息. 返回文件名,文件拥有者, 所属组, 用户权限,组权限,其他权限.
2). setfacl -m u:deng:rw root.txt ----> 为用户deng分配root.txt文件的权限. -m表示更改modify
3). setfacl -x u:deng root.txt -----> 删除给deng这个用户层设置的所有权限. 通过acl设置的权限.
4). setfacl -b root.txt --------------> 擦除给文件root.txt上的所有的acl权限.
setfacl -bR deng ------> 遍历擦除deng文件夹下的所有的acl权限.
5). linux中的文件如果没有执行(x)的权限, 是不能切换到该目录下的. 切换的瞬间是执行该文件夹.
6). 如果要在目录下 删除/创建 一个文件, 需要对该目录设置权限.
setfacl -m u:deng:rwx /mnt
7). 如何对一个目录及子目录和文件设置权限:
setfacl -m u:deng:rwx -R /mnt -----> -R 表示, 递归设置权限.
---> 这样设置是可以解决当前目录下当前所有文件的acl权限, 但是后期新加的子目录和文件, 无法继承父目录的权限.
解决方法:
①. setfacl -m u:deng:rwx -R /mnt ----> 给现有是目录文件递归添加权限.
②. setfacl -m d:u:deng:rwx -R /mnt ----> 给目录做默认权限操作.
//----------- visudo 权限 --------------
设置用户对命令的执行权限-visudo ----> sudo授权.配置中配置.
visudo ----> 进入权限设置文件配置.
下列这种方式需要密码:
①. user1 locahost=/usr/sbin/useradd —> 给user1分配useradd命令的执行权限.
②. user1 localhost=/usr/sbin/userdel —> 给user1分配userdel命令的执行权限.
下列的这种方式不需要使用密码:
user1 ALL = NOPASSWD:/usr/sbin/useradd —> 不需要当前用户输入密码.
user1 localhost = NOPASSWD:/usr/sbin/useradd —> 不需要当前用户输入密码.
2.使用sudo授权的命令, 需要在命令前加上sudo
sudo /usr/sbin/useradd user2
sudo /usr/sbin/userdel -r user2
rpm命令使用:
rpm的常用参数:
i:安装应用程序(install)
e:卸载应用程序(erase)
vh:显示安装进度;(verbose hash)
U:升级软件包;(update)
qa: 显示所有已安装软件包(query all)
结合grep命令使用
ex:rpm -ivh 3.el6.x86_64.rpm -C /usr/java-------> 直接安装.
rpm -Uvh xxxxxxxxxxx.rpm -C /usr/java -------> 更新升级安装包.
tomcat的安装:
解压: tar -zxvf apache-tomcat-7.0.47.tar.gz -C /usr/local/src/
启动tomcat:
1). cd /usr/local/src ----> [root@itcast01 src]# ./
2). cd /usr/local/src ----> [root@itcast01 src]# sh apache-tomcat-7.0.47/bin/startup.sh --- > 推荐.
3). [root@itcast01 bin]# sh startup.sh ---> 这种可以推荐使用.
防火墙:
service iptables status; --------> 查看防火墙.
service iptables stop; ----------> 关闭防火墙.
source /etc/profile----------------------> 刷新文件. 当配置文件修改时, 需要刷新文件.
IP地址的配置:
1). 直接通过图形化界面, 来配置ip地址.
2). 通过setup指令, 进入网络设置.
3). vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network ----------> 修改hostname.
vim /etc/hosts-----------------------> 配置hosts.系统内部的DNS
yum -y install mysql-server ----------> 联网自动下载需要安装的软件. -y 表示提示安装过程.
yum update ----> 全部更新
yum check-update -----> 检查可更新的程序.
//--------------------------------- Shell 脚本编程 ------------------------------
历史命令
history 查看历史命令;
! 指定的命令索引, 可以调用该命令 !5 --> 执行第五条命令
!vi --> 调用历史中最后一次使用vi开头的命令. !ser --> 执行历史中最后一次执行的ser*开头的命令
history -c 清除历史命令
init 0 关闭系统
tr —> 转换字符, 如: 将大写转为小写,选项可以让你指定所要删除的字符,以及将一串重复出现的字符浓缩成一个.
命令别名
alias x=‘ll’ —> 给命令起别名, 然后可以使用简短的别名操作
---> 这样的别名, 服务器重新启动后就会失效 ; 持久化, 可以将其存储在 .bashrc文件中
alias —> 查看系统中的所有的命令的别名.
unalias x —> 清除指定的别名.
输出重定向
ll >> root.txt -----> bash输出重定向. 将查找到的数据放在root.txt文件中.
和 >> 的区别:
1).都是重定向, > 是覆盖式重定向, >> 是追加式重定向.
1> 和 2> 的区别:(覆盖式) 1>> 2>> (追加式)
1). 1> 是正确重定向, 如果前面的命令是正确的, 将该命令的返回结果存储在指定的文件中.
2). 2> 是错误重定向, 如果前面的命令是错误的, 将该命令的返回结果存储在指定的文件中.
&> 把正确的或者错误的输出结果存储在文件中. (是覆盖式的输出, 并非追加式输出)
bash red.sh 1>>note.txt 2>&1 —> 将正确的输出结果存在note.txt中,将错误的结果也通过1的通道存储在note.txt中, 而且还是追加.
< 输入数据.
shell的管道操作.
free -m | grep -i mem ----> 通过管道|, 将前面的查询结果, 交给后面, 由后面的grep来过滤.
--> 1). free 查看内存信息, -i 表示忽略大小写匹配, grep 表示查找.
free -m | grep -i mem | awk ‘{print $1"\n",$2"\n",$3"\n",$4"\n"}’; ----> 此处使用了awk编程. "\n"表示换行 , 查找指定的列.
执行shell脚本的方式:
1). bash test.sh -----> 不需要再文件中写解析器
-----> 不需要给脚本设置执行权限
2). ./test.sh -----> 需要些解析器
-----> 需要给脚本设置执行权限.
crontab LINUX下的任务调度:
格式: * * * * * *
分 时 日 月 周 命令
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
----> 上面的例子表示每晚的21:30重启apache
30 17 * * 5 /opt/deng/test.sh
----> 表示每周五17:30执行test.sh脚本;
vi crontab ----> 可以将定时任务放在crontab中,linux会定时执行这里的任务.
printf 与 echo的功能基本相同, 只是printf不会自动换行,需要"\n"来操作换行 , 这两个命令的标准不同.
printf “this is a test program , %s , %s \n” Hello world --------> this is a test program , Hello , world
与C语言中的printf用法很相似.
变量的定义: 变量的引用 $
1). shell 中的变量只能以 字母 或者 下划线_ 开头, 并且字母区分大小写.
2). 在LINUX下的, 所有的文件名, 路径都是区分大小写的.
3). 变量可以使用双引号"", 也可以使用单引号’’, 都可以使用
name=“dengchangtao” —> 注意,这里的空格都会影响执行的结果.
echo $name ----> 变量可以直接引用输出.
echo “my name is $name” ----> “my name is dengchangtao” 变量也可以在一段话中输出.
echo “my name is $nameDeng” ----> "my name is " 这种方式不能正常输出, 会寻找变量nameDeng, 不能自动识别.
echo "my name is n a m e D e n g " ? ? ? ? > " m y n a m e i s d e n g c h a n g t a o D e n g " ? ? ? > 可 以 通 过 {name}Deng" ----> "my name is dengchangtaoDeng" ---> 可以通过 nameDeng"????>"mynameisdengchangtaoDeng"???>可以通过{}将变量封装在{}中引用输出.
read -p ---------> 接受键盘输入事件 : /*** read [-p “信息”] 变量名
$name ----> 表示变量name, $ 引用变量.
read -p “please input your name :” name -----> 读取键盘事件接受到的内容, 将其赋值给变量name
echo “my name is $name”
name=“dengchangtao”
echo $name
echo ‘my name is $name’ —> my name is $name —>
1). 单引号 ‘’ 是不能解析变量的. ‘my name is $name’ —> 其中的name变量是不能被解析的.
2). 双引号 “” 可以解析变量. “my name is $name” —> 其中的name变量是可以解析的.
3). 反引号 `` 可以将其中的命令,输出的结果,返回给前面的变量. —> str = echo dengchangtao
echo “$str” ----> “dengchangtao”
-----> num=expr 1 + 2 + 3
—> 将表达式的执行结果, 赋值给变量num.
date ----> linux 命令可以直接输出当前的日期时间.
set -x -----> 打开shell脚本的执行跟踪功能;
set +x -----> 关闭shell脚本的执行跟踪功能.
unset 变量名 —> 清除变量.
name=“dengchangtao”
echo $name —> dengchangtao
unset name
echo $name —> 没有输出内容
位置变量:
$n n<9 —> $1 $2 $3 $4 $5 $6 $7 $8 9 ? ? > 位 置 变 量 就 只 要 这 9 个 . 可 以 超 过 10 , 十 个 以 上 , 引 用 变 量 就 需 要 使 用 9 --> 位置变量就只要这9个. 可以超过10,十个以上,引用变量就需要使用