跳至主要內容

常用命令

微信公众号:储凡About 20 min

常用命令

cd

Change Directory的缩写,用来变换工作目录的命令

#使用绝对路径切换到 test 目录
cd /root/test/

#使用相对路径切换到 test 目录
cd ./test/

# 表示回到自己的家目录,亦即是 /root 这个目录
cd ~

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
cd ..

ls

列出目录及文件名

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
ls -a
ls -d
ls -l
# 将目录下的所有文件列出来(含属性与隐藏档)
ls -al

pwd

Print Working Directory 的缩写,显示目前所在目录的命令

  • -P :显示出确实的路径,而非使用链接 (link) 路径。
pwd
pwd -P

mkdir

创建新的目录

  • -m :直接配置文件的权限!
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
## 创建test目录
mkdir test

## 创建test目录,并手动配置权限,例如: rwx--x--x 711
mkdir -m 711 test

## 递归创建,避免路径不存在
mkdir -p test

rmdir

删除空的目录

  • -p :从该目录起,一次删除多级空目录
## 删除test/目录下的空目录
rmdir test/

## 删除多级空目录
rmdir -p test/aaa/bbb

cp

拷贝文件和目录

  • -a:相当于 -pdr 的意思

  • -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;

  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

  • -i若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

  • -l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;

  • -p连同文件的属性一起复制过去,而非使用默认属性(备份常用);

  • -r递归持续复制,用于目录的复制行为;(常用)

  • -s:复制成为符号链接档 (symbolic link),亦即『捷径』文件;

  • -u:若 destination 比 source 旧才升级 destination !

cp ~/test /tmp/test

cp -i ~/test /tmp/test

mv

移动文件与目录,或修改名称

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
## 基本格式
mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory


mv sourceDir targetDir
mv -f sourceDir targetDir




rm

移除文件或目录

  • -f : 强制删除,就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除!最常用在目录的删除了

取出文件前面几行

  • -n :后面接数字,代表显示几行的意思
head -n -10 running.log

tail

取出文件后面几行,一般用来查看日志

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的文件名,按[ctrl]-c结束
tail [-n number] 文件 

## 查看10行日志
tail -n -10 running.log

cat

由第一行开始显示文件内容,对于大文件谨慎使用

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符
## 查看
cat config.js

## 将多个文件合成一个
cat file1.txt file2.txt >newFile.txt

## 创建新的编辑文件
cat >file.txt 

# 此处必须使用两个小于号,EOF表示结束标记,既读到EOF就结束
cat >test.txt<<EOF 
> hello world
> linux centos
> EOF

## EOF必须成对出现,也可以使用其他的成对标签替换,结尾的EOF必须定格编写

## 覆盖重定向需要以END开始,以END结束
cat > 1.txt <<END
> 1
>
> END

# 再执行一次
cat > 1.txt <<END
> 2
> END

# 查看1.txt讲第一次是写入信息清空了
cat 1.txt
2

echo

# 直接输出文本
echo hello 
# 解压使用引号将内容括起来,单引号,双引号均可
echo 'hello'
#使用-e可以识别特殊字符
echo -e "hello\tworld" 

echo可以配合重定向符将内容输入到文件

  • > :为重定向符号,表示清除原文件里面的所有内容,然后将内容追加到文件的末尾
  • >> :为追加重定向符号,即追加内容到文件的尾部(文件的最后一行)。
## 文本追加到文件中
echo "hello world" >>hello.txt #文件会被自动创建

## test.sh内容
#!/bin/sh
read name 
echo "$name It is a test"

## 执行
sh test.sh
OK                     #标准输入
OK It is a test        #输出

## 换行
echo -e "OK! \n" # -e 开启转义
echo "It is a test"

## 不换行
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"

## 显示命令执行结果  执行函数date
echo `date`

grep

参考: https://www.cnblogs.com/chentiao/p/16626503.htmlopen in new window

  • -i : 搜索时候忽略大小写
  • -n 列出所有的匹配行,显示行号
  • -v 反向选择
  • -c 只输出匹配行的数量
  • -l 只列出符合匹配的文件名,不列出具体的匹配行
  • -h 查询多文件时不显示文件名
  • -r 递归搜索
  • -q 禁止输出任何结果,已退出状态表示搜索是否成功
  • --color=auto 将找到的关键字加上颜色显示
  • -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
  • -B, --before-context=NUM 打印以文本起始的NUM 行
  • -A, --after-context=NUM 打印以文本结尾的NUM 行

## 删除掉空行,"^$" 表示空行
grep -v "^$" test.txt

## 过滤不包含sbin关键词,并输出行号
grep -n -v "sbin" test.txt

sed

sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。 ed是操作、过滤和转换文本内容的强大工具。sed的常用功能包含对文件实现快速增删改查(增加、删 除、修改、查询),其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)和取行(取出指定 的行)。

## 格式
sed [选项] [sed内置命令字符] [输入文件]



awk

Awk是一种用于高级文本处理的通用脚本语言,其主要用作报告和分析工具,与大多数其他程序性编程语言不同,Awk是数据驱动的,也就是说需要定义一组针对输入文本要执行的操作,然后其获取输入数据,对其进行转换,然后将结果发送到标准输出。

awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ... ]

参数

  • -F fs: 将输入字段分隔符设置为正则表达式fs
  • -v var=value: 在执行awk程序之前,将值赋值给变量var
  • 'prog': awk程序。
  • -f progfile: 指定文件progfile,其中包含要执行的awk程序。
  • file ...: 由指定的awk程序处理的文件。

示例文件example.txt文件内容如下:

Bucks Milwaukee    60 22 0.732 
Raptors Toronto    55 24 0.707 
76ers Philadelphia 51 31 0.622
Celtics Boston     33 33 0.598
Pacers Indiana     30 34 0.585

输出example.txt的第3个字段。

awk '{ print $3 }' example.txt
# 60
# 55
# 51
# 33
# 30

使用正则表达式匹配出以R开头的组。

awk '/^R/ { print $1,$2,$3,$4 }' example.txt
# Raptors Toronto 55 24

使用BEGIN以及END输出在处理记录之前与之后执行的操作,处理过程为输出第二个字段包含Tor的组。

awk 'BEGIN { print "Start Processing" }; $2 ~ /Tor/ {print $1,$2,$3,$4 }; END { print "End Processing" }' example.txt
# Start Processing
# Raptors Toronto 55 24
# End Processing