运行脚本输入回车
假设有一个程序a,运行的时候需要连续输入几个回车才能运行结束。
使用命令:echo "\n\n\n\n\n\n" -e | a
,可以通过管道去输入回车。
关机、重启、注销
shutdown -h now
: 立即关机shutdown -h 1
: 1分钟后关机shutdown -r now
: 立即重启h
表示:halt、r
表示:reboot、syn
:内存数据同步至磁盘
logout
: 注销,只在级别3下面有效
判断字符串是否为空
1 | data="" |
用户管理
添加用户
useradd [选项] 用户名
例子:useradd zhangsan
创建一个zhangsan的用户自动创建和用户名相同的home目录。
使用选项-d
可以指定用户的home目录
例子:useradd -d /home/wangwu zhangsan
,将用户zhangsan
的home目录指定为/home/wangwu
指定或修改用户密码
passwd 用户名
例子: passwd zs
删除用户
userdel 用户名
例子:userdel zhangsan
删除zhangsan用户,但保留用户home目录。
例子:userdel -r zhangsan
删除zhangsan用户,同时删除用户home目录。
切换用户
su - zhangsan
切换到zhangsan用户
返回原来的用户exit
命令
高权限用户=>低权限用户:不需要密码,反之需要。
用户组
添加新组
groupadd xiaoming
删除新组
groupdel xiaoming
添加用户时设置组
useradd -g 用户组 用户名
修改已有的用户组
usermod -g 用户组 用户名
用户相关文件
/etc/passwd
文件,用户配置文件
一行的含义: 用户名:口令:用户标识号:注释性描述:主目录:登录shell
/etc/shadow
文件
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group
文件
组名:口令:组标识号:组内用户列表
指定运行级别
运行级别:
级别 | 说明 |
---|---|
0 | 关机 |
1 | 单用户,可以用来找回密码 |
2 | 多用户没有网络 |
3 | 多用户状态有网络 |
4 | 未使用 |
5 | 图形界面 |
6 | 系统重启 |
指定运行级别:/etc/inittab
中的id:5:initdefault
数字,常用的有3和5级别
切换到指定级别的指令:init [0123456]
系统帮助命令
man [命令或配置文件] (功能描述:获得帮助信息)
除了可以使用man手册获得命令帮助之外,还可以查询系统c函数的说明。
man strlen
help 命令 (功能描述:获得shell内置命令的帮助信息)
文件目录类
pwd 指令
显示当前工作目录的绝对路径
ls [选项] [目录或文件]
ls -al
查看当前目录的文件信息,包括隐藏的
cd [参数]
切换到指定目录cd /home
, cd ..
, cd ~
mkdir [选项] 文件目录
创建文件目录:mkdir -p /home/dog/dahuang
,-p
表示创建多级文件目录。
rmdir [选项] 需要删除的空目录
如果不是空目录无法删除
rm -rf 目录
强制递归删除目录,包括里面的文件
touch xxx.txt
创建一个空的文件
cp [选项] source dest
赋值文件到指定目录,加上-r
选项,递归整个文件夹。
rm [选项] 待删除的文件或目录
-r
递归整个文件夹
-f
强制删除不再提示
mv oldNameFile newNameFile 重命名文件
mv /xx/xxx /target/xx/xx 移动文件
文件移动或者重命名操作。
查看文件
cat [选项] 需要查看的文件
可以使用-n
选项来显示行号
more 要查看的文件
操作 | 说明 |
---|---|
空格 | 下翻一页 |
Enter | 下翻一行 |
q | 离开more |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前行的行号 |
less 要查看的文件
可以显示大型文件,常用操作。
|操作| 说明|
|—-|—–|
|空格| 下翻一页|
|pagedown| 下翻一页|
|pageup| 上翻一页|
|/字串|向下检索,n 向下查找 N向上查找|
|?字串|向上检索,n 向上查找 N 向下查找|
|q | 退出|
head [选项] 文件
默认显示文件的前10行内容。head -n 5 文件
,显示文件前5行文件。
tail 文件 (功能描述:查看文件后10行内容)
tail -n 5 文件 (功能描述:查看文件后5行内容, 5可以是任意函数)
tail -f 文件 (功能描述: 实时追踪文件的所有更新)
符号链接
ln -s [源文件或目录] [软链接名]
例子:ln -s /root linkToRoot
, 在本地文件夹中创建一个链接linkToRoot
到/root
的软链接。想要删除软链接的话可以使用rm -rf linkToRoot
输出相关
>
覆盖式输出重定向
ls -l > a.txt
把文件列表重定向至a.txt
中,文件不存在就创建文件。
>>
追加式输出重定向
ls -l >> a.txt
将ls -l
命令产生的数据追加到a.txt
文件的尾部。
例子:cat /etc/profile > c.txt
将文件profile
拷贝到c.txt
中。
echo [选项] [输出内容]
输出内容到控制台,例子:echo ${PATH}
将环境变量path
输出到控制台
查看执行过历史命令
history
显示最近使用过的10个指令。
使用!123
可以执行历史中第123条指令。
时间和日期类
date
显示当前时间
date "+%Y"
显示当前年份
date "+%m"
显示当前月份
date "+%d"
显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S"
显示年月日时分秒。
date -s "2020-10-10 11:22:33"
设置时间为字符串中对应的时间。
cal [-mjy] [月份] [年份]
打印日历
选项 | 说明 |
---|---|
1 | 显示单月输出 |
3 | 显示临近3个月的日历 |
s | 将星期日作为月的第一天 |
m | 显示星期一作为一周的第一天 |
j | 显示儒略历 |
y | 显示当前年份的日历 |
搜索查找类
find [搜索范围] [选项]
从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端。
选项 | 说明 |
---|---|
name | 按照指定文件名查找文件 |
user | 查找属于指定用户的所有文件 |
size | 按照指定的文件大小查找文件 |
例子:find /home -name hello.txt
find /opt -user nobody
find / -size +20M
文件大于20Mfind / -size -20M
文件小于20Mfind / -size 20M
文件相等20M
locate 搜索文件
本地数据库存储文件的索引,能够更快的查找到问文件。updatedb
更新数据库。
grep [选项] 查找内容 源文件
-n
显示匹配行的行号-i
忽略大小写
例子:cat hello.txt | grep -n yes
cat hello.txt | grep -ni yes
压缩和解压
gzip 文件
压缩文件成*.gz
文件
gunzip 文件.gz
解压.gz
压缩文件
zip [选项] xxx.zip 要压缩的内容
压缩文件和目录命令,使用-r
递归压缩,压缩文件。
unzip [选项] xxx.zip
解压*.zip
文件,选项-d
指定解压的文件夹。
tar [选项] XXX.tar.gz 打包的内容
打包目录,压缩后的文件格式为tar.gz
,
选项说明
|选项|说明|
|—-|—-|
| -c | 产生tar打包文件|
| -v | 显示详细信息|
| -f | 指定压缩后的文件名|
| -z | 打包同时压缩|
| -x | 解包tar文件 |
例子:tar -zcvf a.tar.gz a.txt b.txt
将a.txt
文件和b.txt
文件压缩为a.tar.gz
tar -zxvf a.tar.gz -C /opt/
将a.tar.gz
解压到/opt
文件夹内,注意文件夹必须事先存在。
xz压缩和解压缩
解压.xz的压缩包
快速解压:tar -xJvf xxxx.tar.xz
压缩文件
xz -z -k -9 文件
参数说明
-k 保留文件,压缩完成之后不会删除
-9 压缩等级 [-0, -9],默认-6
解压文件
xz解压文件方法或命令
xz -d 要解压的文件
同样使用 -k 参数来保留被解压缩的文件。
创建或解压tar.xz文件的方法
习惯了tar czvf或tar xzvf的人可能碰到tar.xz也会想用单一命令搞定解压或压缩。其实不行tar里面没有征对xz格式的参数比如 z是针对 gzip,j是针对 bzip2。
创建tar.xz文件:只要先 tar cvf xxx.tar xxx/ 这样创建xxx.tar文件先,然后使用 xz -z xxx.tar 来将 xxx.tar压缩成为 xxx.tar.xz
解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。
例子
压缩
创建tar文件tar -cvf cJSON-1.7.14.tar ./cJSON-1.7.14
创建xz文件xz -z -k -9 cJSON-1.7.14.tar
生成cJSON-1.7.14.tar.xz
文件解压
获得tar文件xz -d -k cJSON-1.7.14.tar.xz
生成cJSON-1.7.14.tar
解压tar文件tar -xvf cJSON-1.7.14.tar
组管理和权限管理
chown 用户名:组名 文件名
修改文件所有者
例子:chown other:other a.txt
,将a.txt
文件的文件所有者改为other用户 other组。第一个参数为用户,第二个参数为组。chown test a.txt
, 将a.txt
的所有者更改为。
groupadd 组名
添加新的组名
usermod -g 组名:用户名
改变用户所在的组。
权限说明
-rwxrw-r-
- 第0位 确定文件类型(d,-,l,c,b)
d
:目录,-
:普通文件,l
:软连接,c
:字符设备(键盘、鼠标),b
:块文件,硬盘 - 第1-3位 确定所有者拥有的文件权限 –User
- 第4-6位 确定所在组拥有的该文件的权限 –Group
- 第7-9位 确定其他用户拥有该文件的权限 –Other
rwx说明
- r 读(4)
- w 写(2)
- x 可执行(1)
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
其它信息:1
: 硬链接或者子目录个数root
: 用户root
: 组1213
: 文件的大小(字节)Feb 2 09:39
: 最后修改日期abc
: 文件名
权限修改-chmod
其中u为用户,g为组,o为other,a为所有
(1)方式一: + ,-, =变更
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o + w 文件目录
chmod a - x 文件目录
(2) 方式二: 数字变更
chmod 751 文件目录
等价于
chmod u=rwx,g=rx,o=x 文件目录
修改文件所有者
chown newonwer file 改变文件的所有者
chown newower:newgroup file 改变文件所属的所有者和所有组,-R递归变更。
修改文件所在组
chgrp newgroup file
参数-R
,递归修改。
crond任务调度
crontab [options]
- -e 编辑定时任务
- -l 查询定时任务
- -r 删除当前用户的所有定时任务
查看进程线程数和内存占用
进程信息:cat /proc/15331/status
查看进程的线程信息:ls /proc/15331/task | wc
查看个数ps hH p 15331 | wc -l
查看个数
CPU
使用lscpu
查看cpu统计信息
1 | $ lscpu |
查看/proc/cpuinfo
可以知道每个cpu信息
1 | $ cat /proc/cpuinfo |
内存
使用free
命令可以查看当前内存的使用状况
1 | $ free -m |
使用cat /proc/meminfo
查看内存详细使用信息
1 | $ cat /proc/meminfo |
查看内存条硬件信息
1 | sudo dmidecode -t memory |
硬盘
查看硬盘分区lsblk
1 | $ lsblk |
使用-l
参数查看详细信息,lsblk -l
。
网络设备
使用网卡硬件信息lspci | grep 'eth'
,查看系统网络接口ifconfig -a
, ip link show
。
其他硬件设备
使用lspic
查看主板所有硬件槽的信息。也可以使用dmidecode -q
查看。