Linux——linux常用命令

linux常用命令

一、终端操作

1、Ctrl+Alt+T 打开终端

可以同时打开多个终端,彼此进程相互独立,命令行输入文件名时。
文件名输入头几个字母,按键盘上面的tap键就能自动补全。

2、linux系统路径斜杠问题

在linux系统里面,一个正斜杠(/)通常被用作路径分隔符!
在windows系统里面,一个反斜杠()通常被用作路径分隔符。

3、clear或Ctrl+L清空命令行

4、Ctrl+C强制结束当前命令,返回终端

5、Ctrl+D退出终端/退出当前命令编写

二、文件操作

1、mkdir新建文件夹/touch文件

mkdir newfolder新建一个文件夹
mkdir -p A/B可以直接创建一个不存在的目录下的子目录,其中A不存在,使用-p参数创建,会同时创建A以及其下的B。
touch file新建文件

2、pwd 查看当前工作目录

pwd # 返回/home/username

3、ls高级用法

详细信息:
-l以列表形式显式结果(包含更详细的信息)
子文件(所有文件)
-R递归下面的子文件,也就是文件夹内部的文件
通配符:
ls -l atb*列出当前目录下以atb开头的所有文件/文件夹
隐藏文件
ls -a可以显示该目录下的所有文件(包括隐藏文件)或者在桌面文件夹里面按Ctrl+H显示隐藏文件。
以文件大小进行排序
ls -lhS

4、cd高级用法

cd ..返回上一层目录
.是当前所在目录
cd什么都不加返回用户目录

5、chmod、chown权限

linux下的文件属性一共9个(文件所有者,group用户组,其他用户)每个都是rwx三个权限
r是只读;w是写;x是执行
chmod的可以指定对哪些用户
chmod -a是对所有用户(u是文件所有者,g是用户组,o是其他用户a是all)
chmod a+r file对所有用户增加读权限。
chmod a-x file对所有用户删除执行权限。
可以使用八进制来指定权限,例如7表示rwx。
chmod 777 file是对所有人添加所有权限。
chmod +x sds.sh添加可执行权限,文件所属用户、所属组和所有用户都可以执行这个文件了,默认就是a所有人。

chown:设置文件的所有者
-R递归下面的子文件
chown -R user_name /path/folder将该文件夹及其下面的所有子文件的所有者都设置为user_name
在这里插入图片描述

6、rm 删除文件或目录

rmdir删除空文件夹;若要删除非空文件夹:使用rm命令与-r-rf选项:
rm -rf directory_name可以删除一个非空/空文件夹
-r将文件夹以及文件夹内的所有内容递归删除
-rf 强制删除文件夹及其内容,而不需要确认,不可恢复
rm -rf folder递归删除某个文件夹
注意:
alias rm='rm -i'~/.bashrc中加入这个命令,这样当命令会删除或覆盖时,会提示用户confirm

7、cp、mv、rsync复制、移动、合并文件

cp:复制文件
cp -r test/ newtest 将test/下所有文件都复制到newtest下;-r如果源文件是目录,复制目录下所有文件
cp -i ...... -i选项是提示用户确认是否覆盖已存在的文件。
使用cp从远程服务器上拷贝文件到本地工作站:
首先,在本地工作站上安装 SSHFS(Secure Shell Filesystem)工具,并使用 SSHFS 挂载远程服务器的文件系统到本地目录。这样可以使远程文件看起来像本地文件一样。

sudo apt-get install sshfs
sshfs username@remote_host:/remote/path /local/mount/point # 挂在远程文件系统到本地目录
cp /local/mount/point/remote_file.txt /local/destination/directory
fusermount -u /local/mount/point

或者要从远程服务器上将文件复制到本地工作站,可以使用 scp 命令(Secure Copy Protocol)

scp username@remote_host:/path/to/remote/file /path/to/local/directory
scp -r username@server_name:/mnt/folder_name /home/target_folder/ # -r表示递归拷贝文件夹

mv:移动文件、修改文件名称
mv file1 /home/pi
mv old_filename new_filename
将文件名称改为用日期表示的文件
mv old_filename new_filename

