Linux命令

登录Linux系统后,呈现在眼前的是这样一个界面:
fs@ehbio:~$
首先解释下出现的这几个字母和符号:
fs:用户名
ehbio:如果是登录的远程服务器,则为宿主机的名字
~:代表家目录, 在我们进入新的目录后,这个地方会跟着改变
$:用来指示普通用户输入命令的地方;对根用户来说一般是 #
 
Linux命令行格式:命令(空格)【选项】(空格)参数1 参数2
man 查询某一命令的具体参数,例如: man wget
1.创建、删除与复制文件、文件夹
mkdir 创建文件夹mkdir = make directory
-p选项(--parents):创建一个目录的时候,若其父目录不存在,则自动创建,而不是默认的报错。例如:
mkdir /home/a/b
若/home目录下不存在a目录,则会报错。
加上-p选项后,就会先建立a目录,然后在a目录下再建立b目录
 
批量创建文件
touch linux-{001..100}
# 或
touch linux-`seq 100`
 
rmdir 删除空目录
cd 目录切换(区别相对路径与绝对路径)cd = Change Directory
cd #切换到家目录
cd /home/usrs #切换到/home/usrs目录
cd .. #返回上级目录
cd ../.. #返回上上级目录
cp 复制文件cp = CoPy
cp old_file new_file
-r 拷贝文件夹时的参数,递归拷贝
mv 重命名或移动文件、文件夹mv = MoVe
mv file_old_name file_new_name #文件重命名
mv folder_old_neme folder_new_name #文件夹重命名
mv file new_folder/ #将文件移动到新目录
rm 删除文件、文件夹rm = ReMove
rm file #删除文件
rm -r folder #删除文件夹
删除一个目录和其中的子文件(子目录)
rm -rf 目录名
-f --force
 
rename 进行文件批量重命名
2.读写文件、文件夹
ls 显示文件夹中文件列表ls = LiSt
-l 长格式列出
-a 显示所有文件,包括隐藏文件和目录(所有以“.”为开始的文件和目录为隐藏文件)
-F 会在每个文件名后附上一个字符以阐明该文件的类型
-h 参数是更加人性化打印文件的尺寸大小,单位是G,M,K。否者显示文件的字节大小
ls -la #显示全部详细格式(列出当前目录中的所有文件和目录,包括隐藏文件和目录)
ll #显示文件详细信息(ll是“ls -lh"的别名)
cat 直接查看文件cat = CATenate
在这与<<END连用用于读入大段数据。输入cat <<END之后,回车,会看到终端出现一个大于号,大于号后面可以输入内容,再回车,继续输入内容,直到我们输入END,输入过程结束,我们输入的内容都显示在了屏幕上
cat <<END > test.fa
> >SOX2
> ACGTCGGCGGAGGGTGGSCGGGGGGGGAGAGGT
> SSSS
> >OCT4
> SLJLJLJL
> SLL
> >NANOG
> END
cat主要有三大功能:
# 一次显示整个文件
cat filename
# 从键盘创建一个文件,只能创建新文件,不能编辑已有文件
cat > filename  
# 将几个文件合并为一个文件
cat file1 file2 > file
 
more/less 翻页查看文件
q退出
上下箭头、空格翻页
两个有意思的命令,tac:文件翻转;rev:每列反转
cat <<END | tac
> first
> second
> third
> END
third
second
first
cat <<END | rev
> abcde
> xyz
> END
edcba
zyx
sed 编辑文件sed = Stream EDitor
sed ‘s/A/a/g’ file #将文件中所有的A替换为a
sed -n ‘3,6 p’ file #打印第3到6行
sed ‘5 q’ file #打印前5行
> 重定向,将终端结果输出给文件,会创建新文件或者覆盖原文件
sed ‘s/A/a/g’ file > new_file
>> 重定向,将终端结果输出给文件,内容会加在原文件内容尾部
sed ‘5 q’ file >> new_file
# sed =先输出行号,再输出每行的内容
$ echo "a b c" | tr ' ' '
' | sed =
1
a
2
b
3
c
# N: 表示读入下一行;sed命令每次只读一行,加上N之后就是缓存了第2行,所有的操作都针对第一行
# s: 替换;把换行符替换为	
ct@ehbio:~$ echo "a b c" | tr ' ' '
' | sed = | sed 'N;s/
/	/' 
1    a
2    b
3    c
# s: 替换;把读取的奇数行行首加一个'>'(偶数行相当于被隐藏了)
ct@ehbio:~$ echo "a b c" | tr ' ' '
' | sed = | sed 'N;s/^/>/'
>1
a
>2
b
>3
c
ln(link) 给文件建立快捷方式 (ln -s source_file target 创建软连接)
在建立软连接时,原文件要使用全路径。全路径指以/开头的路径。
建立软连接,是为了在不增加硬盘存储的情况下,简化文件访问方式的一个办法。把其它文件夹下的文件链接到当前目录,使用时只需要写文件的名字就可以了,不需要再写长串的目录了。
../:表示上一层目录;../../:表示上面两层目录
 
