shell常用命令
shell常用命令大总结,这些都是自己学习总结的,还是比较全的,可以收藏学习哦。
1. 查询命令帮助:man 命令名
例子:man strlen(查库函数)
man 2 strlen(在man后加个2来查函数)
2. 文件中搜索字符串
grep 字符串 文件路径 [-n]
grep 字符串 目录路径 -r [-n]:搜索指定目录及子目录下的所有文件
注意:如果字符串中有空格,一定要加双引号
模式搜索:^ :开头 $ :结尾
补充:查找文件:find 目录路径
例子:-name 文件名
3. 显示文件开头内容:head -行数 文件路径
4. 显示文件结尾内容
tail -行数 文件路径
tail -f 文件路径 :参数-f使tail不停地去读最新的内容,这样有实时监视的效果
5. 比较文件:diff 文件1 文件2
显示结果: (1) 无差异:没有显示
(2) 差异:文件2 相对于文件1的变化:
a追加 d删除 c修改
< 显示的行,属于文件1
> 显示的行, 属于文件2
补充:vim 文件1 文件2 -d:vim也可以对两个文件进行比较。(常用)
6. 字符统计
(1) 统计文件行数:wc -l 文件路径
(2) 统计文件中单词个数:wc -w 文件路径
(3) 统计文件中字符数:wc -c 文件路径
7. 清屏:clear 回滚
reset 相当于进程重启
8. 查看日期和时间:date
9. 显示一行文本:echo 字符串
例如:ceho “feeghja”
10.查询命令路径:which 命令
例: which ls
注意: 有些命令不是单独的程序,而是shell程序提供的,所有找不到
例: which cd
11.输入输出重定向
11.1 概念
标准输入:数组下标0
标准输出:数组下标1
标准错误:数组下标2
原理:
11.2输出重定向:> 相当于 1>
11.3输出追加:>>
11.4输入重定向:<
11.5错误重定向2>
具体例子:
补充:(函数性)atoi(char) 可以将字符串转为数字
(技巧性)‘1’-‘0’=1 字符型1转整数型1
12管道:前命令输出作为后命令的输入
命令1 | 命令2
命令1的输出,做为命令2的输入
13.查看进程:ps -x
14.命令置换
命令1 `命令2`
执行 命令2 , 然后将输出做为命令1的参数
15.系统维护
15.1. 关机
(1) 立即关机
sudo shutdown -Ph now
(2) 立即重启
sudo reboot
(3) 5分钟后关机
sudo shutdown +5 -Ph
15.2. 临时切换用户
(1) 切换为root用户
su
(2) 切换为指定用户
su 用户名
注意:第一切换root用户的时候可能会提示密码错误
sudo passwd root:会设置新的密码
exit:退回切换用户
15.3. 用户管理
(1) 分类
root 最高权限用户
系统用户 用于系统服务运行, 不能登录
普通用户 普通用户使用
(2) 用户信息文件
/etc/passwd
用户名:密码:用户ID:组ID:描述:用户home目录:shell程序
root :x :0 :0 :root:/root :/bin/bash
用户ID: 用户在系统中的唯一标识, 系统使用
0 root用户ID
1 - 500 系统预留ID
500 - 普通用户ID
组ID : 用户组在系统中的唯一标识, 系统使用
用户home目录: 用户自己的目录
shell程序: 用户使用的命令解析器
/etc/shadow
用户名:密码密文:...
(3) 组信息文件
/etc/group
组名:组密码:组ID:组用户集合
adm :x :4 :syslog,linux
groups +用户名:查看用户属于哪个组
(4) 添加/删除用户
sudo adduser 用户名
sudo deluser --remove-home 用户名
(5) 修改用户密码
sudo passwd 用户名
sudo passwd ubuntu
15.4 进程管理
(1) 概念
运行中的程序,系统会记录他使用的所有资源, 程序停止时释放这些资源
(2) 查询系统进程
ps -ef
UID PID PPID C STIME TTY TIME CMD
UID : 启动进程的用户
PID : 进程自己的ID
PPID : 进程的父进程ID
C : cpu占用率
STIME: 进程启动时间
TTY : 进程使用的终端,用于和用户交互
TIME : 进程总共占用的进程时间
CMD : 启动进程的命令
top
实时显示进程状态:
%cpu : cpu占用率
%MEM : 内存占用率
kill -9 进程ID(强制结束进程)
kill 19进程ID (暂停进程)
kill 18进程ID (继续进程)
补充:输出带颜色
16.普通文件系统制作
16.1分区 :sudo fdisk /dev/sdb
m 帮助命令
n 增加分区
p 打印分区
d 删除分区
w 分区结束,保存退出
查看当前系统识别出来了多少硬盘:sudo fdisk -l
查看当前系统的分区信息:cat /proc/partitions
添加硬盘->shutdown -r now->分区(m->n->p->w新建一个分区就可以)
注意:分区结束后要重启
16.2格式化(制作空文件系统)
sudo mkfs.ext3 /dev/sdb1
16.3挂载
sudo mount /dev/sdb1 ~/work/hard1(挂载点,必须是目录)
要挂载的分区 挂载点
df 确定挂载是否成功
df 显示磁盘分区上可以使用的内存空间。
df -Ph
16.4取消挂载
sudo umount /dev/sdb1
17文件操作
17.1 查看文件(173)
ls -l:查看文件的详细信息
ls –hl
ls -R:列出所有子目录下的文件
drwxrwxr-x 6 linux linux 4096 Mar 27 22:47 smarthome
--------- -- ----- ----- ------ ------------ ---------
访问权限 | 所属用户 所属组 字节数 修改时间 文件名
(1) 文件类型(175)
- 普通文件
d 目录文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件
s 套接字文件
(2) 访问权限(176)
rwx rwx r-x
-------- ------ ------
用户权限 组用户权限 其他用户权限
r 可读
w 可写
x 可执行
- 无权限
八进制表示:0000 0111 0111 0101-->0775
17.2 基本操作
cd
cp
mv
rm
file
touch
mkdir
head
tail
17.3创建硬链接:目录和子文件的关系(类似于快捷方式)
ln 源文件 链接文件
例: ln hello.c ~/sl
注意:只能对文件创建硬链接,不能对文件夹创建硬链接。
硬链接不能跨文件系统进行操作。
所谓的删除文件,其实是删除的表项,对应的文件的内容还是在的,还是可以恢复的。
ls -i +文件路径及文件名:查看这个文件对应的inode信息
步骤:
a:touch /home/linux/test 给一些内容
b: sudo ln /homr/linux/test /home/linux/Desktop/link
c:ls –i
17.4创建软链接
ln -s 源文件 链接文件
例: ln -s hello.c ~/sl
原理:
理解:软链接的作用,就相当于windows下的快捷键是一样的。
区别:
1:硬链接原文件和新文件的inode编号一致。而软链接不一样。
2:对原文件删除,会导致软链接不可用,而硬链接不受影响。
3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。
4.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
5.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
6.链接数目是不一样的,软链接的链接数目不会增加;
7.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,BBB大小是95B,而BBBsoft是3B。因为BBB共有3个字符
8.软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接
9.总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
10.当然软链接也有硬链接没有的缺点:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
18. 归档压缩
(1) 归档压缩
tar zcvf 文件名.tar.gz 归档目录(新建压缩文件名)
tar jcvf 文件名.tar.bz 归档目录(新建压缩文件名)
例: tar zcvf project_demo.tar.gz project_demo
补充:当然这里的归档压缩之后的文件可以带路径,压缩的文件也可以带路径
.tar.gz是为了方便个人理解,其实可以不用写
(2) 解压:tar xvf 文件名.tar.gz(或者文件名.tar.bz) -C 路径
补充:如果需要换路径的话,使用选项-C
例子:
19.修改文件权限
chmod u+(-)r/w/x 文件路径
g:组
o:其他
a:所有用户
u:当前用户
还可以用八进制加减权限:chmod 0777 文件路径
-R:递归对子目录修改权限。
20.修改文件所有者
chown 用户名 文件路径
注意: 文件所有者和root用户可以修改文件所有者为别的用户,但是不能修改成更高权限的root用户。
例如:chown root 文件是失败的,可以切到root用户执行或者给其他用户,这样是OK的。
21. 修改文件组:chgrp 组名 文件路径