bash命令行讲解
lyt :是用户名
@iZbp1i65rwtrfbmjetete2b2Z :这个是主机名
~ :这个是当前目录
$ :这个是命令行提示符
每个指令都有不同的功能,大部分指令都可以带上选项来实现不同的效果。
一般指令和选项的格式:
指令 选项
需要注意的是,指令和选项当中一定要有空格。
指令的本质就是可执行程序,指令存储在/usr/bin目录中。
热键
tab
功能:连续摁两下tab可以将未输入完的指令补全,不过以已经输入的字符串开头的指令不止一个,则会将这些满足条件的指令全部打印出来。
ctrl c
可以中止一个进程
ctrl r
这是一个可以搜索你用过的历史命令的热键,使用后在命令行输入字符串,会自动帮你寻找曾经使用过的符合已经输入的字符串的那些历史命令。找不到或者不想找直接ctrl c退出就行。
ctrl d
可以进行回退,详情上网搜。
指令
ls
ls可以查看当前目录下的文件属性
这是ls不附带任何选项的功能,文件名也是文件属性的一部分,所以单独的ls的功能很显而易见,就是显示文件属性当中的文件名。
-l
用了 -l 选项后可以看出,显示的文件属性除了文件名还显示了其他属性。
-a
指令的选项是可以连起来用的,可以 ls -a -l 这样分开来 也可以 ls -al 这样两个选项连起来
加了-a选项后,可以发现多了连个文件 . 和 .. 这两个文件分别指代当前目录和上级目录,前缀是 . 开头的文件是隐藏文件,而选项 -a 的效果就是将隐藏的文件也显示出来。
-d
这两个文件中next是目录文件,one是普通文件。
可以看到,在ls指令后面加上文件,如果是普通文件那就是单独显示该普通文件的文件属性,如果是目录文件的话,显示的是该目录里面的文件的属性。
如果想要单独显示该目录的文件属性的话,需要在选项里再加上 -d 。
可以看到现在显示的就是这个目录自己的属性了。
pwd
pwd的功能非常简单,没有别的选项,直接打在命令行上,使用就可以,它的功能是显示,当前目录的绝对路径。
绝对路径就是从根目录为起点,到当前目录的路径。
而相对路径就是以当前目录为起点。
根目录就是最左边的 / ,其他的 / 是文件分隔符。
whoami
这个指令的应用也非常简单,直接输入命令行使用就可以,不带其他的,效果是告诉你当前使用的用户是哪一个。
这个cky就是我创建的普通用户。
cd
cd命令是改变当前所处的目录,也就是想从一个目录到另外一个目录去就是靠的cd命令。
可以看到,原本我们所在的目录为test,绝对路径是/home/cky/test
使用了cd命令后,目录变成了next,绝对路径变成了/home/cky/test/next。
cd命令可以用相对路径和绝对路径两个方法进行改变当前目录,相对路径就是以当前目录为起点,绝对路径就是以根目录 / 为起点,每个文件之前需要有路径分隔符
cd命令还有一些特殊的用法
cd -
cd -效果是跳转到之前所在的目录当中去。
第一次使用cd -是跳转到test目录中,而再用一次就回到了next目录。
cd ~
cd ~是直接跳转到家目录当中去,每一个用户都有不同的家目录。
我现在使用的是普通用户,普通用户的家目录在/home/该用户的用户名
改成root账号试一下,root账号的家目录的位置和普通用户是不一样的。
可以看出来root账号的家目录是直接放在根目录当中的。
touch
touch是创建普通文件的指令。
格式
touch 文件名
touch new之后就多了一个文件 new
mkdir
mkdir是用来创建目录文件的,使用方法和touch一样
mkdir temp 后多了一个目录文件temp
要想分辨目录文件和普通文件可以看文件的属性。
ls -l可以显示文件的大部分属性,从左边开始最开头的字符就表示这这个文件的类型,现在只知道两种类型,目录文件和普通文件
- 就是普通文件。
d 就是目录文件。
mkdir也可以一次性创建多层目录结构
-p
可以看到mkdir -p直接创建了一串目录,每个目录中间需要有文件分隔符。
tree
tree命令安装:
yum install -y tree
格式 tree 目录文件名
可以让该目录下的文件以树状图形式显示出来
rm
格式:
rm 文件名
rm可以用来删除文件,普通文件和目录文件都可以
-r
要删除的目录当中有文件的情况下,删除时不被允许的,这时候就需要用到这个选项,rm -r删除目录文件的时候,会连带这个目录当中的所有文件一起被删除。
-f
在一些情况下删除文件,会跳出来一个问题,询问你是否删除该文件,是在命令行输入 y,否在命令行输入 n
加上这个选项就可以避免每删除一个文件就要问一遍的情况。
-i
加入这个选项可以让系统在你删除文件时询问你是否删除
*
* 这个符号是一个通配符,可以和许多指令配合使用,用rm在作例子
rm -rf *.c 表示的是最后是以.c为结尾的文件都删掉,不关心你前面的
rm -rf test* 表示的是开头以test开始的文件都删掉,不关心后面的。
man
man 是用来查询指令和系统调用,c语言函数等使用方法的命令
man 查找的手册分为好几部分,但是常用的只有 1,2,3这三个手册
man的使用方法:
man 几号手册 指令/函数/系统调用接口。(几号手册可加可不加,加了就是指定在这个手册查找,因为不同的手册可能会有同名的指令/函数/系统调用,不带几号手册,就按顺序来,从一号依次递增)。查好之后直接点击 q 就退出来了
echo
echo 字符串 >/>>(重定向标识符) 文件名
echo指令可以把后面跟着的字符串原封不动的打印到显示器上。
同时如果加了重定向标识符和文件名则不会再打印到显示器上,而是打印到指定的文件里面,当该文件不存在时,则会创建该文件。
>一个符号代表覆盖重定向,会将该文件里原本有的内容给覆盖掉,再打印这个字符串。
>>两个符号是追加重定向,直接打印在该文件内容的后面
echo会在输出字符串后面自动换行
cat
格式:
cat 文件名
cat 可以显示文件的内容,里面写了什么
-n
可以对内容进行编号
cp
格式:
cp 被拷贝的文件名 拷贝到的文件名
cp指令可以将一个文件完整的拷贝一份出来,不过需要注意的是,拷贝到的文件入果不存在,会新建一个文件,如果存在,则会被覆盖。
如果不想拷贝到当前目录下,而是其他路径下,可以将拷贝到的文件名改成相对路径或者绝对路径。
-r
拷贝普通文件不需要用到这个选项,-r代表的是递归的意思,在拷贝目录文件的必须用上这个选项,不管目录里面是否有文件。
-f
这个选项可以让拷贝文件时不询问是否拷贝或者覆盖
-i
这个文件可以让拷贝文件时询问是否拷贝或者覆盖
需要注意的是 当 -i 和 -f 同时使用的时候,-i的优先级比较高。
如果是root账号建立的文件,可能不会按照选项来执行,因为root建立的文件有一定的特殊性。
mv
mv指令有着重命名和剪切两个功能
使用格式:
mv 原文件/原文件名 目标文件/新文件名
mv指令如果只是在当前目录下使用,那就是只有重命名的功能
实际上原文件和目标文件这两个文件都是可以用绝对路径或者相对路径来表示的,可以将一个路径的文件放到另外一个路径下,如果在目标文件还写了文件名就成了既剪切又重命名的功能,没有文件名就是单纯的从一个路径剪切到另一个路径,文件名不变。
如果目标文件已经存在的普通文件话,那么就会覆盖该文件
如果目标文件是一个已经存在的目录,那么不会将原文件覆盖,而是会将该文件放到该目录下面。
alias
alias可以取别名
例子
alias tmp =‘ls -a -l’
这样tmp就等同于 ls -a -l 了
ll 就是取别名来的。
more
more适用于大文本,查看文件时,默认最多打印一屏幕的内容,摁回车键可以往下继续翻。
less
less可以说是more的上级,拥有less所有的功能,并且可以进行上翻和查找
格式:
less 目标文件
使用方法:
?数字 是往上查找
/ 数字 是往下查找
上翻和下翻分别上朝上的箭头和朝下的箭头
q 直接退出
head
head可以查找一个文件前n行的内容:
格式:
head -n 目标文件
n也可以不输入,默认显示前n行的内容。
tail
tail可以查找一个文件倒数前n行的内容:
格式
tail -n 目标文件
n也可以不输入,默认显示倒数前n行的内容。
data
data是一个用来查看时间的指令
使用方法
data +%s 查看时间戳
data -d@时间戳 查看这个时间戳对应的日期
时间戳是 一个单项递增的时间,从1970年一月一日开始计数,各个地区由于时差的原因会有些许差别。
find
find -name可以用来在目录下查找指定文件。
格式:
find 目录文件 -name 需要查找的目标文件
find查找也可以用通配符 * 来查找以某些字符开头或结尾的文件。
同时,find命令也会受权限的约束,只有在自己的家目录下才能不受约束的查找,或者用root账号。如果用普通用户去查找其他用户的家目录就会出现 permisssion denied。
之后可以通过修改权限的方式来取得查找的权限。
whitch
格式:
whitch 指令
whitch可以查找指令的路径
grep
grep是一个行文本过滤,用来过滤文件的内容
效果:
可以指定一个文件搜索一个字符串,只要文件里面的行包含这个字符串,就把那些行打印在屏幕上
格式:
grep 【选项】字符串 目标文件
目标文件可以有多个,当有多个目标文件的时候,输出时还会把文件名一起打印出来
grep也可以和管道一起用,用了管道就不再需要目标文件了。
-v
这个选项可以将grep原本的功能反过来,也就是打印那些不包含这个字符串的行。
-n
这个选项可以在输出到屏幕上的时候同时打印行号
-i
这个选项让那个字符可以忽略大小写
-R
使得目标文件可以是目录,查找该目录里面的所有文件
zip/unzip
zip是压缩文件的指令,unzip是解压缩文件的指令
格式:
zip 压缩后的文件名.zip 目标文件
如果不加选项的话,zip默认只压缩目标一个文件,如果目标文件是目录且目录里面有文件,就会遗漏下里面的文件
zip -r 压缩后的文件名.zip 目标文件
带上这个选项后就可以压缩目录里的文件里
unzip 压缩文件
不加任何选项的话默认解压缩到当前文件。
unzip 压缩文件 -d 路径
这样就可以解压缩到指定路径了。
zip/unzip的安装方法
yum install -y zip unzip
tar
tar的用法太多,就只举例三个
tar czf 压缩后的文件名.tgz 目标文件 可以压缩文件
tar fzf 压缩文件 可以预览压缩包里的文件
tar xzf 压缩文件 -C 指定路径 可以解压缩文件到指定路径,不带C和路径默认解压缩到当前路径
选项的缩写都有各自的含义
c 建立一个压缩文件的参数指令(creat的意思)
x 解开一个压缩文件的参数指令
t 查看压缩文件里的文件
z 具有gzip的属性,用gzip来压缩
f 给压缩文件命名,这个参数一定要加在最后面,直接接压缩文件名。
bc
直接输入这个指令就可以打开linux自带的计算器
使用quit退出
也可以重定向数字字符串到管道,再交给bc
例:
echo : ”1+2+3“ | bc
会直接将运算结果打印在屏幕上。
uname
uname可以获取电脑和操作系统的相关信息,详情往上查就行
history
记录最近使用的1000条命令
chmod
文件的修改需要用到一个指令chmod
格式 chomd 修改权限 目标文件
chmod修该权限有两种方法
例1:
chmod u+rwx,g+rwx,o+rwx 目标文件
chmod a+rwx 目标文件
u表示拥有者的权限,g表示所属组的权限,o表示其他人的权限。
+ 表示加上权限
- 表示减去权限
a 是all 一次性修改拥有者,所属组和其他人的权限。
例2:
chmod 777 目标文件
这三个数是八进制数
第一个数代表着拥有者的权限
第二个数代表着所属组的权限
第三个数代表着其他人的权限
将一个7的八进制数分解为二进制:
111
可以看到是三个二进制,刚好可以对应三个权限。第一个二进制是读权限,第二个二进制是写权限,第三个二进制数是执行权限,1表示的就是拥有对应的权限,也就是说,拥有者和所属组以及其他人的权限也可以这样对应,所有就可以用三个八进制数来控制对应的权限。