加载页面中...
Linux常用命令 | lwstkhyl

Linux常用命令

Linux常用命令

写在前面:此笔记是对之前txt版笔记的整理总结

基础知识

主要的文件夹

  • 根目录/,所有文件都在它里面

  • 用户工作目录/家目录/主目录/home/user,其中user为用户名,每一个用户都会对应一个user文件夹;这个目录也是打开文件图标默认显示的目录

  • /bin/usr/bin:可执行二进制文件,包含Linux中常用的一些命令

  • /etc:当前系统内的配置文件,不建议在此目录下存放其它文件

  • /root:拥有最大权限的目录,一般用户不能对其进行操作

打开终端的方式

  • 右键->在终端中打开

  • 点击屏幕左侧的终端图标

  • CTRL+alt+t

终端命令格式command [-options] [parameter]

  • command:命令

  • -options:选项(可选,可以是多个),通常以-开头

    注:如果有多个选项-r -f -l,可以简写成-rfl,通常选项的顺序不影响结果

  • parameter:参数(可选,可以是多个),通常没有-

终端中的快捷键

  • CTRL+l:清屏,即清除终端上的已经执行过的命令行。也可使用命令clear

  • tab:自动补全,包括命令和文件名称。如想删除一个名为2.txt的文件夹,当当前目录下只有它是以2开头时,就可以输入rm 2后按tab键,就能自动补全。如果有多个项目都以输入的文字开头,按tab就会列出所有以该文字开头的项目

  • 上下键 :查看之前写过的指令

  • CTRL+shift+c复制 CTRL+shift+v粘贴

  • CTRL+c:在终端中停止正在执行的进程

  • CTRL+shift+=调大终端窗口大小 CTRL+shift+-调小

    注:有些系统中使用CTRL+-调小

常用命令

查询一个命令的使用方法和存放位置

使用方法:

  • man 命令名称

    打开查询界面后,按回车会往下翻一行,空格翻一屏,f显示下一屏,b显示上一屏,q退出查询界面,想要在查询界面搜索某内容就输入/想查的内容,例如输入/-l,会将查询界面中所有-l显示高亮(注意/是主键盘右下的,不是小键盘上面的)

  • 命令名称 --help

    有的命令使用这种方式查询时会显示中文

# 查询ls命令
man ls
ls --help

存放位置:which 命令名称

显示文件和目录

  • pwd:查看当前所在目录

  • tree:以树状图列出当前目录的内容(包含的文件),若想查看当前路径下某文件夹的内容,就在后面直接加上文件夹名

    例如在主目录文件夹中打开终端,输入tree snap,就是查看主目录中snap文件夹包含的文件

  • ls:以列表方式列出当前目录的内容

    显示的文件名有不同颜色:蓝色–目录,白色–文件,绿色–可执行文件,红色–压缩包

    • ls -a:显示所有文件(包含隐藏文件,以.开头)

    • ls -l:以更详细的方式显示文件

    • ls -h:用K/M显示文件大小,一般与-l联用,即ls -l -h/ls -lh

      从左往右的列分别为:类型的描述、文件权限、硬链接数、文件所属的用户、文件所属的组、文件大小、修改时间、文件夹名称

      ls

      • 类型的描述:开头的第一个字母,分为-文件、d目录、l链接文件

      • 文件权限:第2-9个字母

      • 硬链接数:该文件有几个快捷方式

      • 文件大小默认以字节为单位

切换工作目录

cd 绝对/相对路径

  • cd .:打开下级目录(只能在当前文件夹中只有一个文件夹时使用)

  • cd ../cd ../:打开上级目录

  • cd/cd ~:直接回到主目录

  • cd /:打开根目录

  • cd -:表示返回上一次打开的目录

创建目录

  • mkdir 文件夹路径

  • mkdir -p 文件夹路径递归创建

例如:

  • mkdir test:在当前目录下创建一个test文件夹

  • mkdir ./test/a:就是在当前目录的test文件夹内创建a文件夹

  • mkdir -p a/b/c:在当前目录下创建一个a,再在a里面创建一个b,最后在b里面创建一个c

创建和打开文件

  • 创建文件:touch 文件路径

    例如:

    touch 1.txt:在当前目录下创建一个名为1的txt文件

    touch 2.txt 3.txt 4.txt:一次性创建多个文件

  • 打开文件:gedit 文件路径,使用方法同上

    文件关闭前不能继续在该终端下写其它内容,注意该指令不在所有Linux系统中通用(如sendos就没有)

删除文件和文件夹

