1、shell 命令基础
命令行格式
$command [option(s)] [argument(s)]
说明
* 在命令行的每两个部分之间有空格分割
* 每个命令行可使用的最多的命令符数是256个
* 命令要区分大小写
* 不同的命令提示符,使用的分割符为/
* 命令中的参数,选项可以是多个,并且参数其实是要传入命令程序的主函数main的参数
命令行别名
| 命令 |
命令说明 |
示例 |
示例说明 |
alias alias-name=value |
建立别名 |
alias mypwd="pwd" |
给pwd建立别名 |
alias |
列出所有别名 |
alias |
列出所有已建立的别名 |
unalias alias-name |
删除别名 |
unalias mypwd |
取消mypwd别名 |
通配符
| 命令 |
命令说明 |
示例 |
示例说明 |
* |
通配0个或多个 |
ls u* |
列举出以u开头的文件目录 |
? |
通配任意单个字符 |
ls us? |
列出us开头后面还有一个字符的文件目录 |
[] |
通配某个范围内的任意字符 |
[a-z] |
匹配a-z中间的任意一个字符 |
一行执行多条命令;
| 命令 |
命令说明 |
示例 |
示例说明 |
; |
一行执行多条命令 |
cd /home;ls |
进入到home目录并且查看该目录下的文件 |
输入输出重定向
| 命令 |
命令说明 |
示例 |
示例说明 |
> |
将输出放到文件(覆盖) |
ls > out.txt |
将ls的输出放到out.txt中 |
>> |
将输出追加到文件末尾 |
ls >> out.txt |
将ls的输出追加到out.txt中 |
< |
输入重定向 |
cat < out.txt > out1.txt |
将out.txt的输出重定向到out1.txt中 |
管道符
| 命令 |
命令说明 |
示例 |
示例说明 |
| |
将一个进程的输出作为另一个进程的输入 |
ls -l /etc | more |
将/etc目录下的文件分页输出 |
联机帮助
| 命令 |
命令说明 |
示例 |
示例说明 |
man name |
查看命令信息,spacbebar:向下显示一屏,Enter:向下显示一行,b:向上一屏,f:向下一屏,q:退出,/string:查找字符串string,n:查找下一个string |
man pwd |
查看pwd命令的相关信息 |
man -k keyword |
根据关键词查找命令 |
man -k pw |
查找命令中带有pw两字字母的命令 |
清屏
历史记录
| 命令 |
命令说明 |
示例 |
示例说明 |
history |
查看最近500条历史命令 |
history |
查看最近500条历史命令 |
history n |
查看最近n条历史命令 |
history 2 |
查看最近2条历史命令 |
!n |
执行历史记录中的第n条 |
!5 |
执行历史记录中的第5条 |
!! |
执行上一条命令 |
!! |
执行上一条命令 |
方向上键 |
执行上一条历史命令 |
|
|
2、文件管理
查看文件目录
| 命令 |
命令说明 |
示例 |
示例说明 |
pwd |
显示当前工作目录 |
|
|
cd |
改变当前工作目录 |
cd /etc |
切换到etc目录 |
ls |
列出当前工作目录的文件和目录 |
|
|
ls -a |
列出当前工作目录所有目录、子目录、文件、隐藏文件 |
|
|
ls -R |
一层层的展示当前目录的子目录和文件 |
|
|
ls -F |
列出文件、目录并显示文件类型 |
|
|
ls -t |
以修改时间为时间倒序列出文件、子目录 |
|
|
ls -l |
以长列表格式显示文件、目录的详细信息 |
|
|
file filename |
显示文件类型 |
file logs |
查看logs的文件类型 |
创建和删除文件目录
| 命令 |
命令说明 |
示例 |
示例说明 |
touch filename |
创建文件,当filename不存在时创建一个新的空文件,当filename存在时,更新该文件的修改时间 |
touch my.txt |
创建my.txt文件 |
mkdir [-p] dir_name |
创建目录,-p参数在父目录不存在时可以同时创建子目录 |
mkdir dir1,mkdir -p dir2/dir3 |
创建dir1目录,创建dir2目录并且创建子目录dir3 |
rm [-i/f] filename |
删除一个或多个文件,-i:询问是否删除,-f:强制删除 |
rm -i my.txt |
删除my.txt文件 |
rmdir dir_name(s) |
删除空目录 |
rmdir dir1 |
删除空目录dir1 |
rm -r[i/f] dir_name(s) |
删除一个或多个目录,-r:删除非空目录,-i:删除前询问是否删除,-f:强制删除 |
rm -rf dir2 |
强制删除dir目录 |
显示文件内容
| 命令 |
命令说明 |
示例 |
示例说明 |
cat filename |
不分屏显示文本内容 |
cat out.txt |
查看out.txt的文件内容 |
more filename |
分页展示文件内容,spacbebar:向下显示一屏,Enter:向下显示一行,b:向上一屏,f:向下一屏,h:显示帮助菜单,q:退出,/string:查找字符串string,n:查找下一个string |
|
|
head [-n] filename |
查看文件的前多少行,-n:行数,默认10行 |
head -20 settings.xml |
查看setting.xml的前20行 |
tail [-n] filename |
查看文件的最后多少行,-n:行数,默认10行 |
tail -20 settings.xml |
查看setting.xml的最后20行 |
拷贝和移动文件目录
| 命令 |
命令说明 |
示例 |
示例说明 |
cp [-i] source_file destination_file |
拷贝文件,-i:如果目标文件存在询问是否覆盖,没有-i参数则直接覆盖 |
cp out.txt /data/ |
将out.txt文件拷贝到/data目录下 |
cp -r source_directory destination_directory |
拷贝目录 |
`cp -r dir1/ logs/ |
|
|将dir1拷贝到logs`目录下 |
|
|
|
mv [i] source_file target_file |
重命名文件 |
`mv -i out.txt myout.txt |
|
|将out.txt重命名为myout.txt` |
|
|
|
mv [i] source_file target_directory |
移动文件到目标文件目录 |
mv myout.txt logs/ |
将myout.txt文件移到到logs目录下 |
解压/打包文件
| 命令 |
命令说明 |
示例 |
示例说明 |
tar -cvzf target_file source_file |
打包文件, |
tar -czvf mydir.tar.gz dir1/ |
将dir1目录打包为mydir.tar.gz |
tar -xvzf source_file |
解压文件 |
tar -xzvf mydir.tar.gz |
解压mydir压缩包 |
文件目录权限
| 命令 |
命令说明 |
示例 |
示例说明 |
chmod |
修改文件目录的访问权限,用户[u:拥有者,g:同组人,o:其他人,a:所有人],权限操作[=:设置权限,+:添加权限,-:删除权限],权限[r:读权限,w:写权限,x:执行权限] |
chmod u=rwx,g=rw,o=r myout.txt |
拥有者对myout.txt有所有权限,跟拥有者同组的用户有读写权限,其他人只有读权限 |
chown -[R/v] 用户或组 file |
更改某个文件或目录的属主或属组,可用于授权 |
chown -R jamal /dir1 |
将dir1的拥有者改为jamal |
chgrp [-R] group filename |
改动文件所属的组 |
|
|
查找文件
| 命令 |
命令说明 |
示例 |
示例说明 |
find path experession |
查找文件和目录,[-name:按文件名查找,-user:按用户,-size:按大小,-mtime:按最后一次修改时间,-atime:按最后一次访问时间,-type:按文件类型,-perm:按权限] |
find . -name di* |
在当前目录查找以di开头的文件和目录 |
过滤与统计
| 命令 |
命令说明 |
示例 |
示例说明 |
grep [option] string filename |
查找包含某些字符串的结果,对文件或输出进行过来,区分大小写,-i:忽略大小写,-v:反向匹配(查找不包含某字符串的接口) |
grep -i dataid config.log |
忽略大小写,在config.log中查找dataid |
wc [option(s)] filename |
统计文件或输出结果,-l:统计多少行,-w:统计有多少个单词,-c:统计多少个字符 |
wc -l config.log |
统计config.log有多少行 |
3、系统管理
时间日期
| 命令 |
命令说明 |
date |
显示当前日期 |
cal |
显示日历,默认显示当前月的日历,cal 月份 年份:显示指定年月的日历,cal 年份:显示指定年份的日历 |
查看进程
| 命令 |
命令说明 |
ps [options] |
列出当前系统中已在运行的进程,默认列出当前终端相关的进程,options[-e:列出正在运行的进程,-f:列出一个完整的进程列表形式,-u:查找出由某个用户启动的进程,-auwx:列出一个完整的进程列表形式] |
结束进程
| 命令 |
命令说明 |
kill -[信号数字] <进程PID> |
根据进程pid结束进程,信号数字:[9:发送 kill 信号退出,6:发送 abort 信号退出,15:发送 Termination 信号,1:挂起,2:从键盘中断,-9 -1:结束当前用户的所有进程],一般我们使用kill -9 pid即可 |
pkill <进程名> |
结束进程族。如果结束单个进程,请用 kill |
killall <进程名> |
killall和pkill 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单 |
| 个进程,请用kill 来杀掉。 |
|
用户切换
| 命令 |
命令说明 |
示例 |
示例说明 |
su 用户名 |
切换用户 |
su root |
切换到root用户 |
设置普通用户的超级权限
| 命令 |
命令说明 |
示例 |
示例说明 |
sudo 命令行 |
将该命令以超级权限运行 |
sudo apt-get install vim |
|
关机重启
| 命令 |
命令说明 |
shutdown [-cfFhknr][-t 秒数][时间][警告信息] |
安全的关闭或者重启Linux系统,-h:系统关机,-r:系统重启,-t:设置多久时间后执行shutdown指令 |
halt |
关机 |
reboot |
重启 |
4、用户管理
修改密码
查找用户
| 命令 |
命令说明 |
id |
查看用户ID,所属组ID |
users |
查看已经登录到当前系统中的用户,只显示出用户名 |
who |
查看用户的详细信息 |
who am i |
查看当前用户自己的信息 |
whoami |
查看当前用户自己的用户名 |
5、磁盘管理
磁盘信息
| 命令 |
命令说明 |
du [options] |
显示磁盘使用摘要信息,options:[-k:以K字节方式显示,-m:以M字节方式显示,-s:显示当前目录下的内容总占用磁盘的大小] |
df |
显示整个文件系统的空间使用磁盘情况 |
内存信息
| 命令 |
命令说明 |
free |
查看内存使用情况,输出参数说明:[total:总计物理内存的大小,used:已使用多大,free:可用有多少,Shared:多个进程共享的内存总额,Buffers/cached:磁盘缓存的大小] |
top |
查看内存使用情况,输出参数说明:[PID:进程的ID,USER:进程所有者,PR:进程的优先级别,越小越优先被执行,NInice:值,VIRT:进程占用的虚拟内存,RES:进程占用的物理内存,SHR:进程使用的共享内存,S:进程的状态(S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数),%CPU:进程占用CPU的使用率,%MEM:进程使用的物理内存和总内存的百分比,TIME+:该进程启动后占用的总的CPU时间,COMMAND:进程启动命令名称] |
6、网络配置
| 命令 |
命令说明 |
ping 主机IP |
查看当前机器与另一台机器的联调情况 |
ifconfig -a |
显示当前机器的IP、Netmask、Gateway等网络信息 |
ifconfig ethO up(down) |
激活与关闭某个网络适配卡 |
ifconfig ethO [ipaddress] netmask [address] |
设置IP和子网掩码 |
7、安装卸载应用程序
离线包安装和卸载
| 命令 |
命令说明 |
dpkg -i <package> |
安装离线包 |
dpkg -p <package> |
移除包和配置文件 |
在线包安装和卸载
| 命令 |
命令说明 |
apt-get install <application> |
ubuntu下安装应用程序 |
apt-get remove -purge <application> |
卸载应用程序 |
扫码关注公众号(搜索公众号:平头哥的技术博文)一起交流学习呗