即list,查看当前目录下都有哪些文件和目录。
ls /表示查看/这个目录下都有哪些文件和目录,/称为根目录,相当于Windows上的此电脑,Linux中没有盘符,所有的目录和文件都是在/目录下的。
但ls /列出的内容不方便看,我们用ls -l /可以让列出的内容按照列表的方式显示。
ls -l /(-后面的是小写L)。
ls -l也可以写成ll(两个小写L)。
即change directory,切换当前目录。
cd /etc/就会进入到etc目录中,etc目录里放的是各种程序的配置文件。
使用cd命令时,需要加上路径的时候,可以手动打几个字母然后按tab键来补全路径,但前提是当前输入的路径是唯一的选项,如果有多个匹配的目录名字/文件名字,按tab就不能补全了,按两次tab就可以列出所有可以补全的选项。
在Linux命令中,凡是涉及到目录相关的操作,都可以支持绝对路径和相对路径的写法,Linux上的绝对路径以/开头(/开头表示从根目录开头)。相对路径以.或…开头(有时候.可以省略),.表示当前目录,. .表示当前目录的上一级目录。
root@VM-8-3-ubuntu:/etc/apt# cd . .表示回到当前目录的上一级目录。
root@VM-8-3-ubuntu:/# cd etc/apt/这是相对路径的写法,表示跳转到apt目录。
root@VM-8-3-ubuntu:/# cd /etc/apt这是绝对路径的写法,表示跳转到apt目录。
cd后面不带参数直接按回车键,就可以让当前目录会到主目录(即回到~目录)。
查看文件内容(把文件内容打印到控制台上)。
cat test.txt
打印内容到控制台上。
echo 'hello’回车后就会在控制台中打印hello。
执行以下命令:
echo ‘hello’ > test.txt
cat test.txt
原来test.txt里的内容为空,echo ‘hello’ > test.txt后test.txt里就有hello的内容了,>是重定向的意思。cat test.txt就可以看到控制台中打印hello。
再写echo ‘hi’ > test.txt,test.txt里的内容就变成hi了,即清空之前的hello然后往test.txt写入hi。
写成>>才会在原有的文件内容上追加,比如echo ‘big’ >> test.txt,则控制台会打印hi和big。
echo+重定向的方式只能写一些简单的字符串内容,如果需要写很多内容,这时使用echo就不太方便了。如果文件里的内容很多,使用echo也不方便修改内容。这时就要使用vim命令。
vim是Linux上自带的一个文本编辑器,与echo相比,使用vim可以更灵活地对文件进行编辑。虽然vim和记事本的定位差不多,但vim的使用要比记事本复杂很多。
后续我们使用服务器的时候,经常会在服务器上查看日志,修改配置等,这些操作都可以通过vim来进行完成。
(1)打开文件,vim 文件名。
vim test.txt
(2)编辑内容。
vim包含很多快捷键,这些快捷键和其它软件的快捷键有很大的区别,其它软件的快捷键都是搭配ctrl、alt之类的组合键完成,而vim更期望输入单个按键就能起到快捷键的效果。
于是vim引入了“模式”这样的概念,进入vim界面之后,默认处于normal mode(普通模式),这时键盘按键都是快捷键而不是输入文本。这时按键盘不能输入文本。
要想输入文本就需要进入insert mode(插入模式),进入插入模式的方法有很多,最简单的方法是在键盘输入i。
键盘上按下i之后,vim界面下方原来的"test.txt" 2L, 8C就变成了-- INSERT --,这是我们在vim界面中就能输入文本了。
(3)保存退出。
先按esc让vim回到普通模式(esc多按几次也行,vim回到普通模式后vim界面下方的-- INSERT --就会消失),再按:(即shift+;)进入命令模式,然后光标就会来到vim界面的最下方,接下来我们要输入的内容就是vim的命令,按wq(即write(保存)、quit(退出)),就可以保存文件中的内容并退出vim回到Linux命令行页面上。
在Windows上ctrl+s是保存,但在Linux上ctrl+s是冻结屏幕的意思。之所以有冻结屏幕这个功能,是因为有时服务器打印日志打印得太快了,日志滚动得太快看不清,这时我们可以冻结屏幕以方便我们观察日志的内容。ctrl+q可以解除冻结屏幕。
即make directory,创建目录。
mkdir aaa
mkdir -p bb/cc/dd/ee/ff,创建多级目录。
即remove,删除文件或目录。
删除文件:
rm test.txt
删除目录:
删除目录不仅仅是删除目录本身,还要删除目录中包含的其它目录和文件。这时需要使用rm -r(-r表示递归)。
rm -r bb/。
有的系统删除时会给出是否确认删除这样的提示,如果删除目录过程中每递归一次就需要确认一次,这会比较麻烦,这时我们可以用rm -rf(f表示强制删除不需要确认)。
而在Ubuntu上用rm -r也表示的是强制删除(即不用加f也表示强制删除)。
即remove,移动(剪切,粘贴)。
写法:mv 要移动的源 要移动的目标。
mv test.txt aaa/,把test.txt文件移动到aaa/目录下面。
类似地:
mv ccc/ bbb/,把ccc目录移动到bbb目录下面(会把目录里面包含的所有内容都进行移动)。
mv命令顺带的功能(针对文件或目录进行重命名):
mv test.txt …/123.txt,把test.txt文件移动到当前目录的上一级目录的同时可以将文件改名(一边移动一边改名字)。
mv 123.txt 456.txt,单纯在本目录下移动,则只有重命名的效果。
mv操作移动的无论是普通文件还是目录文件,移动的时间复杂度都是O(1)。
即copy,复制(复制,粘贴)。
写法:cp 要复制的源 要复制的目标
cp 123.txt 456.txt,在本目录下复制文件,则在复制的同时对复制得到的文件进行改名字。
上面是拷贝文件,下面是拷贝目录:
拷贝目录的时候和rm类似,要加上-r选项,表示要递归地拷贝目录里的内容。
cp -r ddd/ eee,在本目录下复制目录,则在复制的同时对复制得到的内容进行改名字。
查看命令手册。
man mkdir,就可以查看到mkdir命令各方面的内容(用法)。
按q退出查看命令手册,回到Linux命令行界面。
字符串匹配或查找,比如查找某个文件中是否包含某个关键字、这个关键字在第几行。
以下为在123.txt文件中找bbb,在控制台中打印了bbb则说明找到了:
grep不仅可以在文件中查找,还能搭配其它命令完成更复杂的操作,比如ps搭配grep来使用。
即process show(展示进程),显示出当前系统上都有哪些进程。
我们敲下的每一个Linux命令自身也会形成一个进程来去执行,比如直接敲下ps然后回车,会看到有一个ps的进程。
直接敲ps然后按回车只会看到当前会话(终端)对应的进程,这是非常不全面的。
用ps aux就可以看到当前操作系统上包含的所有进程,进程太多了不方便我们观看,通常我们会用ps搭配grep来使用。
比如我们想查找某个特定进程的进程pid:
ps aux | grep mysql,查看mysql进程的进程pid,|叫管道,把前一个命令的输出变为后一个命令的输入,本身grep是从文件中进行查找,但现在我们是把pa aux的结果通过管道的方式导入到grep命令里,这时grep就可以针对pa aux的结果进行查找了。
58068就是mysql服务器进程的pid,mysqld是mysql服务器进程的名字。
第二行为grep命令本身形成的进程,这个进程也会被ps获取到。
ps搭配grep来使用,不仅可以通过进程名来查pid,也可以通过pid来查进程名。
查看网络信息(查看某个进程对应的网络信息情况),可以用来查看某个端口是否被某个进程使用,也可以查看某个进程使用了哪个端口。
敲netstat按回车,列出的信息不是很完整。
因此我们也会经常用netstat -anp这样的方式来查看更完整的信息。
列出的内容中,与下方的unix域套接字相比,我们更关注的是上方tcp、udp所涉及到的网络信息。
netstat搭配grep使用,比如: