shell常用命令

Posted qlexcel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell常用命令相关的知识,希望对你有一定的参考价值。

常用命令

目录信息查看命令 ls

主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,格式如下:
ls [选项] [路径]
主要参数有:

  • -a 显示所有的文件以及子目录,包括以“.”开头的隐藏文件。
  • -l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息。
  • -t 将文件按照创建时间排序列出。
  • -A 和-a 一样,但是不列出“.” (当前目录)和“…” (父目录)。
  • -R 递归列出所有文件,包括子目录中的文件。
    Shell 命令里面的参数是可以组合在一起用的,比如组合“-al”就是显示所有文件的详细信息,包括以“.”开头的隐藏文件。

    每个文件的详细信息占一行,每行最前面的符号标记了当前文件类型,这些字符表示的文件类型如下:
  • 普通文件,一些应用程序创建的,比如文档、图片、音乐等等。
    d 目录文件。
    c 字符设备文件, Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。
    b 块设备文件,存储设备驱动,比如硬盘, U 盘等。
    l 符号连接文件,相当于 Windwos 下的快捷方式。
    s 套接字文件。
    p 管道文件,主要指 FIFO 文件。

剩下的 9 位以 3 位为一组,分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限。后面的“root root”分别代表文件拥有者(用户)和该用户所在的用户组。

目录切换命令 cd

在 Shell 中切换到其它的目录,命令格式如下:
cd [路径]

当前路径显示命令 pwd

pwd 命令用来显示当前工作目录的绝对路径,不需要任何的参数

系统信息查看命令 uname

要查看当前系统信息,可以使用命令 uname,命令格式如下:
uname [选项]
可选的选项参数如下:

  • -r 列出当前系统的具体内核版本号。
  • -s 列出系统内核名称。
  • -o 列出系统信息。

清屏命令 clear

clear 命令用于清除终端上的所有内容,只留下一行提示符。

系统帮助命令 man

命令格式如下:
man [命令名]
比如我们要查看命令“ifconfig”的说明,输入“man ifconfig”即可

系统重启命令 reboot

系统关闭命令 poweroff

权限、用户相关命令

切换用户执行身份命令 sudo

Ubuntu(Linux)是一个允许多用户的操作系统,其中权限最大的就是超级用户 root,有时候我们执行一些操作的时候是需要用 root 用户身份才能执行,比如安装软件。通过 sudo 命令可以使我们暂时将身份切换到 root 用户。当使用 sudo 命令的时候是需要输入密码的,这里要注意输入密码的时候是没有任何提示的。

切换用户命令 su

前面在讲解命令“sudo”的时候说过,“sudo”是以 root 用户身份执行一个命令,并没有更改当前的用户身份,所有需要 root 身份执行的命令都必须在前面加上“sudo”。命令“su”可以直接将当前用户切换为 root 用户,切换到 root 用户以后就可以尽情的进行任何操作了!因为你已经获得了系统最高权限,在 root 用户下,所有的命令都可以无障碍执行,不需要在前面加上“sudo”,“su”命令格式如下:
su [选项] [用户名]
常用选项参数如下:

  • -c –command 执行指定的命令,执行完毕以后恢复原用户身份。
  • -login 改变用户身份,同时改变工作目录和 PATH 环境变量。
  • -m 改变用户身份的时候不改变环境变量
  • -h 显示帮助信息

添加用户命令 adduser

格式如下:
adduser [参数] [用户名]
常用的参数如下:

  • -system 添加一个系统用户
  • -home DIR DIR 表示用户的主目录路径
  • -uid ID ID 表示用户的 uid。
  • -ingroup GRP 表示用户所属的组名。

删除用户命令 deluser

格式如下:
deluser [参数] [用户名]
主要参数有:

  • -system 当用户是一个系统用户的时候才能删除。
  • -remove-home 删除用户的主目录
  • -remove-all-files 删除与用户有关的所有文件。
  • -backup 备份用户信息

控制用户对文件的权限命令 chmod