pwd (print working directory) 输出当前所在的目录
 
`为键盘Esc下第一个按键 (与家目录~符号同一个键),写在反引号内的命令会被运行,运行结果会放置在反引号所在的位置
# 建立软连接,把当前目录下的ehbio2.fa,链接到上一层目录的data下面
# 这是一个无效的软连接
ct@ehbio:~/ehbio_project$ ln -s ehbio2.fa ../data

# 在使用ls查看时,无效软连接的文件名下面是黑色的背景
ct@ehbio:~/ehbio_project$ ls -l ../data/
总用量 4
lrwxrwxrwx 1 ct ct   9 6月   9 17:55 ehbio2.fa -> ehbio2.fa
-rw-rw-r-- 1 ct ct 284 6月   8 14:48 first.fa

# 建立软连接时,原始文件一定使用全路径。全路径指以/开头的路径
ct@ehbio:~/ehbio_project$ ln -s /home/ct/ehbio_project/ehbio2.fa ../data
ln: 无法创建符号链接" ../data/ehbio2.fa" : 文件已存在
# 上面的错误信息是,已经存在这么一个链接了(虽然是无效的),但再建新的链接时还会提示
# 使用`-f`(force)强制覆盖已有的链接
# 通常为了简化写法,使用`pwd`代替全路径 ct@ehbio:~/ehbio_project$ ln -fs `pwd`/ehbio2.fa ../data # 再次查看时,就正常了。文件名下面没有了背景色,并且有个右箭头指向原始文件 # `lrwxrwxrwx`中的`l`表示软连接 ct@ehbio:~/ehbio_project$ ls -l ../data/ 总用量 4 lrwxrwxrwx 1 ct ct 32 6月 9 17:56 ehbio2.fa -> /home/ct/ehbio_project/ehbio2.fa -rw-rw-r-- 1 ct ct 284 6月 8 14:48 first.fa
3.文件信息提取
wc 查看文件行数、字数wc = Word Count
-c 统计字节数
-l 统计行数
-w 统计字数
wc -l file #查看文件行数
wc -w file #查看文件字数
head 查看文件前几行,默认为10行
head -n [N] file #查看文件前N行
tail 查看文件后几行
tail -n [N] file #查看文件后N行
cut 取出文件中的特定列或字符
cut -f [N] file #取出第N列
cut -d “;” -f [N] file #以”;”作为输入字段的分隔符(默认为制表符tab),取出第N列。如果一行没有指定的分隔符,整行都为第一列
sort 排序
sort -n file #按照数值排序(默认为按照ASCII码排序)
sort -k start[,stop] file #按照指定的字段进行排序;start指定开始处字段,stop指定结尾处字段,如果省略stop,默认到行尾
-r --reverse 倒序排序
-t --field-separator 设置字段分隔符
 
uniq 去重复,排序完才可以使用uniq = UNIQue
uniq -c #去重复并且计算重复频率
grep 文件中关键词搜索,返回行grep = global regular expression print
grep ‘CDS’ file #显示匹配上 ‘CDS’ 的所有行
grep -v ‘CDS’ file #显示没有匹配上’CDS’的所有行
grep -w ‘CDS’ file #必须与整个字匹配,如果另外有’CDSs’这样的字符串,就不会与之匹配
grep -x ‘CDS’ file #仅匹配整行,即只显示整行就是’CDS’的所有行
# 获取包含>的行的行数 (-c: count lines)
grep -c '>' ehbio.fa
# 4
| 管道,命令粘合剂,可将某命令的结果输出给另一个命令
head -n 20 file | tail -n 10
cut -f 3 file | sort | uniq -c
# tr是用于替换字符的,把空格替换为换行,文字就从一行变为了一列
$ echo "1 2 3" | tr ' ' '
'
1
2
3
4.查找文件
which 寻找可执行文件,显示路径
whereis 寻找特定文件
locate 按照关键词搜索文件
 
5. 查看、修改文件权限
chmod 修改文件的访问权限,分为数字模式和符号模式
数字模式:
chmod 755 file
chmod -R 755 folder #-R 修改该目录中所有文件的权限
三位数分别表示文件所有者u (user),用户组g (group),其他人o (other)
r表示可读,w表示可写,x表示可执行
用数字表示:可读r=1,可写w=2,可执行x=4
例如:777表示所有用户对文件具有读、写、执行权限;755表示文件所有者对文件具有可读、可写、可执行权限,其他用户只具有可读、可执行权限
符号模式:
chmod u+x,go=rx file #使file文件的所有者加上可执行权限,将用户组和其他人权限设置为可读和可执行
chmod o-x file #使其他人对file文件除去可执行权限
chmod -R a+x folder #使所有人对folder文件夹加上可执行权限
符号:+加入,-除去,=设置
 
6.文件、文件夹的打包,压缩与解压缩
gzip压缩文件
-c 将输出写到标准输出上,并保留原文件
-d或--decompress 将压缩文件解压
-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理
gzip file
gunzip 解压缩文件(.gz文件)
gunzip file.gz
tar 打包压缩文件、文件夹的产生与解压缩
tar -zcv -f folder.tar.gz folder #打包压缩文件夹(gzip格式)
tar -jcv -f folder.tar.gz folder #打包压缩文件夹(bzip2格式)
tar –ztv -f folder.tar.gz #查看压缩文件夹中的文件名(gzip格式)
tar –jtv -f folder.tar.gz #查看压缩文件夹中的文件名(bzip2格式)
tar -zxv –f folder.tar.gz #打开包并解压缩(gzip格式)
tar -jxv –f folder.tar.gz #打开包并解压缩(bzip2格式)
-z 压缩(gzip格式)
-j 压缩(bzip2格式)
-c 打包
-v 显示过程
-f 新建的压缩文件名
-t 查看压缩包里的文件名
-x 解压缩
 
zip解压缩
unzip yasuo.zip
 
7. 系统及进程
top 监视计算机使用情况
ctrl-c 终止当前进程
ctrl-z 暂停当前进程
bg 让暂停的进程在后台继续运行
fg 把后台运行的进程调到前台
ps 列出所有用户的进程
ps -e #列出所有的用户的进程
ps -f #列出详细的列表
kill 终止特定进程
kill PID_list #终止PID进程
date 显示系统的时间和日期,可用于为程序运行时长进行计时
 
8.文本编辑 Vi /Vim
3种工作模式: 编辑模式、 一般模式(Visual)、命令模式
模式切换方法:
编辑模式到一般模式: 按 Esc
一般模式到编辑模式: 输入 “i、a、o”等
一般模式到命令模式: 输入“:、/、?”
1. 一般模式下:
上下左右移动光标: 键盘方向键
屏幕向下移动半页: ctrl+d
屏幕向上移动半页: ctrl+u
移动到当前行的最前面字符处: ^ 或者 0
移动到当前行的最后面字符处: $
移动到文件的第一行: gg
移动到文件的最后一行: G
移动到文件的第 n 行: n
复制: y
复制: nyy (将当前行开始的 n 行内容复制到缓冲区)
粘贴: p
粘贴: p (将缓冲区的内容复制到光标所在处)
删除: d
删除: ndd (删除当前行及其后 n-1 行)
n 移动到下一个 string 字符串
N 移动到上一个 string 字符串
取消前一次操作: u
重做前一次操作: ctrl+r
查找字符串:
/string #向光标之下查找字符串 string
?string #向光标之上查找字符串 string
替换字符串:
:%s/string1/string2/
2. 命令模式下:
文件存盘: :w
存盘并退出: :wq
不存盘退出::q!
打开文件: :r file_name
新建文件: :e file_name
文件另存为 : :w file_name
移动到指定的行处: :n
鼠标定位: :set mouse=a
自动缩进: :set autoindent
显示行号: :set number
执行 shell 命令: :!command
3.编辑模式下:
可进行文本编辑。
 
多行删除
首先在命令模式下,输入“:set nu”显示行号;通过行号确定你要删除的行;命令输入“:32,65d”,回车键,32-65行就被删除了
 
在Linux命令行中, "." 可代表当前目录,".."可代表上一层目录
 
批量修改文件夹权限
先进入目录,举例为www
cd /www
然后递归设置文件夹(目录)权限为755
find -type d|xargs chmod 755
同样,把目录下的所有文件权限递归地改成644可以这样执行
find -type f|xargs chmod 644
原文地址:https://www.cnblogs.com/freescience/p/7271997.html