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 |
查看内存使用情况,输出参数说明:[tota l:总计物理内存的大小,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> |
卸载应用程序 |
扫码关注公众号(搜索公众号:平头哥的技术博文)一起交流学习呗