命令“chmod”用于修改文件或者文件夹的权限,权限可以使用下面的数字表示也可以使用字母表示,命令格式如下:
chmod [参数] [文件名/目录名]
主要参数如下:

  • -c 效果类似“-v”参数,但仅回显更改的部分。
  • -f 不显示错误信息。
  • -R 递归处理,指定目录下的所有文件及其子文件目录一起处理。
  • -v 显示指令的执行过程。
    Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

    文件的权限有三种:读(r)、写(w)和执行(x)

    也可以使用 a、 u、 g 和 o 表示文件的归属关系,用=、 +和-表示文件权限的变化


    创建了一个文件: test,这个文件的默认权限为“rw-rw-r–”,我们将其权限改为“rwxrw-rw”,对应数字就是 766,操作如下

sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

文件归属者修改命令 chown

命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:
chown [参数] [用户名.<组名>] [文件名/目录]
其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:

  • -c 效果同-v 类似,但仅显示更改的部分。
  • -f 不显示错误信息。
  • -h 只对符号连接的文件做修改,不改动其它任何相关的文件。
  • -R 递归处理,将指定的目录下的所有文件和子目录一起处理。
  • -v 显示处理过程。

文件操作相关命令

显示文件内容命令 cat

命令格式如下:
cat [选项] [文件]
选项主要参数如下:

  • -n 由 1 开始对所有输出的行进行编号。
  • -b 和-n 类似,但是不对空白行编号。
  • -s 当遇到连续两个行以上空白行的话就合并为一个行空白行。

显示内容较多的文件内容命令 more

格式为
more [选项]文件
如果需要阅读长篇小说或者非常长的配置文件,那么cat可就真的不适合了。因为一旦使用 cat 命令阅读长篇的文本内容,信息就会在屏幕上快速翻滚,导致自己还没有来得及看到,内容就已经翻篇了。因此对于长篇的文本内容,推荐使用 more 命令来查看。 more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容。您还可以使用空格键或回车键向下翻页。
more test.txt #阅读长文本,百分比指示,空格或回车向下翻页

显示文件前N行命令 head

head 命令用于查看纯文本文档的前 N 行,格式为head [选项] [文件]
head -n 20 test.txt #只看文本文件前20行

显示文件最后N行命令 tail

tail 命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。
tail 命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f 文件名”。
tail -n 20 test.txt #只看文本文件最后20行
tail -f /var/log/messages #持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用

剪切 mv

mv 1.txt 2.txt 将文件1.txt重命名为2.txt
mv abc/ 123/ 将文件夹abc重命名为123
mv 1.txt /abc 将文件1.txt剪切粘贴到/abc文件夹

复制 CP

cp 1.txt abc 将文件1.txt复制到/abc
cp abc /123 -r 将文件夹abc复制到文件夹123

删除 rm

rm命令参数:

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

rm -d 目录名 # 删除一个空目录
rm -r 目录名 # 删除一个非空目录
rm 文件名 # 删除文件
rm -rf /tmp

创建新文件命令—touch

touch 不仅仅可以用用来创建文本文档,其它类型的文档也可以创建,命令格式如下:
touch [参数] [文件名]
使用 touch 创建文件的时候,如果[文件名]的文件不存在,那就直接创建一个以[文件名]命名的文件,如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期,常用的命令参数如下:

  • -a 只更改存取时间。
  • -c 不建立任何文件。
  • -d<日期> 使用指定的日期,而并非现在日期。
  • -t<时间> 使用指定的时间,而并非现在时间。

文件夹创建命令—mkdir

既然可以创建文件,那么肯定也可以创建文件夹,创建文件夹使用命令“mkdir”,命令格式如下:
mkdir [参数] [文件夹名目录名]
主要参数如下:

  • -p 如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。

网络相关命令

显示和配置网络属性命令 ifconfig

ifconfig 是一个跟网络属性配置和显示密切相关的命令,通过此命令我们可以查看当前网络属性,也可以通过此命令配置网络属性,比如设置网络 IP 地址等等,此命令格式如下:
ifconfig interface options | address
主要参数如下:
interface 网络接口名称,比如 eth0 等。
up 开启网络设备。
down 关闭网络设备。
add IP 地址,设置网络 IP 地址。
netmask add 子网掩码。

压缩解压

命令 zip