rm 文件路径:删除之后不能恢复(用终端指令删除不会经过回收站),例如rm 1.txt

  • rm -i:在删除前有个提示,让你再次确认是否删除,输入y继续删除,输入n不删除

    注:这个提示在sendos系统中是默认有的,但在Ubuntu中没有

  • rm -f:强制删除,在任何系统中都不再提示是否删除

  • rm -r:递归删除一个文件夹及其中的所有内容

拷贝

cp 源文件路径 目标文件路径

cp 2.txt test2  # 把2.txt拷贝到test2文件夹内
cp 2.txt test2/2.txt  # 把2.txt内容覆盖拷贝到test2里的2.txt内

注:如果test2中已有2.txt,则会覆盖;如果没有2.txt就创建一个并拷贝内容

  • cp -i:如果需要进行覆盖会提示一下,也是y覆盖、n不覆盖

  • cp -f:强制覆盖不提示

  • cp -v:显示拷贝过程,如cp -v 2.txt test2时会多显示一行'2.txt'->'test2/2.txt'

  • cp -r:递归拷贝(想拷贝的是一个文件夹时使用),如cp -r test2 test1就是把test2里面的文件拷贝到test1文件夹内

  • cp -a:通常在拷贝文件夹时使用,保留权限、属性等

移动文件和文件夹

mv 源文件路径 目标文件路径

mv a/2.txt .  # 把a文件夹中的2.txt移动到终端目录下内
mv 3.txt 2.txt  # 把3.txt重命名为2.txt

注意:mv移动时也是默认覆盖同名文件

  • mv -i:如果需要进行覆盖会提示一下,也是y覆盖、n不覆盖(若选择不覆盖则不会执行移动操作)

  • mv -v:显示移动过程

  • mv -f:强制覆盖不提示

注:mv没有-r操作,可以直接移动文件夹,如mv test1 a/test1/mv test1 a就是把test1文件夹移动到a文件夹中,注意是移动整个文件夹而不是只移动其中的内容,结果是a中会有一个test1文件夹与原test1文件夹相同

显示日历/日期

  • cal系列:显示日历

    • cal -3:显示上个月这个月下个月的日历

    • cal -y:显示这年的日历

    • cal -j:以“今年的第多少天”形式显示日历

    • cal 年份:显示该年的日历,例如cal 2000就是显示2000年的

  • date系列:显示日期、星期、时间

    • date "+%Y":显示是哪年

    其中%Y还可以替换成%m月、%d日、%H时、%M分、%S秒、%F年-月-日、%T时-分-秒,中间还可以加其它字符

    date "+%Y年" #  2023年
    date "+%Y年%m月" #  2023年9月
    date "+%Y%m" #  202309
    date "+%F" #  2023-09-02
    date "+%F %T" #  2023-09-02 12:30:47
    

查看历史指令

  • history n:(n为整数)显示最近n条历史指令

  • !n:(n为整数)执行编号为n的历史指令

history #  最近30条历史指令
!805  # 执行编号为805的历史指令

查看或合并文件内容

cat 文件路径:直接把文件内容输出到命令行中,而使用gedit命令打开文件时会阻塞

  • cat -n:在文件内容前显示行数(编号),包括空行

  • cat -b:在非空行前显示行数,注意这里不会给空行进行编号,12345只从非空行开始写

  • cat -s:把两行及以上的空行合并成1行显示

注:可以添加多个文件路径,同时打开,例如cat 1.txt 2.txt就是把1.txt2.txt中的内容一起显示出来,若添加编号选项也会连续编号

分页查看文件内容

more 文件路径:每次只显示一页(当文件内容很多时,会出现快速滚屏,无法看清文件内容)

相关按键

  • 显示下一页:空格键/CTRL+f/f可以

  • 往下翻一行:回车键

  • 后退一页:CTRL+b/b

  • 退出显示:q

命令参数

  • more +5:从第5行开始显示文件内容

  • more -p:先清屏再显示文件内容

  • more -s:把两行及以上的空行合并成1行显示

注:more 1.txt 2.txt也可以一起显示两个文件,但与cat不同,more会在显示的内容前标注文件名

关机重启

  • rebootshutdown -r:重启

  • shutdown 15:10:在15:10关机

  • shutdown +20:20分钟后关机

  • shutdown -h now:立刻关机

  • shutdown -c:取消关机

  • 尽可能少用关机指令

  • 执行这些关机或取消关机的命令时,会给其它用户发送提示

进阶操作

数据流和管道命令

输入流:从键盘或文件中读取内容到内存中

输出流:从计算机内存中把数据写入到文件/显示器上

