Shell命令(Linux操作命令笔记)

前言

Linux的一切命令都是本质都是一个个可执行文件,只是由于系统通过shell解释器帮我们找到了对应的可执行文件,致使我们可以通过输入一个简单命令来执行对应的可执行文件。因此这些命令也称为shell命令。讲到shell,可能很多人疑惑bash和shell的关系。其实bash全称是Bourne Again shell,是shell的一种,也是Linux中默认和最常用的一种shell。
比如输入:

ls

系统会自动找到以下目录中的可执行文件ls。

/bin/ls

如图:
在这里插入图片描述

Linux命令查询器

中文网页版: LZL在线工具

https://www.lzltool.com/LinuxCommand

系统内英文官方版方式一:
用help,例子如下

ls --help

系统内英文官方版方式二:
再man中查找,例子如下

man 1 ls

注:man 1 指的是manual的page1,这一页记录了许多shell命令的用法。

Linux的字母大小写

Linux的文件以及命令指令都是区分大小写的,这点和window系统完全相反。
比如,在Linux下面,a和A可以是两个截然不同文件夹。但在window中,a和A是只能是同个文件夹,系统并不帮你区分。

Linux的几个特殊案件(ctrl + …)

  • ctrl + c:终止当前进程。
  • ctrl + d:像关于exit,可以理解为关闭当前终端。
  • ctrl + alt + t:调出终端。
  • ctrl + z:将当前运行的程序放到后台。
  • ctrl + s:暂停运行终端,就是你按了这个组合之后,你的终端就卡死了(我误按了好多次。。。)。
  • ctrl + q:恢复终端运行,解决误按ctrl + s的方案。
  • ctrl + l:清理终端,相当于clean命令,按了之后终端就干净如初。
  • ctrl + u:撤回输入,相当于window系统下的ctrl+z。

下载和卸载

download: sudo apt-get install ...
notes:1、下载的软件存放路径是"var--cache--archives"
2、yum install也是一个下载命名,但用在Redhat系列的系统上的。本文用的是Debian下的Ubuntu系统。
unload: sudo apt-get clean ...

软件更新

sudo apt-get update  
mean:从服务器获取软件列表,并在本地保存为文件。
sudo apt-get upgrade
mean:本地安装软件与本地软件列表对比,如本地安装版本低,会提示更新。
note:提示更新之后,输入y(yes)即可更新。

查看空间使用情况

查看磁盘分区表

fdisk -l

查看分区使用情况

df -h

查看文件占用空间使用情况

du -sh [file_name and directory]
mean: disk usage  

查看磁盘挂载情况

lsblk -f
mean: list show block

当前目录所在的位置

pwd
mean: point working directory

查看文件中的内容

cat file_name

查看目录下的文件

ls -l  or ls -al
mean: list show

许多时候我们也会直接用到ls -all的缩写:

ll

重启

reboot 

关机

shutdown now

移动文件

mv file_name directory_name
mean: move

磁盘管理软件

gparted
donwload: sudo apt-get install gparted

查看文件权限

查看当前目录下某个文件权限

ls -l file_name

查看当前目录下所有文件权限

ls -l

修改文件掩码

文件掩码顾名思义,当文件被创建后,其系统分配的权限会被文件掩码抹去一些权限,以根据用户需要保证文件的安全性。下面是修改文件掩码的指令,再修改权限那小节会有例子讲诉文件掩码如何抹去文件权限的。

umask numnber
note: 数字必需是三位数,且每个数字最大是7,最小是0。
eg: umask 666

修改文件权限

chmod xxx <file_name>
mean: change mode xxx
eg: chmod 777 <file_name>
那么file_name的权限为 111(rwx)111(rwx)111(rwx):用户权限,同组用户权限,其他用户权限。
note:111(rwx)->7,110(rw )->6....(二进制转换)
rwx: read write execute

如果懒的计算rwx对应的数字,也可以用加减号来添加和删除权限。不过这会让三个用户同时添加或删除某个权限。

chmod +x <file_name>
chmod -r <file_name>

值得一提的是,用户创建一个文件或文件夹默认权限是:

create a file: (rw-rw-rw-) & (~umask)
create a directory: rwxrwxrwx & (~umask)

其中(~umask)是用于抹去一部分权限的。

删除文件或文件夹

删除一个文件夹:

rm <directory_name> -rf
mean:remove

或者使用以下指令:

rmdir <directory_name>

删除多个文件夹:

rm <file_1> <file_2> -rf

删除一个文件

rm <file_name>

删除多个文件

rm <file_name1> <file_name2>

新建文件夹

mkdir directory_name

新建一个文件

touch file_name

移动一个文件夹

mv file_name target_directory
mean:move,将file_name移动到 target_directory
note:这里必须是把文件移动到文件夹,而不能两个都是文件

复制一个文件

cp source_file object_file

比如想把a.c复制并命名为b.c

cp a.c b.c

文件重命名

mv file_name target_file
mean:rename file_name as target_file
note:这里和移动文件夹用的是同一个指令,但参数都是文件,而非文件夹。

编译C和C++文件

编译一个.c文件可用如下方法,但若想编译一个.cpp文件,则把gcc换成g++即可。

gcc file_name.c -o compile_file
note:gcc 是编译的意思,-o是output的意思

同时编译多个文件,并将他们连接起来

gcc file_1.c file_2.c -o compile_file

执行可以执行文件

./compile_file
note:Linux的可执行文件是没有后缀的,并且它的编译和执行是分开的。

一步一步的编译文件

gcc -E file_name.c -o file_name.i		//预处理步骤,生成.i文件
gcc -S file_name.i -o file_name.s		//编译步骤,生成.s文件
gcc -c file_name.s -o file_name.o		//汇编步骤。生成.o文件(二进制文件)
gcc file_name.o -o file_name			//链接步骤,生成目标文件

notes:大小写不能混用

以上是程序编译的四个步骤,当然我们也可以跳步骤编译,系统会自动补上跳过的步骤。比如可以直接跳到汇编步骤,然后再链接生成目标文件。

gcc -c file_name.c -o file_name.o		
gcc file_name.o -o file_name

VIM编辑器的相关操作

:w 		
mean:write but no quit
:q      	
mean:quit without modification
:wq   	
mean:write and quit
:w!    	
mean:force write
:q! 		
mean:force quit but no modify
:wq! 	
mean:force write and quit
:e! 
mean:exit and forgive the modification

查看内容

grep [contents] [file_name]
mean:在file_name这个文件中查看contents并打印到终端来。

查看进程

查看进程的三种方法

ps -a
ps -au
ps -aux
mean: process status

搜索具体的进程

ps -aux | grep [process_name]
ps -aux | grep [the pid of ther process]

杀死进程

kill -9 [the pid of ther process]

echo命令(重定向文件,打印变量)

在test.c文件的第一行写入"hello world"。如果test.c文件不存在则创建它,如果test.c存在但第一行有东西,那就覆盖它前N个字符。其中,N等于"hello world"的字符数量。

echo "hello world" > test.c

在test.c文件末尾添加一句"hello test"。同样如果如果test.c文件不存在则创建它。

echo "hello test" >> test.c

用echo打印变量,比如PATH变量。

echo $PATH

查看进程中线程的数量

先用下面命令查看进程id

ps -aux | grep [..]

再根据进程id查看线程数量

ps -T -p [进程id]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__TAT__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值