zip 命令看名字就知道是针对.zip 文件的,用于将一个或者多个文件压缩成一个.zip 结尾的文件,命令格式如下:
zip [参数] [压缩文件名.zip] [被压缩的文件]
主要参数函数如下:

  • -b<工作目录> 指定暂时存放文件的目录。
  • -d 从 zip 文件中删除一个文件。
  • -F 尝试修复已经损毁的压缩文件。
  • -g 将文件压缩入现有的压缩文件中,不需要新建压缩文件。
  • -h 帮助。
  • -j 只保存文件的名,不保存目录。
  • -m 压缩完成以后删除源文件。
  • -n<字尾符号> 不压缩特定扩展名的文件。
  • -q 不显示压缩命令执行过程。
  • -r 递归压缩,将指定目录下的所有文件和子目录一起压缩。
  • -v 显示指令执行过程。
  • -num 压缩率,为 1~9 的数值。
    zip -rv test2.zip test2
    上述命令中, -rv 表示递归压缩并且显示压缩命令执行过程。

命令 unzip

unzip 命令用于对.zip 格式的压缩包进行解压,命令格式如下:
unzip [参数] [压缩文件名.zip]
主要参数如下:

  • -l 显示压缩文件内所包含的文件。
  • -t 检查压缩文件是否损坏,但不解压。
  • -v 显示命令显示的执行过程。
  • -Z 只显示压缩文件的注解。
  • -C 压缩文件中的文件名称区分大小写。
  • -j 不处理压缩文件中的原有目录路径。
  • -L 将压缩文件中的全部文件名改为小写。
  • -n 解压缩时不要覆盖原有文件。
  • -P<密码> 解压密码。
  • -q 静默执行,不显示任何信息。
  • -x<文件列表> 指定不要处理.zip 中的哪些文件。
  • -d<目录> 把压缩文件解到指定目录下。
    对上面压缩的 test2.zip 文件使用 unzip 命令进行解压缩
    unzip test2.zip

命令 tar

我们前面讲的 zip 和 unzip 这两个是命令只适用于.zip 格式的压缩和解压,其它压缩格式就用不了了,比如 Linux 下最常用的.bz2 和.gz 这两种压缩格式。其它格式的压缩和解压使用命令tar, tar 将压缩和解压缩集合在一起,使用不同的参数即可,命令格式如下:
tar [参数] [压缩文件名] [被压缩文件名]
常用参数如下:

  • -c 创建新的压缩文件。
  • -C<目的目录> 切换到指定的目录。
  • -f<备份文件> 指定压缩文件。
  • -j 用 tar 生成压缩文件,然后用 bzip2 进行压缩。
  • -k 解开备份文件时,不覆盖已有的文件。
  • -m 还原文件时,不变更文件的更改时间。
  • -r 新增文件到已存在的备份文件的结尾部分。
  • -t 列出备份文件内容。
  • -v 显示指令执行过程。
  • -w 遭遇问题时先询问用户。
  • -x 从备份文件中释放文件,也就是解压缩文件。
  • -z 用 tar 生成压缩文件,用 gzip 压缩。
  • -Z 用 tar 生成压缩文件,用 compress 压缩。

使用如下两个命令将 test1 文件夹压缩为.bz2 和.gz 这两个格式:
tar -vcjf test1.tar.bz2 test1
tar -vczf test1.tar.gz test1
-vxjf 用来完成.bz2 格式压缩文件的解压, -vxzf 用来完成.gz 格式压缩文件的解压。
tar -vxjf test1.tar.bz2
tar -vxzf test2.tar.gz

rar文件

.rar文件,mac和linux并没有自带rar,需要去下载
rar x FileName.rar # 解压
rar a FileName.rar DirName # 压缩

日志相关命令

开机信息输出命令 dmesg

dmesg | grep -i sda #过滤出包含“sda”字符串的dmesg日志,“-i”表示忽略大小写
dmesg | grep -i usb #过滤出包含“usb”字符串的dmesg日志
dmesg | grep -i memory

dmesg | more #使用管道(pipe)将其输出送到more或者less命令单页显示
dmesg | less

dmesg | head -20 #只输出dmesg命令的前20行日志
dmesg | tail -20 #输出dmesg命令的最后20行日志,当你插入可移动设备时它是非常有用的

获取进程和杀死进程

使用top和ps命令来获取进程。
top命令用于动态监视进程,类似于windows任务管理器。

一般ps命令后要跟选项,比如
ps aux
a = 显示所有用户的进程
u = 显示进程的用户和拥有者
x = 也显示不依附于终端的进程
可以配合grep来过滤:
ps aux | grep chrome #列出 Chrome 浏览器相关进程

