记一些常用命令和用法,入门级的。
使用管理员身份来执行命令:
sudo 要执行的命令
切换为root用户:
sudo su
返回普通权限:
exit
显示当前用户信息:
id
修改当前用户密码:
passwd
在后台执行程序,只需在命令后加&,例如在后台打开火狐:
firefox &
查看后台程序:
jobs
继续运行后台编号为数字的程序:
bg 数字
把后台编号为数字的程序提到前台:
fg 数字
Ctrl+Z暂停程序,Ctrl+C结束程序。
Tab键可补全或查询命令和文件(夹)名,如输入unam按Tab,会自动不全uname,而输入una按Tab则会列出una开头的所有命令。因为unam开头的只有uname,而una开头的有uname和unalias两个命令。
清屏:
clear
上下键可查询执行过的命令。显示所有执行过的命令,可使用:
history #刪除第 204 條歷史命令 history -d 204 #刪除所有歷史記錄 history -c
查询之前使用过的命令,比较实用的是Ctrl+R,随便输入之前命令中的字符即可复用。想复用上一个命令的参数的话,输入命令后,按一下Esc,再按一下.就可以了。
编写脚本时常用到!来调用之前用过的命令。
#重复前一个命令 !! #重复前一个以字符开始的命令 !字符 #重复之前命令中包含字符的命令 !?字符 #重复历史记录中序号为数字的命令 !数字 #重复倒数第数字个的那个命令 !-数字
正則表達式非常厲害,有空時應該多寫一點。
#任意长度字符串 * #单个字符 ? #一定范围内数字,如0-9 [0-9] #一定范围内字符,如acd [acd] #一定范围之外的字符,如除了acd [^acd] #在當前目錄中,將所有文件中的 old_string #替換為 new_string grep -rl "old_string" . | xargs sed -i 's/old_string/new_string/g' # grep -rl: search recursively, and only print the files that contain “old_string” # xargs: take the output of the grep command and make it the input of the next command (ie, the sed command) # sed -i ‘s/old_string/new_string/g’: search and replace, within each file, old_string by new_string
文件類常用命令
#查看当前所在目录 print work directory pwd #创建空文件或更新文件的修改时间 touch FILE #创建目录,-p 可同時創建子目錄 mkdir DIR #刪除文件 rm -f File #遞歸刪除目錄以及其中文件 rm -rf FolderWithFoldersAndFiles #列出文件信息 ls -a 顯示所有文件,-l 顯示詳細信息,-R 遞歸顯示子目錄 FILEorDIR #查看文件類型 file FILE #cp 複製 source 目錄下的所有文件到 dest 目錄下 cp -a /source/. /dest/ #cp 複製 source 目錄到 dest 目錄下 cp -a /source /dest/ #ssh 遠程登錄 ssh -p 22 [email protected] #scp 复制本地文件到远程 scp -P 22 /tmp/localFile [email protected]:~/
mv 重命名
mv myfile mynewfilename #renames 'myfile' to 'mynewfilename'. mv myfile ~/myfile #moves 'myfile' from the current directory to user's home directory. mv myfile subdir/myfile #moves 'myfile' to 'subdir/myfile' relative to the current directory. mv myfile subdir #same as the previous command, filename is implied to be the same. mv myfile subdir/myfile2 #moves 'myfile' to 'subdir' named 'myfile2'. mv be.03 /mnt/bkup/bes #copies 'be.03' to the mounted volume 'bkup' the 'bes' directory, #then 'be.03' is removed. mv afile another /home/yourdir/yourfile mydir #moves multiple files to directory 'mydir'. mv /var/log/*z ~/logs #takes longer than expected if '/var' is on a different file system, #as it frequently is, since files will be copied & deleted.
用優盤製作Kali啓動盤:
sudo dd bs=512k if=/data/kali-linux-light-2.0-i386.iso of=/dev/sdc && sync
#curl通過socks5代理斷點續傳下載 curl -o '逃.mp4' -L -C - 'http://ft.shaman.eu.org/mp4/tv/2019/1_h.mp4' --socks5 127.0.0.1:8080 #如果想用遠端文件名,可將"-o '逃.mp4'"替換為"-O",這樣保存的就是1_h.mp4 #wget通過socks5代理斷點續傳下載 wget -c 'http://ft.shaman.eu.org/mp4/tv/2019/1_h.mp4' -O '1_h.mp4' #可以增加 -t 50 來指定最多重試 50 次 #wget爬取靜態網站 wget -r -p https://ft.shaman.eu.org #加入請求頭以及限速 wget -r -p -U Mozilla --wait=10 --limit-rate=128K https://ft.shaman.eu.org #curl測試網站速度 curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://ft.shaman.eu.org
#Verify checksums md5sum filename sha1sum filename sha256sum filename
本文更新於 2022/07/08。
在〈linux commands〉中有 13 則留言
cat 查看文件内容
more 分屏查看文件内容,查看时空格键下翻页,回车键下一行,q退出
head -n 7 a.txt 显示文件的前7行内容
tail -n 7 a.txt 显示文件的最后7行内容
tail -n 7 -f a.txt 动态显示文件的最后7行内容(当文件发生变动自动更新显示,默认是10行)
ln -s old new 创建软链接,不加-s可创建硬链接(两个文件同步内容,但删掉一个另一个还在)
chmod 可以用来修改文件和文件夹的权限
chmod -R 755 directory
r 4 查看文件内容/列出目录内容
w 2 修改文件内容/在目录中增加、删除文件
x 1 执行文件/进入目录
chown 可以用来修改文件和文件夹的所有者
chown owner file
chgrp 可以用来修改文件和文件夹的所有者
chown group file
umask 查看新文件默认权限,其值为777的掩码,如得到0002,后三位那777减,得到775,即默认权限。修改时也是用掩码,如
umask 0022
注意一点是新建的文件都是没有执行权限的,即使umask设置了。
useradd username 添加用户
查找命令所在位置可以用which(同时显示别名)和whereis(同时显示帮助信息位置)
查找文件用find,格式为find [搜索路径] [关键词]如
find /etc -name abc* 查找etc目录下文件名开头为abc的文件,?可代替单个字符。
find /etc -size +100 查找etc目录中文件大小大于100×块block大小的文件。如块大小为4k,那么就是查找400K以上的文件。
find /home -user lisa 查找home中lisa为所有者的文件。
ctime, atime,mtime,cmin,amin,mmin 这六个find的选项是时间过滤,time单位是天,min单位是分钟。c是change,表示文件属性(权限,所有者等)被修改过,a是access,表示被读取过,m是modify,表示文件内容被修改过。
find /home -mmin -120 查找home中1小时内内容被修改过的文件。
find /home -mmin -120 -a -type f 查找home中1小时内内容被修改过的文件(只找文件,不找d文件夹和l软链接)。-a是and,-o是or。
find /etc -name init* -a -type f -exec ls -l {} ; 后面前面find找到的条目会储存在{}里,然或exec后的命令依此以{}里的条目为参数执行。格式即-exec 命令 {} ;。还有一个和-exec类似的选项是-ok,它会询问每一个条目是否执行。
find . -inum 42 -exec rm {} ; 找到i节点为42的文件并将其删除。
find . -name ‘*.js’ -exec grep -i ‘string to search for’ {} \; -print 在當前文件夾及其子文件夾中,搜索包含string to search for字符串的js文件。
locate filename 从文件数据库中查找文件速度快能耗小,但是新文件由于数据库未及时可能找不到,updatedb可更新文件数据库。
grep 查找文件中匹配的行,如
grep tftp /etc/services
遞歸查找當前文件夾下包含 Freedom 的文件
grep -iRl “Freedom” ./
-i – 忽略大小寫
-R – 遞歸查找子文件夾
-l – 顯示文件名而不是查找到的文件內容
合併多個文本文件到一個文件
cat 2017* >> a.log
查看log中同一字段出現的次數,其中$3是定位到的計數字段
grep “IP:” a.log | awk ‘{print $3}’ | sort | uniq -c | sort -nr | more
man 查看命令帮助,显示方式和more类似,info也可以查看帮助
man cp 查看cp命令的帮助
man 5 passwd 查看passwd命令的配置文件帮助
获取索引的简短帮助信息可以用whatis和apropos(和man -k类似),makewhatis可以更新帮助信息数据库
help 获取shall内置命令的帮助信息
file filename file命令可以判断文件类型。
gzip filename 用gzip压缩文件。gzip只能压缩文件不能压缩文件夹。gzip压缩或解压后会删除原文件。解压gz文件可以用
gunzip fileneme.gz
或gzip -d fileneme.gz
。tar -zcvf dirname.tar.gz dirname
用tar来打包并压缩文件夹為gz包。tar xjf file.tar.bz2
用tar来解壓bz2包。tar -zcvf video.tar.gz --exclude=video/42.mp4 --exclude=video/Death_Silence.mp4 video
打包并压缩video文件夹,且排除两个指定的mp4文件。tar -zxvf dirname.tar.gz
用tar来解压并解包压缩文件夹,tar gz xz都可以。默认解压到压缩路径,网上下载的包解压到当前目录。z压缩或解压,c打包,x解包,v显示进度,f指定压缩包名。tar zxvf dirname.tar.gz -C /home/destination
解压到指定文件夹zip filename.zip filename
用zip既可压缩文件也可压缩文件夹(压缩文件夹加-r选项),并且不会删除原文件。zip -P password filename.zip file
生成帶密碼的zip文件。zip -r -s 50m zip_filename.zip files_to_zip_1 files_to_zip_2
把文件壓縮成多個小文件。解壓的時候會自動讀取其他文件。unzip filename.zip
用unzip解压zip压缩包。加-d /home/destination解压到指定文件夹。如果解壓的中文文件名亂碼可以嘗試
unzip -O cp936 filename.zip
如果要覆蓋目標文件夾而不要詢問,加參數 -o
bzip2 -k filename
用bzip2压缩文件,只能压缩文件但压缩比很高,加上-k选项可保留原文件。bunzip2 -k filename.bz2
用bunzip2解压文件并保留压缩包。ifconfig 查看网络配置信息,IP、MAC等。
ifconfig eth0 192.168.1.7 临时修改IP地址,重启失效。
一些bash技巧
Ctrl+l 清屏。
Ctrl+u 删除所在行光标前面的字符。
history 列出之前使用过的命令。!num !加history列表中的序号可执行那条命令。上下方向看最近命令更方便。
Tab键可补全命令或文件名。
alias 显示已定义的命令别名
alias copy=cp 定义一个copy的别名。
alias drm=”rm -rf” 定一个直接删除目录的别名,带选项时要加引号。
unalias copy 删除copy这个别名。
>和>> 输出重定向,< 输入重定向。 ls -l /tmp > tmp 将/tmp文件夹下的文件列表输出至tmp文件中,若tmp不存在则创建,若有内容则覆盖。
date >> tmp 将date信息追加到tmp文件尾部。
wall < tmp 广播tmp中的内容。 cp -R /usr /backup/usr.bak 2> /bak.err 对/usr目录备份,如发生错误则将错误信息输出至bak.err。
ls -l /etc | grep init | wc -l 首先查看/etc下文件的详情,然后将结果传给grep过滤出包含init的行,最后用wc -l数一下有多少行。
command1 ; command2 ; command3 三条命令依此执行。
command1 && command2 1执行成功2才会执行,否则2不执行。
command1 || command2 1执行成功2不会执行,否则2执行。
ls -l `which touch` 列出touch的详细信息,其中命令替换符`位于1左边,并不是单引号。
删除旧内核基本上一个200M的样子
dpkg –get-selections|grep linux 查看安装的内核
uname -a 查看当前内核
sudo apt-get remove linux-image-3.5.0-48-generic 删除不要的内核
sudo apt-get remove linux-headers-3.5.0-48 删除不要内核的头
sudo update-grub (选做)更新下grub
修改hostname:
sudo nano /etc/hostname
查找并杀死进程
ps -e | grep python
sudo kill 1234
查看端口是否被佔用
netstat -apn | grep 端口號
查看pid為2813的程序信息
ps -aux | grep 2813
查看iptables狀態
service iptables status
編輯iptables配置文件
nano /etc/sysconfig/iptables
打開8081端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8081 -j ACCEPT
重啟iptables
service iptables restart
查看本地48000-49000间的开放端口
nmap -p 48000-49000 127.0.0.1
screen 可以在後台執行任務,即使終端被關閉。
安裝:
dnf install screen
新建 screen:
screen -S mytask
或
screen
現在可以執行需要在後台跑的長時任務。
保留 screen 並退回到原來的終端(detach):
先按一次
ctrl+a
,再按一次d
列出所有後臺的 screen:
screen -ls
會顯示如:
There are screens on:
188140.mytask (Detached)
187614.pts-5.fred (Detached)
恢復(resume)一個 screen:
screen -r mytask
或
screen -r 187614
退出一個 screen:
按
ctrl+d
或執行
exit
恢復(Detach)一個 Attached 狀態的 screen(screen 意外中段時使用):
screen -D 187614
強制關閉一個 screen(首先回到 attached 狀態):
screen -X -S session_name quit
或
screen -X -S session_id quit
查看滾動過去的輸出(向上滾動)
先按一次
ctrl+a
進入命令模式,再按一次[
(即左方括號)進入複製模式。在複製模式里,可以使用方向鍵、翻頁鍵以及
ctrl+b
移動光標。結束複製模式按
q