重定向:改变数据流原来的默认走向,有两种方式

  • 命令 > 文件:将命令输出内容覆盖写到文件中

  • 命令 >> 文件:将命令输出内容追加写到文件中

例如echo "abc"会在命令行中输出”abc”,而echo "abc" > 2.txt会把”abc”写到2.txt内(覆盖原内容),并且命令行中不会显示”abc”;echo "abc" >> 2.txt不会覆盖,会在文件原最后一行的下一行接着写”abc”

其它有输出的命令也可以使用>>>,例如ls -l > ls.txt就是把ls -l在终端中输出的内容写到ls.txt中


管道命令指令1|指令2|指令3...,将指令1的输出信息,输入给指令2,再把指令2的输出给指令3,以此类推

例如,ls -l /可以显示根目录文件信息、more后面加上文件内容可以让其分屏显示,则ls -l / |more就可以把根目录信息分屏显示

链接

类似于Windows下的快捷方式,分为软链接硬链接

对于一个文件,在系统中有一块区域存储其中的内容,而打开这个文件就是通过文件名来找到这块存储区域的过程:

  • 软链接:建立一个快捷方式,它通过指向文件名来访问存储区域,删除这个快捷方式对文件无影响;软链接大小与文件大小不同

  • 硬链接:给一个文件起多个名字,每个文件名都指向这块存储区域,如文件名原为2.txt,给它创建硬链接3.txt4.txt,此时删除2/3/4.txt中的任意一个对文件都无影响,只有当最后一个文件名被删除时,该文件才被彻底删除;硬链接大小与文件大小相同,当然这个相同指的是查看文件大小时输出相同,该文件仍然只有1份,不是将这个文件复制了多份

也可以说:

  • 软链接相当于Windows里面的快捷方式

  • 硬链接相当于一个指针,它指向文件的存储区域。删除硬链接就是删除指针,当最后一个指向某块内存的指针被删除时,该内存将被释放(文件被删除);如果还有其它指针指向,那么删除其中一个指针对这块内存(文件)无影响。查看大小就是查看指针指向的内存大小

其它区别

  • 软链接可以跨文件系统,而硬链接不行

  • 软链接可以对一个不存在的文件进行链接,而硬链接不行

  • 软链接可以对目录(文件夹)进行链接,而硬链接不行

  • 删除源文件后,软链接不能使用,而硬链接仍可使用

创建方式ln命令

  • ln 1.txt h1.txt:给1.txt创建名为h1.txt的硬链接

  • ln -s 1.txt s1.txt:给1.txt创建名为s1.txt的软链接

新创建的链接可以像一个普通文件一样使用,例如cat s1.txt

文件搜索

grep命令:在shell-base中已经介绍过

find命令find 文件路径 选项 参数

  • find ./ -name 1.txt:在当前目录下查找名为1.txt的文件(包括目录中的文件夹内)

  • find ./ -name '*.txt':查找所有后缀为txt的文件(与正则表达式配合使用)

  • find ./ -size +15M:查找大于15M的文件

  • find ./ -size +15M -size -30M:查找15-30M的文件

  • find ./ -perm 777:查找权限为777的文件或目录

归档和压缩

压缩:把文件中相同的信息用一个字符代替,使文件占用空间变小

归档:把一些文件放在一起成一个包,不进行压缩操作

.tar/.tar.gz:”.tar”是归档文件名的固定后缀,”.tar.gz”就是既归档又压缩

  • tar -cvf 归档文件名 文件1 文件2...:把指定文件归档,归档后原文件不删除。例如tar -cvf 2-3.tar 2.txt 3.txt就是把2.txt3.txt都放到2-3.tar

  • tar -zcvf 归档文件名 文件1 文件2...:把指定文件归档并压缩。例如tar -zcvf 2-3.tar.gz 2.txt 3.txt

  • tar -xvf 归档文件名 -C 目录:将归档文件解档至指定目录(也可不指定),原文件不删除。例如tar -xvf 2-3.tar就是把2-3.tar解档至当前目录

  • tar -zxvf 归档文件名 -C 目录:将归档并压缩的文件解档至指定目录。例如tar -zxvf 2-3.tar.gz -C a就是把2-3.tar.gz解档后的文件放到a文件夹下

.zip:另一种压缩格式

  • zip -r a.zip a:把a文件夹压缩到a.zip中,若只是压缩文件则不需加-r(表示递归压缩),原文件/文件夹也不会消失

  • unzip a.zip -d test:把a.zip解压到test目录下,也可不指定路径

在这两种压缩方式中,.tar.gz压缩后的文件最小,因此更常用