kill - 通过进程 ID (PID)来结束进程
killall - 通过进程名字来结束进程
命令后可以加信号,来进一步决定操作,常用的信号是:

kill -9 3827 #杀死PID为3827的进程
killall -9 chrome #杀死名字为chrome的全部进程(可能有多个)。理论上名字为chrome的进程都会被杀死,但可能有漏网之鱼,可以使用ps aux | grep chrome命令再检查一下

磁盘管理命令

磁盘分区命令 fdisk

如果要对某个磁盘进行分区,可以使用命令 fdisk,命令格如下:
fdisk [参数]
主要参数如下:

  • -b<分区大小> 指定每个分区的大小。
  • -l 列出指定设备的分区表。
  • -s<分区编号> 将指定的分区大小输出到标准的输出上,单位为块。
  • -u 搭配“-l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。
    比如我要对 U 盘进行分区, 千万不要对自己装 Ubuntu 系统进行分区!!! 可以使用如下命令:
    sudo fdisk /dev/sdb

p 显示现有的分区
n 建立新分区
t 更改分区类型
d 删除现有的分区
a 更改分区启动标志
w 对分区的更改写入到硬盘或者存储器中。
q 不保存退出。

格式化命令 mkfs

使用命令 fdisk 创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一个文件系统, Linux 下的格式化命令为 mkfs,命令格式如下:
mkfs [参数] [-t 文件系统类型] [分区名称]
主要参数如下:

  • fs 指定建立文件系统时的参数
  • -V 显示版本信息和简要的使用方法。
  • -v 显示版本信息和详细的使用方法。
    比如我们要格式化 U 盘的分区/dev/sdb1 为 FAT 格式,那么就可以使用如下命令:
    mkfs – t vfat /dev/sdb1

挂载分区命令 mount

我们创建好分区并且格式化以后肯定是要使用硬盘或者 U 盘的,那么如何访问磁盘呢?比如我的 U 盘就一个分区,为/dev/sdb1,如果直接打开文件/dev/sdb1 会发现根本就不是我们要的结果。我们需要将/dev/sdb1 这个分区挂载到一个文件夹中,然后通过这个文件访问 U 盘,磁盘挂载命令为 mount,命令格式如下:
mount [参数] -t [类型] [设备名称] [目的文件夹]
命令主要参数有:

  • -V 显示程序版本。
  • -h 显示辅助信息。
  • -v 显示执行过程详细信息。
  • -o ro 只读模式挂载。
  • -o rw 读写模式挂载。
  • -s-r 等于-o ro。
  • -w 等于-o rw。
    挂载点是一个文件夹,因此在挂载之前先要创建一个文件夹,一般我们把挂载点放到“/mnt”目录下,在“/mnt”下创建一个 tmp 文件夹,然后将 U 盘的/dev/sdb1 分区挂载到/mnt/tmp 文件夹里面

    在上图中我们将 U 盘以 fat 格式挂载到目录/mnt/tmp 中,然后我们就可以通过访问/mnt/tmp 来访问 U 盘了。

卸载命令 umount

当我们不再需要访问已经挂载的 U 盘,可以通过 umount 将其从卸载点卸除,命令格式如下:
umount [参数] -t [文件系统类型] [设备名称]

  • -a 卸载/etc/mtab 中的所有文件系统。
  • -h 显示帮助。
  • -n 卸载时不要将信息存入到/etc/mtab 文件中
  • -r 如果无法成功卸载,则尝试以只读的方式重新挂载。
  • -t<文件系统类型> 仅卸载选项中指定的文件系统。
  • -v 显示执行过程。
    上面我们将 U 盘挂载到了文件夹/mnt/tmp 里面,这里我们使用命令 umount 将其卸载掉

查询磁盘空间 df

df -h
在终端中输入如下命令来查询当前磁盘挂载的啥文件系统:
df -T – h

以上是关于shell常用命令的主要内容,如果未能解决你的问题,请参考以下文章

提效小技巧——记录那些不常用的代码片段

shell脚本简介及常用文本编辑命令

常用的shell变量

代码片段:Shell脚本实现重复执行和多进程

hadoop常用shell命令怎么用

Linux shell常用命令