Linux Shell
1. Shell 的特点
-
Shell 是一个用C语言编写的程序,它是用户使用 Linux 的桥梁。
-
Shell 既是一种命令语言,又是一种程序设计语言。
-
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
2. 查询命令历史与补齐
- 查询命令历史:上下键。
- 补齐命令与文件名:TAB。
3.定义命令别名
alias 别名='Shell命令'
# 注意等号两边不能有多余的字符
别名不可以和系统 Shell 命令一样,在终端上执行的操作是临时的。
如果要永久有效,需要打开家目录下的.bashrc脚本文件,添加别名
nox@noox:~$ gedit .bashrc
常用 Shell 命令
ls(list)
文件操作
ls /etc // 列出etc目录下的文件名字
ls -l // 列出当前目录下的文件详细信息
ls -lh // 列出当前目录下的文件详细信息,但是大小会带单位显示
ls -a // 查看当前目录下的所有文件(包括隐藏文件)
cd(change directory)
切换工作路径
nox@noox:/mnt$ /mnt是工作路径
nox@noox:/usr/local$ /usr/local 是工作路径
cd /mnt // 切换到mnt目录
cd - // 回到之前的目录
cd // 切换到家(当前用户)目录(~) /home/用户名
cd ~ // 切换到家(当前用户)目录
cd .. // 跳到上一层目录
nox@noox:/usr$ /当前目录
要求切换到根目录:
绝对路径: cd / // 从根目录开始访问目标文件
相对路径 cd .. // 从当前目录开始访问目标文件
切换到mnt目录:
绝对路径: cd /mnt
相对路径 cd ../mnt
pwd(print work directory)
打印当前的工作路径
pwd
cat/less/more/tail/head
显示文件内容到终端
cat file // 显示文件内容
cat file -n // 带行号的显示文件内容
less file // 分页显示文件内容,按q退出,按空格/回车翻页
more file // 分页显示文件内容,按q退出,按空格/回车翻页
tail file // 默认查看文件最后10行
tail file -n 20 // 查看文件最后20行
head file // 默认查看文件开头10行
head file -n 20 // 查看文件开头20行
touch
创建普通文件、更新文件时间
touch file // 创建一个文件名叫flie
touc file1 file2 // 创建多个文件
/* 如果文件名存在,会更新创建时间 */
mkdir(make directory)
创建空目录
mkdir dir // 创建一个名为dir的目录
cp (copy)
复制一个文件或目录
cp file1 file2 // 文件复制到文件
cp file dir/ // 文件复制到目录
cp dir1/ dir2/ -r // 目录复制到目录,-r表示递归的复制目录及其子目录
rm(remove)
删除一个文件或者目录
rm file // 删除普通文件
rm dir/ -r // 删除目录文件,-r表示递归删除目录及其子目录
rmdir // 删除一个空目录
rmdir app/
mv(move)
移动文件位置或者重命名文件
mv file1 file2 // 重命名文件
mv file dir/ // 移动文件到dir目录下
find
在指定的目录下查找文件
find . -name file // 在当前目录下查找 file 文件
find . -name "*.c" // 将当前目录下所有后缀为.c的文件列出 来
sudo find / -name stdio.h // 在根目录下查找 stdio.h 文件
grep
在指定的文件中查找字符串
grep 'hello' file // 在file中找hello字符串
grep 'hello' file -n // 在file中查找hello字符串,并显示符号
grep 'hello' dir/ -rnH // 递归的针对dir目录下的所有文件,查找hello
sort
对文件内容进行排序
sort file // 正序排列
sort file -r // 逆序排列
uniq
去除相邻的重复行
uniq file // 去除文件相邻重复行
sort file | uniq // 去除整个文件重复行
| // 管道,把前一个命令的结作为后一个命令的参数
> // 输出重定向,会覆盖文件原本内容
>> // 输出重定向,不会覆盖文件原本内容
sort file1 | uniq > file2 //先排序file1,然后去除相邻重复行,再把结果写入file2文件
diff(different)
比较文件,目录,然后产生差异信息
file a.txt
flie 1.c
file 1.pdf
file 1.jpeg
echo
用于字符串的输出
echo "It is a test" // 显示普通字符
echo It is a test // 显示普通字符
echo "\"It is a test\"" // 显示转义字符
a=100 // 定义变量
echo $a // 显示变量
echo -e "OK! \n" // 显示换行 -e 开启转义
echo "It is a test"
echo -e "OK! \c" // -c 不换行 -e 开启转义
echo "It is a test"
echo "It is a test" > file // 显示结果定向至文件
echo 'hello\"' // 原样输出字符串,不进行转义或取变量(用单引号)
echo `date` // 显示命令执行结果
env (environment)
在终端上打印环境变量
env //回车执行
USER=gec 用户名字
SHELL=/bin/bash 当前shell软件是bash
//PATH:是可执行程序的环境变量,存储可执行程序的路径
//执行一个程序的时候,默认会到PATH变量路径中去找这个文件名
PATH=/home/gec/bin:/home/gec/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/usr/local/arm/5.4.0/usr/bin:/usr/local/arm/usr/local/arm/5.4.0/usr/bin:/usr/local/arm1808/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/
PWD=/home/gec/Desktop 当前的工作路径
LOGNAME=gec 当前登录用户的名字
LD_LIBRAARY_PATH 系统中库存放路径的环境变量
export
设置环境变量
export PATH=/home/nox/Desktop:$PATH 添加到原来环境变量值的前面
export PATH=$PATH:/home/nox/Desktop 添加到原来环境变量值的后面
printenv PATH 查看PATH环境变量
echo $PATH 查看PATH环境变量
tar(tape archive)
将文件归档、释放归档、压缩、解压缩
- 必要参数
- c:创建
- x:释放
- v:显示执行文件
- f:指定文件
- C:指定解压路径
- j:指定压缩或解压缩格式bzip2(命名:xxx.tar.bz2)
- z:指定压缩或解压缩格式gzip(命名:xxx.tar.gz)
tar cvf xxx.tar file1 file2 // 创建一个归档文件
tar xvf xxx.tar // 释放一个归档文件
tar cvfj xxx.tar.bz2 file1 file2 // 创建一个bz2格式压缩文件
tar xvfj xxx.tar.bz2 // 释放一个bz2格式压缩文件
tar xvfj xxx.tar.bz2 -C /dir // 解压xxx.tar.bz2到dir的路径
tar cvfz xxx.tar.gz file1 file2 // 创建一个gz格式压缩文件
tar xvfz xxx.tar.gz // 释放一个gz格式压缩文件
tar xvfz xxx.tar.gz -C /dir // 解压xxx.tar.gz到dir的路径
ln(link)
用来创建链接文件(符号链接、硬链接)
ln [参数][源文件或目录][目标文件或目录]
- 硬链接:
- 只能对普通文件创建(文本、图片、音视频...)。
- 不可以跨文件系统,跨磁盘创建,不允许给目录创建链接。
- 以文件副本形式存在,但不占用实际空间。
- 符号链接(软链接):
- 以路径的方式存在。类似于Windows的快捷方式。
- 软链接可以对一个不存在的文件名进行链接。
- 软链接可以跨文件系统。
- 软链接可以对目录进行链接。
ln file1 file2 // 硬链接创建
ln -s file1 file2 // 软链接
who
显示系统中有那些使用者,显示的资料包含使用者ID、使用的终端机、从那边连上来的、上线时间、呆滞时间、CPU使用量、动作等等。
who // 显示当前登陆用户
who -H // 显示标题栏
who -l -H // 显示用户登录来源
who -T -H // 显示终端属性
who -m -H // 只显示当前用户
whereis/which
查找文件
whereis ls // 查找命令路径,命令说明文档
whereis -b bash // 显示bash 命令的二进制程序
whereis -m bash // 显示bash 命令的帮助文件
which ls // 查找命令路径
write
给其他已经登录的用户发送信息
write 用户名字
/* 单方向发送 Ctrl+C结束对话 */
uname
获取当前系统内核相关信息
uname -a // 显示当前系统全部相关信息
uname -m // 显示计算机类型
uname -n // 显示计算机名
uname -r // 显示当前操作系统发行编号
uname -s // 显示当前操作系统名称
uname -v // 显示当前系统版本与时间
通配符:* ?
* // 任意长度任意字符
? // 一个任意字符
rm ????? // 名字为5个字符的文件全删除
rm *.txt // 不管名字多长,是什么字符,只要后缀为.txt都删掉
ps(process state)
查看进程的信息
ps -ef // 显示所有的进程信息,连同命令行
ps -aux // 查看进程详细信息
kill/killall
kill -l // 查看所有信号(总共64个) 9)SIGKILL 信号号码)信号名
kill -信号号码 进程名字 // 杀死进程
killall -信号号码 进程名字 // 杀死所有叫这个名字的进程
df(disk format)
查看磁盘分区信息
df -hT // h带单位显示,T显示文件系统类型
du(disk usage)
查看磁盘使用情况
du -sh dir/ // 显示目录所占的空间
du -sh file // 显示文件所占的空间
chmod(change mode)
更改文件权限
r=4,w=2,x=1
- 若要 rwx 属性则 4+2+1=7;