rsync:合并文件
rsync -av --remove-source-files 2/* 1/
-v是显示细节;--remove-source-files是删除原来目录,将2/里面的所有文件夹文件都移动合并到1/下面
使用rsync将远程服务器上的文件拷贝到本地工作站

rsync -avhPe ssh user_name@server_name:/mnt/server/uer_name/xxxx /home/name_user
# -a 表示以归档模式进行同步,保持文件属性和权限。
# -v  显示详细输出,展示正在复制的文件名。
# -z 使用压缩传输数据。
# -h 以人类可读的形式显示文件大小。
# -P 选项其实是 -progress 和 --partial 两个选项的合并,显示传输过程中的进度信息。允许部分文件传输。如果传输被中断,下次继续时会从中断处开始。
# -e ssh: 使用 SSH 协议作为远程 shell。

8、nohup:后台执行

常用于后台解压,后台wget下载。
例如通过wget下载文件,但是希望在关闭远程ssh窗口后,还能够继续下载,使用nohup即可解决该问题,nohup不止用于下载、解压文件也可后台。

nohup wget http://example.com/file1.zip > file1.log &
> file1.log是把标注输出存放到file1.log中,&是分隔符,用于分隔多个nohup
nohup /root/runoob.sh &在后台执行命令

./a_time_consuming_process &> aaa.log # 此后这个进程会在后台运行,并且stdoutstderr输出到 aaa.log
jobs可以看到哪些进程在后台运行。
fg把后台运行的进程调到前台,命令行不能再输入其他命令。
Ctrl+Z # 对于现在正在前台运行的命令,可以手动 Ctrl+Z 使它暂停
$ bg # 把刚刚暂停的进程,在后台继续运行。因此任务启动后Ctrl+Zbg,实际效果等同于直接用 ‘&’ 来后台运行。

9、wget

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo会从网上下载一个文件到默认保存地点
-O用于指定文件保存名称
wget -O wordpress.zip http://www.......
-c:断点续传,比如断网,再次从断点继续下载,最好都带上
wget -c -O v1.0-trainval05_blobs.tgz "https…

10、压缩、解压

tar
-c:建立压缩文件,产生新的包,即压缩
-x:解压文件

-v:显示所有过程
-z:有gzip属性的.gz或者.tgz
-j:有bz2属性的
-Z:带有compress属性的

-f:使用档案名字,这个参数是最后一个参数

tar -cf all.tar *.jpg 所有的.jpg文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -xf all.tar 这条命令是解出all.tar包中所有文件,-t是解开的意思。
tar -xzvf file.tgz 解压tgz文件
tar -xzvf file.tar.gz解压.tar.gz文件,和上面一样的文件

.rar用unrar解压,遇到了再补充
.zip用unzip解压
.gz用gzip解压
.bz2用bzip2解压
.z用uncompress解压

11、计算当前目录的文件个数tree -a

tree 列出文件夹的数型结构,-L设置深度。

12、du -sh * 统计当前目录所有文件夹占用空间

du会显示指定目录或文件所占磁盘空间。
选项:
-h:以KMG为单位显示,提高可读性
-s:仅显示指定的目录或文件的总大小,而不显示其子目录的大小
–max-depth=2:超过指定曾是的目录后,予以忽略
例如du -sh *返回:
412K all
592M asr
4.0K Desktop
8.7G Downloads
12K examples.desktop

13、ncdu

ncdu ~
du的升级版。统计文件空间大小后,可以深入下层文件夹。实际中可以用于清理空间时追查到底什么文件占用了大量空间。
只有一层深度。
使用`ncdu /folder查看某个目录下的空间分布
在统计完成的页面上,上下左右方向键浏览文件系统,按D建删除一个文件夹。

14、basename dirname

basename '/a/long/path/filename.ext'去掉文件路径,只保留文件名
dirname '/a/long/path/filename.ext'得到纯路径名

15、wc统计文件内容

wc temp.stdout
统计文件有多少行,多少个词以及多少字节
返回 56 56 576 temp.stdout
wc -l # 用于统计文本中行数的数量重点!!!

16、md5sum

md5sum temp.stdout得到文件的MD5编码,如果两个文件MD5编码相同,则一般认为这两个文件相同。

三、文件内容操作

1、cat、head、tail、more、less

cat查看文件内容,把文件内容打印在终端terminal
head查看文件的前面几行,
例如:head -n <file>
head -3 temp.out

tail查看后面几行

more分页查看文件内容,按空格翻一页,按回车向后滚动一行。

lessmore更强大,支持类似vi的快捷键,支持搜索,因此可以考虑都用less

2、cut从文本行中剪切部分内容

cut -f1,3 /tmp/1.tmp只显示文件的第1列和第3列,更推荐使用awk
如果使用-b参数,指定的列是按照字节来计算的:

cut -b1 /tmp/1.tmp
3
1
2

cut -d '/' -f1中-d’/'指定了字段的分隔符为/。-f1指定了要返回的字段是第一个字段
| cut -d ":" -f3这个是指定字段的分隔符为:,并取第3个片段。

3、find查找文件 路径 匹配条件 命令

find . -name iphone7第一个参数.表示在哪个目录查找;第二个参数iphone7表示查找的文件名,find ~/Music
文件名也可以带*进行匹配
find . -name '*book*'
find /path/to/search -name "filename"
-name 是按文件名匹配搜索
-type d: 仅查找目录 find /path -type d 这会查找指定路径下的所有目录
find /path -type f查找指定路径下的所有文件
find /path -type f -name '*.jpg' 查找指定路径下的所有名称包含.jpg的文件

4、diff对比两个文件的内容

$ cat file1
1
2
3
4
$ cat file2
2
A
4
5
# diff命令输出中的 < 指仅左边文件的内容, > 指仅右边文件的内容.
$ diff file1 file2
1d0 # 表示左边第1行被删除了,没有相应的行来替换他
< 1
# 以上两行输出, 代表 1 仅在左边文件中
3c2 # 表示左边的第3行被替换为右边的第2行
< 3
---
> A
# 以上4行输出, 代表左边文件中的 3 在右边文件中被替换成了 A
4a4 # 表示右边文件新增了1行,这一行对应到左边文件的第4行
> 5
# 以上两行输出, 代表 5 仅在右边文件中

5、sort对文件所有行按照字典排序

sort -r反向
sort -k2 youfile.txt是按照第二列进行排序,列以空格或者制表符TAB作为分隔。

6、uniq命令显示不相同的行。如果相同的行不相邻,都会保留。

uniq -c 是一个 Linux 命令,用于在相邻的行中去除重复的行,并且计算重复行出现的次数。
2 1
3 2
1 3
这表明数字 1 出现了两次,数字 2 出现了三次,数字 3 出现了一次。

7、grep查找文件中的特定字符串

grep [options] pattern [file...]
options选项 -R递归搜索下面的子文件/夹
pattern要搜索的模式或正则表达式
file要搜索的文件,如果未指定文件,则grep将从标准输入中读取内容。

grep '2019/03' 查找
grep Pu temp.stdout
grep -P '\d\d' games.txt # 正则表达式. 要求出现两个连续的数字
grep "^-" # 是一个用于过滤文件列表的Linux命令,用来过滤ls -l /命令的输出时,会只显示普通文件,而排除目录和其他类型的文件

8、sed对文件逐行修改

echo 'XXXXX连任XXXXXX | sed 's/连任/**/' # 用于分割匹配模式的’#'可以换成任意字符,习惯上用#和/比较多。
这个语句是将前面的连任替换为**,每行仅替换第一个。
sed可以基于正则表达式做非常复杂的文本替换。遇到的时候再详细展开。
sed 's/target_seq//' filename
sed 's/begin.*end//' filename 删除以begin开头end结尾的片段
sed 's/::/, /g'使用正则表达式g表示每行不止替换第一个,而是都替换
在第一行前/第一行上插入一段文本 1i\表示在第一行之前插入
`sed '1i\layer, name,count, average, total’ you_file.txt

9、awk

awk包含一个完整的脚本处理语言
awk '{ sum += $1; } END { print sum; }' /tmp/1.tmp输出第一列的和,END后面脚本在处理文件结束之后完成。
awk '{print $1, $3}' /tmp/1.tmp # 输出每行的第一列和第三列

10、shuf文件基于行随机shuffle

shuf a_file_name # 把整个文件做行shuffle
shuf -n 10 a_file_name # 从文件中随机抽取10行,当文件较大时,比shuf a_file_name | head -n 10显著快

11、rev把文件每行都做左右翻转

echo -e 'abs\ndef' | rev
返回:
sba
fed

12、tr字符替换

echo 'abcabc'|tr 'a' 'd' # 把文件中的a替换成d

四、linux软件命令

1、tmux 远程会话

tmux ls命令可以查看当前所有的 Tmux 会话
tmux new-session -t <session-name>新建一个指定名称的会话
按下快捷键Ctrl+B D将会话分离
tmux attach-session -t <session-name>重新连接到会话
tmux kill-session -t <session-name>杀死某个会话

tmux kill-session -t <session-name>
tmux switch命令用于切换会话。
tmux rename-session -t old_name session_new命令用于重命名会话。
如果已经处在需要重命名的会话当中。使用如下即可重命名:
tmux rename-session session_new重命名会话。

五、查看系统配置

1、df 查看磁盘容量分布

-h是每个根路径剩余空间,-l是用M和G和T来显示
df -h .
df -h
df -hl

2、htop、top

htop查看cpu以及内存情况
按F3来查询某个名称的进程,按F9来kill该进程。
PRI:代表进程的优先级,20是默认优先级,进程的优先级通常都在-20~19之间,越小的表示更高的优先级,较大的代表较低的优先级。
NI: 进程的Nice值(Nice Value),用于调整进程的优先级。
VIRT: 进程占用的虚拟内存大小(Virtual Memory Size)
RES: 进程使用的物理内存大小(Resident Memory Size)
SHR: 进程共享的内存大小(Shared Memory Size)
S: 进程的状态。可能的取值有 S (Sleeping, 休眠), R (Running, 运行), Z (Zombie, 僵尸进程) 等
CPU%: 进程的 CPU 使用率。
MEM%: 进程的内存使用率。
TIME+: 进程消耗的 CPU 时间
Command: 进程对应的命令或程序名称。
使用top命令也可以,但是更推荐htop

3、ps 提供各个进程状态的快照PID

ps aux # 得到当前所有进程的 用户, ID, CPU, 内存, binary等信息
ps aux | grep gedit | grep -v grep # 得到cmd中带"gedit"的进程 获取ps中带有gedit的进程,其中grep -v grep是过滤掉grep进程本身
ps auxf # 打印进程的树型结构
kill PID杀死某个进程

4、dstat

系统资源统计。可以查看每秒的CPU,磁盘读写,网络出入等信息。
usr: 用户空间程序使用 CPU 时间的百分比。最大
sys: 系统内核使用 CPU 时间的百分比。
idl: CPU 处于空闲状态的百分比。
wai: CPU 等待 I/O 操作完成的时间百分比
hiq: 高优先级队列的队列长度。
siq: 低优先级队列的队列长度。
dsk/total: 磁盘总体统计
read: 磁盘读取数据速率
writ: 磁盘写入数据速率
net/total: 网络总体统计
recv: 接收数据速率。
send: 发送数据速率。
paging: 分页操作统计
in: 从磁盘读取的数据量。
out: 写入到磁盘的数据量。
system: 系统相关统计
int: 每秒的中断次数。
csw: 每秒的上下文切换次数。

5、netstat

网络的详细信息。保护活动的互联网连接以及活动的UNIX域套字连接

6、杀死程序

先使用htop得到希望结束的进程的PID
pgrep -f "gedit"查找带有某个关键词的进程PID
然后kill PID
killall python结束掉本用户的所有python进程,不会影响别人
pkill _unittest 杀死名字中带有_unittest的所有进程

7、env查看系统所有内置变量

六、远程连接操作

1、ssh

在ubuntu系统中远程连接另一台服务器
ssh user_name@server_name,然后输入密码,即可开启远程终端窗口
ssh user_name@server_name 'ls /home/user_name' # 在server上运行后面的命令

2、退出远程:exit

七、用户操作

1、 修改自己用户的密码

root用户:

[root@localhost ~]# passwd ##修改root用户密码
Changing password for user root..
New password: ##输入新密码
Retype new password:  ##再次确认新密码
passwd: all authentication tokens updated successfully.

非root用户

[root@localhost ~]# passwd user_name##修改hadoop用户密码
Changing password for user user_name.
New password:  ##输入新密码
Retype new password:  ##再次确认新密码
passwd: all authentication tokens updated successfully.

八、nvidia

1、watch -n 1 nvidia-smi

每隔1s刷新一下nvidia-smi

2、nvidia-smi -L 列出显卡型号

九、常用工具命令

1、date

显示当前时间
date '+%Y%m%d_%H%M%S'格式胡输出

2、xargs

把从标准输入读入的文件的每一行/每若干行都执行相同的命令。
find all -type f | grep '2018/03' | xargs wc -l
搜索all文件夹下的所有文件,查找文件名中带有2018/03的并统计文件内容

3、jq可以用来解析json

echo '{"key1":"value1","key2":"value2"}' | jq '.key2'返回"value2"

4、parallel用于并行执行任务

parallel [options] command arguments
-j N 设置最大并行作业数为N
-a file 从文件中读取输入数据
-k 保持输出与输入顺序一致
:::后面的内容会被视为传递给并行处理命令块的参数。
parallel的command中可以传入参数。 0 代表并行处理的命令快本身,也就是单引号内的内容, {0}代表并行处理的命令快本身,也就是单引号内的内容, 0代表并行处理的命令快本身,也就是单引号内的内容,{1} ${2}等表示传入的参数。
0 指的是命令块本身, {0} 指的是命令块本身, 0指的是命令块本身,{1} 是内置计数器(如果有的话),${2} 对应于第一个传递的参数。
因此,当你需要在 parallel 命令的代码块中引用通过 ::: 传递的第一个参数时,应该使用 ${2} 而不是 ${1}。
在 parallel 命令的代码块中,单引号内的 “{}” 表示当前迭代的项目(也就是正在处理的输入项)。

5、convert图片操作

convert input.jpg output.png 图片格式转换
convert -flip input.jpg input-flip.jpg # 垂直翻转
convert -flop input.jpg input-flop.jpg # 水平翻转
拼接文件名

filename=$(basename "$input_name")
dirname=$(dirname "$input_name")
convert -flop "$input_name" "${output_folder}/${dirname}/${filename}"

十、bash命令

详见bash命令
需要注意的是:后面可能要在~/.bashrc文件中,加入一些命令
例如:
alias cp='cp -i' # alias是设置别名,这里是将一个命令关联到另一个带有选项的命令。使得每次执行cp命令时自动附加-i选项。该选项会提示用户确认是否覆盖已存在的文件

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值