shell
Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作,Shell 负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作,然后将结果反馈给应用层或者用户。
基本格式: command -options [argument]
command: Shell 命令名称。
options:选项,同一种命令可能有不同的选项,不同的选项其实现的功能不同。
argument:Shell 命令是可以带参数的,也可以不带参数运行。
shell命令的自动补全:输入命令的前面一部分字母,然后按下TAB 键,如果只有一个命令匹配的话就会自动补全这个命令剩下的字母。如果 有多个命令匹配的话系统就会发出报警声音,此时在按下一次 TAB 键就会列出所有匹配的命令。
目录信息查看命令 ls
ls [选项] [路径]
-a 显示所有的文件以及子目录,包括以“.”开头的隐藏文件。
-l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息。
-t 将文件按照创建时间排序列出。
-A 和-a 一样,但是不列出“.”(当前目录)和“…”(父目录)。
-R 递归列出所有文件,包括子目录中的文件。
目录切换命令 cd
cd [路径]
cd / 进入到根目录“/”下,Linux 系统的根目录为“/”,
cd /usr 进入到目录“/usr”里面。
cd … 进入到上一级目录。
cd ~ 切换到当前用户主目录
当前路径显示命令 pwd
pwd
系统信息查看命令 uname
uname [选项]
-r 列出当前系统的具体内核版本号。 -s 列出系统内核名称。 -o 列出系统信息。
切换用户执行身份命令 sudo
sudo [选项] [命令]
sudo adduser test
-h 显示帮助信息。
-l 列出当前用户可执行与不可执行的命令
-p 改变询问密码的提示符。
添加用户命令 adduser
adduser [参数] [用户名]
-system 添加一个系统用户
-home DIR DIR 表示用户的主目录路径
-uid ID ID 表示用户的 uid。
-ingroup GRP 表示用户所属的组名。
删除用户命令 deluser
deluser [参数] [用户名]
-system 当用户是一个系统用户的时候才能删除。
-remove-home 删除用户的主目录
-remove-all-files 删除与用户有关的所有文件。
-backup 备份用户信息
切换用户命令 su
su [选项] [用户名]
sudo su(切换到root)
sudo su zr
-c –command 执行指定的命令,执行完毕以后恢复原用户身份。
-login 改变用户身份,同时改变工作目录和 PATH 环境变量。
-m 改变用户身份的时候不改变环境变量
-h 显示帮助信息
显示文件内容命令 cat
cat [选项] [文件]
-n 由 1 开始对所有输出的行进行编号。
-b 和-n 类似,但是不对空白行编号。
-s 当遇到连续两个行以上空白行的话就合并为一个行空白行。
显示和配置网络属性命令 ifconfig
ifconfig interface options | address
sudo ifconfig ens33 192.168....(将网卡ens33的IP地址改为...)
interface 网络接口名称,比如 eth0 等。
up 开启网络设备。
down 关闭网络设备。
add IP 地址,设置网络 IP 地址。
netmask add 子网掩码。
系统帮助命令 man
man [命令名]
软件安装、更新、卸载
sudo apt-get install package-name
sudo apt-get upgrade package-name
sudo apt-get remove package-name
VIM文本编辑
编辑器设置:用 vi 打开文件/etc/vim/vimrc,在最后面输入set ts=4
,设置 TAB 键为 4 字节;输入 set nu
显示行号。
vim test.txt
a 在当前光标所在字符的后面,转为输入模式。
ESC 从VIM现在的输入模式切换到指令模式。
: 从现在的指令模式进入底行模式。
指令
输入G
可以直接定位到最后一行。
进入底行模式后的命令:
x 保存当前文档并且退出。
q 退出。
w 保存文档。
q! 退出 VI/VIM,不保存文档。
文件
创建新文件命令—touch
touch [参数] [文件名]
-a 只更改存取时间。
-c 不建立任何文件。
-d <日期> 使用指定的日期,而并非现在的日期。
-t <时间> 使用指定的时间,而并非现在的时间。
文件夹创建命令—mkdir
mkdir [参数] [文件夹名目录名]
-p 如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。
文件及目录删除命令—rm
rm [参数] [目的文件或文件夹目录名]
直接使用rm无法删除文件夹,需要加上参数 -rf 强制删除。
-d 直接把要删除的目录的硬连接数据删成 0,删除该目录。
-f 强制删除文件和文件夹(目录)。
-i 删除文件或者文件夹(目录)之前先询问用户。
-r 递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉。
-v 显示删除过程。
文件夹(目录)删除命令—rmdir
rmdir [参数] [文件夹(目录)]
-p 删除指定的文件夹(目录)以后,若上层文件夹(目录)为空文件夹(目录)的话就将其一 起删除。
文件复制命令—cp
cp [参数] [源地址] [目的地址]
“*.c”就表示所有以“.c”结尾的文件
“…/”表示上级目录
-a 此参数和同时指定“-dpR”参数相同
-d 在复制有符号连接的文件时,保留原始的连接。
-f 强行复制文件,不管要复制的文件是否已经存在于目标目录。
-I 覆盖现有文件之前询问用户。
-p 保留源文件或者目录的属性。
-r 或-R 递归处理,将指定目录下的文件及子目录一并处理
文件移动命令—mv
mv [参数] [源地址] [目的地址]
-b 如果要覆盖文件的话覆盖前先进行备份。
-f 若目标文件或目录与现在的文件重复,直接覆盖目标文件或目录。
-I 在覆盖之前询问用户。
权限管理命令
权限:root>初次创建的用户>普通用户
“-rw-rw-r–”:第1位表示文件类型,剩下的 9 位以 3 位为一组,分别表示文件拥有者的权限,文件拥有者所在用 户组的权限以及其它用户权限。(用户组就是一组有相同属性的用户集合)
权限二进制数表示:一种权限对应一个 二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限。
权限修改命令 chmod
chmod [参数] [文件名/目录名]
chmod u+x a.c (给a.c的归属用户添加可执行权限)
chmod 777 test
-c 效果类似“-v”参数,但仅回显更改的部分。
-f 不显示错误信息。
-R 递归处理,指定目录下的所有文件及其子文件目录一起处理。
-v 显示指令的执行过程。
权限修改字母表示:
文件归属者修改命令 chown
chown [参数] [用户名.<组名>] [文件名/目录]
sudo chown root.root test
-c 效果同-v 类似,但仅回显更改的部分。
-f 不显示错误信息。
-h 只对符号连接的文件做修改,不改动其它任何相关的文件。
-R 递归处理,将指定的目录下的所有文件和子目录一起处理。
-v 显示处理过程。
磁盘管理
磁盘分区命令 fdisk
fdisk [参数]
sudo fdisk /dev/sdb
-b<分区大小> 指定每个分区的大小。
-l 列出指定设备的分区表。
-s<分区编号> 将指定的分区大小输出到标准的输出上,单位为块。
-u 搭配“-l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。
格式化命令 mkfs
mkfs [参数] [-t 文件系统类型] [分区名称]
mkfs –t vfat /dev/sdb1
fs 指定建立文件系统时的参数
-V 显示版本信息和简要的使用方法。
-v 显示版本信息和详细的使用方法。
挂载分区命令 mount
mount [参数] -t [类型] [设备名称] [目的文件夹]
sudo mount -t vfat /dev/sdb1 /mnt/tmp(以 fat 格式挂载到目录/mnt/tmp 中)
-V 显示程序版本。
-h 显示辅助信息。
-v 显示执行过程详细信息。
-o ro 只读模式挂载。
-o rw 读写模式挂载。
-s-r 等于-o ro。
-w 等于-o rw。
卸载命令 umount
umount [参数] -t [文件系统类型] [设备名称]
sudo umount -tvfat /dev/sdb1
-a 卸载/etc/mtab 中的所有文件系统。
-h 显示帮助。
-n 卸载时不要将信息存入到/etc/mtab 文件中
-r 如果无法成功卸载,则尝试以只读的方式重新挂载。
-t <文件系统类型> 仅卸载选项中指定的文件系统。
-v 显示执行过程。
编译
gcc编译
gcc [选项] [文件名字]
-c 只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件。
-o<输出文件名> 用来指定编译结束以后的输出文件名,如果不使用这个选项的话 GCC 默认编译出来的可执行文件名字为 a.out。
-g 添加调试信息,如果要使用调试工具(如 GDB)的话就必须加入此选项,此选项指示编 译的时候生成调试所需的符号信息。
-O 对程序进行优化编译,如果使用此选项的话整个源代码在编译、链接的的时候都会进 行优化,这样产生的可执行文件执行效率就高。
-O2 比-O 更幅度更大的优化,生成的可执行效率更高,但是整个编译过程会很慢。
gcc main.c –o ** (指定生成的可执行文件名字为**)