私はLinuxに非常に慣れていないので、すべての基本事項を習得しています。私がそうしている間に、OSが特定のファイルを異なる方法で処理すること、つまり、現在ログインしているユーザーに関連付けられているデスクトップファイルである場合にGUIデスクトップ環境でそれらを表示することによって、奇妙なことに気づきました。 OSは、現在のユーザーのデスクトップディレクトリへのパス変数をどのようにして知るのですか?ハッカーの娯楽のために、任意のディレクトリがGUIデスクトップに表示されるように変更できますか?
デスクトップディレクトリのデフォルトパスは、言語によって異なります。したがって、システムに存在する場合、$HOME/Desktop
よりも適切な推測をxdg-user-dirs
から取得できます。
$ xdg-user-dirs DESKTOP
/home/arnie97/桌面
xdg-user-dirs
ホームページ から別の方法もあります:
デスクトップとダウンロードディレクトリを見つける方法のシェルスクリプトの例を次に示します。
test -f ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs && source ${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs echo ${XDG_DESKTOP_DIR:-$HOME/Desktop} echo ${XDG_DOWNLOAD_DIR:-$HOME}
アプリケーションコードについては、さまざまなデスクトップがこれを統合し、これらのディレクトリを見つけるための素晴らしいAPIを備えていることが期待されます。
一般に、GNU/Linux(Unixなど)では、ユーザーのデスクトップディレクトリは~/Desktop
で指定できます。省略形~/
は、/path/to/home/username
などのホームディレクトリが何であっても展開されます。
ほとんどのshells(例:bash、ksh、cshなど)は~
をホームディレクトリに展開しますが、すべて(例:rc)には展開しないことを明確にする必要があります。チルダはリテラル文字であるため、ファイル~filename
を使用できます。したがって、シェルは、特定の条件下でチルドを拡張するように設計する必要があります。
ほとんどのディストリビューション(Linux(またはGNU/Linux)は、変更可能でない場合でも、善悪を問わず何もないからです)のパスは/home/<user name>/Desktop
コマンドラインから次のように移動できます:cd /home/<username>/Desktop
ファイルの表示は、引用符なしで「ls」コマンドを使用するのと同じくらい簡単です。
これはデスクトップ環境によって異なります。
ウィンドウマネージャーを使用している場合は、さまざまなツールを使用して、デスクトップにデータを表示できます。 PCmanFMデスクトップ 。
ほとんどのツールとデスクトップ環境は、xdg-user-dir DESKTOP設定を尊重します。
デスクトップディレクトリは、システムの言語によって異なります。他の人のために与えられたオプションに追加すると、ファイル〜/ .config/users-dirs.dirsを見つけることができます
あなたがコンテンツを読むことができる例:
cat ~/.config/users-dirs.dirs
私のマシンではこれを示しています:
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a Shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Escritorio"
XDG_DOWNLOAD_DIR="$HOME/Descargas"
XDG_TEMPLATES_DIR="$HOME/Plantillas"
XDG_PUBLICSHARE_DIR="$HOME/Público"
XDG_DOCUMENTS_DIR="$HOME/Documentos"
XDG_MUSIC_DIR="$HOME/Música"
XDG_PICTURES_DIR="$HOME/Imágenes"
XDG_VIDEOS_DIR="$HOME/Vídeos"
デスクトップディレクトリを確認する方法は次のとおりです: "$ HOME/Escritorio" $ HOMEはホームフォルダーを参照する環境変数です。実際には:
cd ~/Escritorio
# is the same
cd "$HOME/Escritorio"
プログラミングによってデスクトップディレクトリを取得することに興味がある場合は、ファイルを読み取ってコンテンツを解析できます。たとえば、デスクトップのディレクトリを取得するための私のJavaScriptコードを見てください。
async getLinuxDesktop(){
let file = Path.join(Os.homedir(), ".config", "user-dirs.dirs")
let data = {}
if(fs.existsSync(file)){
let content = await fs.readFileAsync(file,"utf8")
let lines = content.split(/\r?\n/g).filter((a)=> !a.startsWith("#"))
for(let line of lines){
let i = line.indexOf("=")
if(i >= 0){
try{
data[line.substring(0,i)] = JSON.parse(line.substring(i + 1))
}catch(e){}
}
}
}
if(data["XDG_DESKTOP_DIR"]){
let desktop = data["XDG_DESKTOP_DIR"]
desktop = desktop.replace(/\$([A-Za-z\-\_]+)|\$\{([^\{^\}]+)\}/g, (_, a, b) => (process.env[a || b] || ""))
return desktop
}else{
return Path.join(Os.homedir(),"Desktop")
}
}