软件的安装和卸载

  • 源代码安装make install 源代码安装包

    优点:可以根据实际配置安装,性能好,最稳定

    缺点:用源代码编译很麻烦

  • dpkg安装deb包sudo dpkg -i xxx.deb

    优点:安装包可以通过直接运行的方式来安装

    缺点:存在包依赖的问题,需要手动下载很多安装包

  • apt-get方法(最常用):sudo apt-get install xxx

    是最简单方便的安装方式,系统自动下载安装,但必须要有软件源(联网或搭建软件源)

以下介绍apt-get方法

更换默认下载源

  • 对原下载源进行备份:sudo cp /etc/apt/sources.list sources.bak2

  • 访问Ubuntu清华镜像站,选择Ubuntu版本,将下面代码框中内容复制

    更换默认下载源

  • 打开下载源文件:sudo gedit /etc/apt/sources.list,CTRL+a全选,CTRL+v粘贴

  • 更新源:sudo apt-get update

例:vim的安装和删除

  • 安装:sudo apt-get install vim

  • 删除:sudo apt-get remove vim

文件权限与用户管理

文件的权限

显示文件和目录中提到,ls -l方式可以更详细地展示文件,其中的文件权限由9个字母表明,如rwxr-xr-x,它可以分成三组:

  • 第一组rwx:文件拥有者的权限

  • 第二种r-x:文件所属组的权限

  • 第三组r-x:其它用户的权限

每组3个字母的含义

  • r:可读

  • w:可写

  • x:可执行(可以在终端中运行)

在Linux中,每创建一个用户时,都会创建一个与用户同名的组,该用户可以把其它用户拉进他的组里面

文件拥有者:创建这个文件的用户,对该文件有最高权限。假设用户abc在一个组内,a为该文件的拥有者,则bc对该文件的权限就是文件所属组的权限,而不在该组内的用户就是其它用户的权限

规定:用u表示文件拥有者,g为同组用户,o为其它用户,a为所有用户

修改权限

chmod 操作 文件路径

其中操作参数由三个字母组成:

  • 第一个字母:更改谁对该文件的权限,取值为上面提到的u/g/o/a

  • 第二个字母:+增加权限/-撤销权限/=设定权限

  • 第三个字母:r/w/x(如果前面是=,这里应是三个字母,设定权限是设定一个完整的权限)

对于一个文件夹,添加-R参数可以让其中的文件都获得相同的权限

:操作参数也可以写成3个数字,表示设定完整的权限,每个数字对应着权限9个字母中的3个

  • r:4

  • w:2

  • x:1

  • 无权限:0

把3个字母代表的数字加和,就得到完整权限对应的数字。例如:rwx-7、r-x-5、r---4、----0、rw--6

chmod u+x 2.txt  # 把拥有者对2.txt文件增加可执行的权限(常用)
chmod a=r-x 2.txt  # 把所有人对2.txt文件的权限设为r-x
chmod 755 2.txt  # 设定权限为rwx r-x r-x
chomd u=,g=,o= 2.txt  # --- --- ---
# chmod u=7 2.txt  # 不能这样写
chmod 777 a  # 修改文件夹a的权限为rwxrwxrwx
chmod 777 -R a  # 修改文件夹a和它里面文件/文件夹的权限为rwxrwxrwx

root权限

是Linux系统的最高权限,很多操作(如安装应用、在根目录下增删改文件等)都需要root权限

  • sudo 命令:在执行该命令时临时提升权限。例如sudo touch /1.txt就可以在根目录下创建文件

  • sudo -s/su root:永久提升权限(之后在该终端执行的所有命令都将获得root权限)

    特征:命令行前缀由用户名变为root、/$变为/#,就是切换到了root权限

    输入su 用户名可以切换回原来的用户

注:提升到root权限时都需输入密码。正常情况下可以使用backspace来删除输入的字符,有时要使用CTRL+backspace;如果要全部删除,可以尝试esc+backspacectrl+u


修改用户密码和root密码:

  • sudo passwd:设置root密码

  • passwd:修改当前用户的密码(就是锁屏时候输的密码)

  • passwd 用户名:修改指定用户的密码

注:root权限下修改用户密码时,不需要输入root密码

退出登录

exit

  • 如果是在终端中使用默认用户,且也没切换过用户,输入exit就是退出终端

  • 如果登录过其它用户,输入exit就是返回上一个用户。例如使用a用户获取了root权限,又切换到了b用户,此时输入exit就是返回root用户,再exit会返回a用户,再exit就是退出终端

    可以看成是一个栈的结构(先进先出,后进后出),每切换到一个用户就是往栈里加一个元素,当前权限就是栈顶元素的用户权限,exit就是pop出一个元素,直到栈中无元素就退出终端

查看登录用户

who

  • who:显示登录用户、登录时间(最近一次)及IP地址

  • who -q:只显示登录用户及数量

  • who -u:多显示了该用户最近一次操作系统距现在的时间

远程操作

远程登录

在Linux下安装openssh:sudo apt-get install openssh-server

在windows端安装openssh,之后添加环境变量c:/windows/system32/openssh

cmd中输入ssh Linux用户名@LinuxIP地址(例如ssh teacher@1.1.1.1),输入用户密码后即可连接成功

获取Linux系统IP地址:点击Ubuntu中右上角有线已连接->有线设置->网络->有线那栏里面的设置按钮,其中ipv4地址就是Linux系统IP地址

远程拷贝

  • 上传:把Windows上的文件拷贝到Linux上

    在cmd中输入:scp 本地路径 Linux用户名@LinuxIP地址:远程路径(例如scp D:/01.txt xxx@1.1.1.1:/home/xxx/scp_test.txt),输入密码后即可拷贝

  • 下载:把Linux上的文件下载到Windows上

    在cmd中输入:scp Linux用户名@LinuxIP地址:远程路径 本地路径(例如scp xxx@1.1.1.1:/home/xxx/test/ls.txt D:/test.txt),输入密码后即可拷贝

注:上传和下载之前都不必使用ssh登录

vim

vi(visual interface)是Linux内嵌的一种文本编辑程序,可以进行文本操作,但不能改字体、格式、段落等;vim是vi的升级版,在大多数Linux版本里,使用vi默认就是使用vim

vi界面可分为命令文本输入末行三种模式:

  • 命令模式(默认):不能编辑,在左下角显示文件名/没有内容,在其它模式下按esc键可进入

  • 编辑模式:在命令模式下输入i/a/o/c/r/s都可进入,之后用户输入的任何字符都会作为文件内容保存并显示在屏幕上

  • 末行模式(ex转义模式):在命令模式下按冒号:进入,此时在窗口左下角显示冒号,该模式下可以对文件进行操作(如把编辑缓冲区的内容写入文件),执行完末行命令后会自动回到命令模式

具体使用:在终端中输入vi 1.txt,若存在就打开,不存在则创建

大体操作流程:进入编辑模式->在里面输入内容->输入完成后按esc回到命令模式->再按:进入末行模式,进行保存退出等操作

  • 进入编辑模式的命令

    • i在光标前插入

    • a在光标后插入

    • I在行首插入

    • A在行末插入

    • o在光标所在行的下一行插入一行空行

    • O在光标所在行的上一行插入一行空行

  • 末行模式的命令

    • w表示保存

    • q退出

    • wq保存并退出vi

    • q!强制退出不保存

    • wq!强制保存退出

    例:想要保存并退出,就在命令模式下输入:wq

  • 命令模式

    • 移动光标:可以使用方向键,也可以按键

      • h

      • l

      • j

      • k

      • H屏幕第一行

      • L屏幕最后一行

      • gg文档第一行

      • G文档最后一行

      • M中间行

      • ^行首

      • $行末

      • {向上移动一段

      • }向下移动一段

      • w去下一个单词的首字母

      • b去上一个单词的首字母

      • 翻屏的命令同终端(CTRL+f/CTRL+b向前/后翻屏)

    • 删除内容:

      • x删除光标选中的字符

      • X删除光标前一个字符

      • dd删除光标所在整行

      • ndd删除n行(如2dd就是删除两行,从光标所在行开始删)

      • d删除光标所在行的光标之前的字符

      • D删除删除光标所在行的光标之后(包括光标所在字符)的字符

      • dw删除光标所在的单词(单词间以空格/换行相隔)

    • 撤销:

      • u撤销操作

      • CTRL+r反撤销(重做)

    • 重复指令:.重复上一步的命令

    • 移动命令:>>使光标及其之后的字符向右移动移动距离,<<是向左

    • 复制粘贴:

      • yy复制光标所在行内容

      • nyy复制光标之后的n行(包括光标所在行)

      • p粘贴

    • 替换内容:

      • r替换当前字符

      • R替换光标之后的字符(输入rx就是把当前字符替换成x)

    • 查找:/str,其中str为想查找的字符串(如输入/x后回车,就能找到第一个x),之后

      • n找下一个str

      • N找上一个str

补充:末行模式下也可进行替换(不常用)

  • %s/abc/123/g:把文件中所有的abc替换成123

  • %s/abc/123:只替换每行第一次出现的abc

  • 1,3s/abc/123/g:就是把1-3行的abc替换